DBA Data[Home] [Help]

PACKAGE BODY: APPS.PY_ZA_TX_01032006

Source


1 PACKAGE BODY py_za_tx_01032006 AS
2 /* $Header: pyzat007.pkb 120.1.12000000.2 2007/06/29 06:39:22 rpahune noship $ */
3 /* Copyright (c) Oracle Corporation 2005. All rights reserved. */
4 /*
5    PRODUCT
6       Oracle Payroll - ZA Localisation Tax Module
7 
8    NAME
9       py_za_tx_01032006.pkb
10 
11    DESCRIPTION
12       This is the main tax package as used in the ZA Localisation Tax Module.
13       The public functions in this package are not for client use and is
14       only referenced by the tax formulae in the Application.
15 
16    PUBLIC FUNCTIONS
17       Descriptions in package header
18       ZaTxOvr_01032006
19       ZaTxGlb_01032006
20       ZaTxDbi_01032006
21       ZaTxBal1_01032006
22       ZaTxBal2_01032006
23       ZaTxBal3_01032006
24       ZaTx_01032006
25 
26    PRIVATE FUNCTIONS
27       <none>
28 
29 
30    PRIVATE PROCEDURES
31       WrtHrTrc
32          Wrapper procedure for py_za_tx_utl_01032006.WriteHrTrace
33       NetTxbIncCalc
34          Procedure to calculate a Net Taxable Income figure used
35          to properly calculate the Skills Development Levy
36       LteCalc
37          A main tax calculation.
38          For a complete description see the tax module design document.
39       SeaCalc
40          A main tax calculation.
41          For a complete description see the tax module design document.
42       SitCalc
43          A main tax calculation.
44          For a complete description see the tax module design document.
45       DirCalc
46          A main tax calculation.
47          For a complete description see the tax module design document.
48       BasCalc
49          A main tax calculation.
50          For a complete description see the tax module design document.
51       CalCalc
52          A main tax calculation.
53          For a complete description see the tax module design document.
54       YtdCalc
55          A main tax calculation.
56          For a complete description see the tax module design document.
57       NorCalc
58          A main tax calculation.
59          For a complete description see the tax module design document.
60 
61    NOTES
62       .
63 
64    MODIFICATION HISTORY
65    Person     Date       Version        Bug     Comments
66    ---------- ---------- -------------- ------- --------------------------------
67    J.N. Louw  20/04/2007 115.5          5965050 TX_ON_LS_PTD
68    A. Mahanty 16/05/2006 115.4          5148830 References to the dimension
69                                                 _rtr_asg_tax_ptd added in
70                                                 ZATX6_01032006.  Norcalc is used
71                                                 even when the asg has retro
72                                                 results.
73    A. Mahanty 01/03/2006 115.3          4346955 References to the dimension
74                                                 _non_rtr_asg_tax_ptd removed in
75                                                 ZATX6_01032005. SitCalc is used
76                                                 when the assignment has retropay
77                                                 results.
78    R V Pahune 28/02/2006 115.2          5059281 for public off allw taxation
79                                                 according to tax table.
80    J.N. Louw  06/12/2005 115.1           4861242 For detail history see
81                                                 py_za_tx_utl_01032005
82 */
83 
84 -------------------------------------------------------------------------------
85 --                               PACKAGE BODY                                --
86 -------------------------------------------------------------------------------
87 
88 -------------------------------------------------------------------------------
89 -- WrtHrTrc
90 -- Wrapper for py_za_tx_utl_01032006.WriteHrTrace
91 -------------------------------------------------------------------------------
92 PROCEDURE WrtHrTrc(
93    p_Buf IN VARCHAR2
94    )
95 AS
96 
97 BEGIN
98    py_za_tx_utl_01032006.WriteHrTrace(p_Buf);
99 END WrtHrTrc;
100 
101 -------------------------------------------------------------------------------
102 -- NetTxbIncCalc
103 -- Calculates the net taxable income value for the calendar month
104 -------------------------------------------------------------------------------
105 PROCEDURE NetTxbIncCalc AS
106 
107    -- Variable Declaration
108    nti_CurMthStrtDte        DATE;
109    nti_CurMthEndDte         DATE;
110    nti_SitFactor            NUMBER;
111    nti_PerTypInc            BALANCE DEFAULT 0;
112    nti_PerTypErn            BALANCE DEFAULT 0;
113    nti_AnnTypErn            BALANCE DEFAULT 0;
114    nti_PerPenFnd            BALANCE DEFAULT 0;
115    nti_PerRfiCon            BALANCE DEFAULT 0;
116    nti_PerPenFndMax         BALANCE DEFAULT 0;
117    nti_PerPenFndAbm         BALANCE DEFAULT 0;
118    nti_AnnPenFnd            BALANCE DEFAULT 0;
119    nti_AnnRfiCon            BALANCE DEFAULT 0;
120    nti_AnnPenFndMax         BALANCE DEFAULT 0;
121    nti_AnnPenFndAbm         BALANCE DEFAULT 0;
122    nti_PerArrPenFnd         BALANCE DEFAULT 0;
123    nti_PerArrPenFndAbm      BALANCE DEFAULT 0;
124    nti_PerRetAnu            BALANCE DEFAULT 0;
125    nti_PerNrfiCon           BALANCE DEFAULT 0;
126    nti_PerRetAnuMax         BALANCE DEFAULT 0;
127    nti_PerRetAnuAbm         BALANCE DEFAULT 0;
128    nti_PerArrRetAnu         BALANCE DEFAULT 0;
129    nti_PerArrRetAnuAbm      BALANCE DEFAULT 0;
130    nti_AnnArrPenFnd         BALANCE DEFAULT 0;
131    nti_AnnArrPenFndAbm      BALANCE DEFAULT 0;
132    nti_AnnRetAnu            BALANCE DEFAULT 0;
133    nti_AnnNrfiCon           BALANCE DEFAULT 0;
134    nti_AnnRetAnuMax         BALANCE DEFAULT 0;
135    nti_AnnRetAnuAbm         BALANCE DEFAULT 0;
136    nti_AnnArrRetAnu         BALANCE DEFAULT 0;
137    nti_AnnArrRetAnuAbm      BALANCE DEFAULT 0;
138    nti_PerMedAidAbm         BALANCE DEFAULT 0;
139    nti_AnnMedAidAbm         BALANCE DEFAULT 0;
140    nti_PerTotAbm            BALANCE DEFAULT 0;
141    nti_AnnTotAbm            BALANCE DEFAULT 0;
142    nti_TxbPerTypInc         BALANCE DEFAULT 0;
143    nti_TxbAnnTypInc         BALANCE DEFAULT 0;
144    nti_NetPerTxbInc         BALANCE DEFAULT 0;
145    nti_NetAnnTxbInc         BALANCE DEFAULT 0;
146    l_65Year                 DATE;
147    -- Income Protection Policy
148    nti_PerIncProPolAbm      BALANCE DEFAULT 0;
149    nti_AnnIncProPolAbm      BALANCE DEFAULT 0;
150 
151 BEGIN
152    hr_utility.set_location('py_za_tx_01032006.NetTxbIncCalc',1);
153 -- Calculate the Current Effective Calendar Month to Date Start Date
154 --
155    SELECT trunc(dbi_SES_DTE,'Month')
156      INTO nti_CurMthStrtDte
157      FROM dual;
158    hr_utility.set_location('py_za_tx_01032006.NetTxbIncCalc',2);
159 
160 -- Calculate the Current Effective Calendar Month to Date End Date
161 --
162    SELECT last_day(dbi_SES_DTE)
163      INTO nti_CurMthEndDte
164      FROM dual;
165    hr_utility.set_location('py_za_tx_01032006.NetTxbIncCalc',3);
166 
167 -- Calculate Site Factor
168 --
169    -- Based on the number of days in the calendar year over days in the calendar month
170    nti_SitFactor := dbi_ZA_DYS_IN_YR / (nti_CurMthEndDte - nti_CurMthStrtDte + 1);
171 
172    hr_utility.set_location('py_za_tx_01032006.NetTxbIncCalc',4);
173 
174    WrtHrTrc('nti_CurMthEndDte:  '||to_char(nti_CurMthEndDte,'DD/MM/YYYY'));
175    WrtHrTrc('nti_CurMthStrtDte: '||to_char(nti_CurMthStrtDte,'DD/MM/YYYY'));
176 
177 -- Calculate the Taxable Portion of the Not-Fully Taxable Income Balances
178 --
179    bal_TOT_TXB_TA_CMTD  := bal_TOT_TXB_TA_CMTD * glb_ZA_TRV_ALL_TX_PRC / 100;
180 
181    bal_TOT_TXB_PO_CMTD  := bal_TOT_TXB_PO_CMTD * glb_ZA_PBL_TX_PRC / 100;
182 
183 -- Sum Period Type Income Calendar Month to Date Balances
184 --
185    nti_PerTypInc := bal_TOT_SKL_INC_CMTD;
186 -- Annualise by the Site Factor the Period Type Income
187 --
188    nti_PerTypErn := nti_PerTypInc * nti_SitFactor;
189 -- Sum Annual Type Income Calendar Month to Date Balances
190 --
191    nti_AnnTypErn := nti_PerTypErn + bal_TOT_SKL_ANN_INC_CMTD;
192 
193 -----------------------------
194 -- Calculate Abatement Values
195 -----------------------------
196    -- Calculate the assignments 65 Year Date
197    l_65Year := add_months(py_za_tx_01032006.dbi_PER_DTE_OF_BRTH,780);
198 
199    -------------------------
200    -- Pension Fund Abatement
201    -------------------------
202       ---------------------
203       -- Period Calculation
204       ---------------------
205          -- Annualise Period Pension Fund Contribution
206          nti_PerPenFnd := bal_CUR_PF_CMTD * nti_SitFactor;
207          -- Annualise Period Rfiable Contributions
208          nti_PerRfiCon := bal_TOT_RFI_INC_CMTD * nti_SitFactor;
209       ---------------------
210       -- Annual Calculation
211       ---------------------
212          -- Annual Pension Fund Contribution
213          nti_AnnPenFnd := nti_PerPenFnd + bal_ANN_PF_CMTD;
214          -- Annual Rfi Contribution
215          nti_AnnRfiCon := nti_PerRfiCon + bal_TOT_RFI_AN_INC_CMTD;
216 
217       --------------------------------
218       -- Arrear Pension Fund Abatement
219       --------------------------------
220          hr_utility.set_location('py_za_tx_01032006.NetTxbIncCalc',19);
221          -------------
222          -- Excess ITD
223          -------------
224          nti_PerArrPenFnd := bal_EXC_ARR_PEN_ITD;
225          ------------------------------------
226          -- Current/Annual based on frequency
227          ------------------------------------
228          nti_PerArrPenFnd :=
229             nti_PerArrPenFnd + ( bal_ARR_PF_CMTD * nti_SitFactor);
230           ---------
231           -- Annual
232           ---------
233           nti_AnnArrPenFnd := nti_PerArrPenFnd + bal_ANN_ARR_PF_CMTD;
234 
235       -------------------------------
236       -- Retirement Annuity Abatement
237       -------------------------------
238          hr_utility.set_location('py_za_tx_01032006.NetTxbIncCalc',20);
239          -------------
240          -- Current RA
241          -------------
242          -- Calculate RA Contribution
243          nti_PerRetAnu := bal_CUR_RA_CMTD * nti_SitFactor;
244          ---------------------
245          -- Current NRFI Contr
246          ---------------------
247          IF bal_CUR_PF_CMTD + bal_ANN_PF_CMTD = 0 THEN
248             hr_utility.set_location('py_za_tx_01032006.NetTxbIncCalc',21);
249             nti_PerNrfiCon := (
250                                 bal_TOT_RFI_INC_CMTD + bal_TOT_NRFI_INC_CMTD
251                               )
252                               * nti_SitFactor;
253          ELSE
254             hr_utility.set_location('py_za_tx_01032006.NetTxbIncCalc',22);
255             nti_PerNrfiCon := bal_TOT_NRFI_INC_CMTD * nti_SitFactor;
256          END IF;
257          ------------
258          -- Annual RA
259          ------------
260          nti_AnnRetAnu := nti_PerRetAnu + bal_ANN_RA_CMTD;
261 
262          IF bal_CUR_PF_CMTD + bal_ANN_PF_CMTD = 0 THEN
263             hr_utility.set_location('py_za_tx_01032006.NetTxbIncCalc',23);
264 
265             nti_AnnNrfiCon := nti_PerNrfiCon
266                             + bal_TOT_NRFI_AN_INC_CMTD
267                             + bal_TOT_RFI_AN_INC_CMTD;
268          ELSE
269             hr_utility.set_location('py_za_tx_01032006.NetTxbIncCalc',24);
270             nti_AnnNrfiCon := nti_PerNrfiCon + bal_TOT_NRFI_AN_INC_CMTD;
271          END IF;
272       --------------------------------------
273       -- Arrear Retirement Annuity Abatement
274       --------------------------------------
275          hr_utility.set_location('py_za_tx_01032006.NetTxbIncCalc',25);
276          -------------
277          -- Excess ITD
278          -------------
279          nti_PerArrRetAnu := bal_EXC_ARR_RA_ITD;
280          ------------------------------------
281          -- Current/Annual based on frequency
282          ------------------------------------
283          nti_PerArrRetAnu :=   nti_PerArrRetAnu
284                            + ( bal_ARR_RA_CMTD
285                              * nti_SitFactor
286                              );
287          ---------
288          -- Annual
289          ---------
290          nti_AnnArrRetAnu := nti_PerArrRetAnu
291                            + nti_AnnArrRetAnu
292                            + bal_ANN_ARR_RA_CMTD;
293 
294    ------------------------
295    -- Medical Aid Abatement
296    ------------------------
297       -- If the person is not yet 65 this tax year
298       IF l_65Year > dbi_ZA_ASG_TX_YR_END THEN
299          ----------
300          -- Current
301          ----------
302          nti_PerMedAidAbm :=
303             bal_MED_CNTRB_ABM_CMTD
304           * nti_SitFactor;
305          ---------
306          -- Annual
307          ---------
308          nti_AnnMedAidAbm :=
309             nti_PerMedAidAbm
310           + bal_ANN_MED_CNTRB_ABM_CMTD;
311       ELSE
312       -- if the person is over 65
313          ----------
314          -- Current
315          ----------
316          nti_PerMedAidAbm :=
317             bal_MED_CONTR_CMTD
318           * nti_SitFactor;
319          ---------
320          -- Annual
321          ---------
322          nti_AnnMedAidAbm := nti_PerMedAidAbm;
323       END IF;
324 
325    ---------------------------
326    -- Income Protection Policy
327    ---------------------------
328       ---------------------
329       -- Period Calculation
330       ---------------------
331       -- Annualise Income Protection Policy Contributions
332       nti_PerIncProPolAbm := bal_EE_INC_PRO_POL_CMTD * nti_SitFactor;
333 
334       hr_utility.set_location('py_za_tx_01032006.NetTxbIncCalc',26);
335 
336       ---------------------
337       -- Annual Calculation
338       ---------------------
339       -- Annual Income Protection Policy Contributions
340       nti_AnnIncProPolAbm :=
341          nti_PerIncProPolAbm
342        + bal_ANN_EE_INC_PRO_POL_CMTD;
343 
344    ----------------------------------------------------------------------------
345    --                        CALCULATE THE ABATEMENTS                        --
346    ----------------------------------------------------------------------------
347    -------------------------
348    -- Pension Fund Abatement
349    -------------------------
350       ---------------------
351       -- Period Calculation
352       ---------------------
353       -- Calculate the Pension Fund Maximum
354       nti_PerPenFndMax := GREATEST( glb_ZA_PF_AN_MX_ABT
355                                   , glb_ZA_PF_MX_PRC / 100 * nti_PerRfiCon
356                                   );
357       -- Calculate Period Pension Fund Abatement
358       nti_PerPenFndAbm := LEAST(nti_PerPenFnd, nti_PerPenFndMax);
359       ---------------------
360       -- Annual Calculation
361       ---------------------
362       -- Calculate the Pension Fund Maximum
363       nti_AnnPenFndMax := GREATEST( glb_ZA_PF_AN_MX_ABT
364                                   , glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiCon
365                                   );
366 
367       -- Calculate Annual Pension Fund Abatement
368       nti_AnnPenFndAbm := LEAST(nti_AnnPenFnd, nti_AnnPenFndMax);
369    --------------------------------
370    -- Arrear Pension Fund Abatement
371    --------------------------------
372       ---------------------
373       -- Period Calculation
374       ---------------------
375       nti_PerArrPenFndAbm := LEAST(nti_PerArrPenFnd, glb_ZA_ARR_PF_AN_MX_ABT);
376       ---------------------
377       -- Annual Calculation
378       ---------------------
379       nti_AnnArrPenFndAbm := LEAST(nti_AnnArrPenFnd, glb_ZA_ARR_PF_AN_MX_ABT);
380    ---------------------------------
381    -- Retirement Annnnuity Abatement
382    ---------------------------------
383       ---------------------
384       -- Period Calculation
385       ---------------------
386       -- Calculate the Retirement Annuity Maximum
390                                   );
387       nti_PerRetAnuMax := GREATEST( glb_ZA_PF_AN_MX_ABT
388                                   , glb_ZA_RA_AN_MX_ABT - nti_PerPenFndAbm
389                                   , glb_ZA_RA_MX_PRC / 100 * nti_PerNrfiCon
391 
392       -- Calculate Retirement Annuity Abatement
393       nti_PerRetAnuAbm := LEAST(nti_PerRetAnu, nti_PerRetAnuMax);
394       ---------------------
395       -- Annual Calculation
396       ---------------------
397       nti_AnnRetAnuMax := GREATEST( glb_ZA_PF_AN_MX_ABT
398                                   , glb_ZA_RA_AN_MX_ABT - nti_AnnPenFndAbm
399                                   , glb_ZA_RA_MX_PRC / 100 * nti_AnnNrfiCon
400                                   );
401 
402       -- Calculate Retirement Annuity Abatement
403       nti_AnnRetAnuAbm := LEAST(nti_AnnRetAnu, nti_AnnRetAnuMax);
404    --------------------------------------
405    -- Arrear Retirement Annuity Abatement
406    --------------------------------------
407       ---------------------
408       -- Period Calculation
409       ---------------------
410       nti_PerArrRetAnuAbm := LEAST(nti_PerArrRetAnu, glb_ZA_ARR_RA_AN_MX_ABT);
411       ---------------------
412       -- Annual Calculation
413       ---------------------
414       nti_AnnArrRetAnuAbm := LEAST(nti_AnnArrRetAnu, glb_ZA_ARR_RA_AN_MX_ABT);
415 
416       hr_utility.set_location('py_za_tx_01032006.NetTxbIncCalc',27);
417 
418    -------------------
419    -- Total Abatements
420    -------------------
421       -- Period Total Abatement
422       nti_PerTotAbm := ( nti_PerPenFndAbm
423                        + nti_PerArrPenFndAbm
424                        + nti_PerRetAnuAbm
425                        + nti_PerArrRetAnuAbm
426                        + nti_PerMedAidAbm
427                        + nti_PerIncProPolAbm
428                        );
429       -- Annual Total Abatements
430       nti_AnnTotAbm := ( nti_AnnPenFndAbm
431                        + nti_AnnArrPenFndAbm
432                        + nti_AnnRetAnuAbm
433                        + nti_AnnArrRetAnuAbm
434                        + nti_AnnMedAidAbm
435                        + nti_AnnIncProPolAbm
436                        );
437 
438 -- Calculate New O Figures
439 --
440    nti_TxbPerTypInc := nti_PerTypErn - nti_PerTotAbm;
441    nti_TxbAnnTypInc := nti_AnnTypErn - nti_AnnTotAbm;
442 
443 -- Deannualise Period O Figure
444 --
445    nti_NetPerTxbInc := nti_TxbPerTypInc / nti_SitFactor;
446 -- Calculate the Net Taxable Annual Type Income
447 --
448    nti_NetAnnTxbInc := nti_TxbAnnTypInc - nti_TxbPerTypInc;
449 
450 -- Calculate New Net Taxable Income Balance
451 --
452    trc_NtiUpdFig := (nti_NetPerTxbInc + nti_NetAnnTxbInc) - bal_NET_TXB_INC_CMTD;
453 
454    WrtHrTrc('nti_SitFactor:            '||to_char(nti_SitFactor));
455    WrtHrTrc('nti_PerTypErn:            '||to_char(nti_PerTypErn));
456    WrtHrTrc('nti_AnnTypErn:            '||to_char(nti_AnnTypErn));
457    WrtHrTrc('nti_NetPerTxbInc:         '||to_char(nti_NetPerTxbInc));
458    WrtHrTrc('nti_NetAnnTxbInc:         '||to_char(nti_NetAnnTxbInc));
459    WrtHrTrc('bal_NET_TXB_INC_CMTD:     '||to_char(bal_NET_TXB_INC_CMTD));
460    WrtHrTrc('trc_NtiUpdFig:            '||to_char(trc_NtiUpdFig));
461    WrtHrTrc(' ');
462    WrtHrTrc('nti_PerTotAbm:            '||to_char(nti_PerTotAbm));
463    WrtHrTrc('nti_PerTotAbm consists of:');
464    WrtHrTrc('nti_PerPenFndAbm:         '||to_char(nti_PerPenFndAbm));
465    WrtHrTrc('nti_PerArrPenFndAbm:      '||to_char(nti_PerArrPenFndAbm));
466    WrtHrTrc('nti_PerRetAnuAbm:         '||to_char(nti_PerRetAnuAbm));
467    WrtHrTrc('nti_PerArrRetAnuAbm:      '||to_char(nti_PerArrRetAnuAbm));
468    WrtHrTrc('nti_PerMedAidAbm:         '||to_char(nti_PerMedAidAbm));
469    WrtHrTrc('nti_PerIncProPolAbm:      '||to_char(nti_PerIncProPolAbm));
470    WrtHrTrc(' ');
471    WrtHrTrc('nti_AnnTotAbm:            '||to_char(nti_AnnTotAbm));
472    WrtHrTrc('nti_AnnTotAbm consists of:');
473    WrtHrTrc('nti_AnnPenFndAbm:         '||to_char(nti_AnnPenFndAbm));
474    WrtHrTrc('nti_AnnArrPenFndAbm:      '||to_char(nti_AnnArrPenFndAbm));
475    WrtHrTrc('nti_AnnRetAnuAbm:         '||to_char(nti_AnnRetAnuAbm));
476    WrtHrTrc('nti_AnnArrRetAnuAbm:      '||to_char(nti_AnnArrRetAnuAbm));
477    WrtHrTrc('nti_AnnMedAidAbm:         '||to_char(nti_AnnMedAidAbm));
478    WrtHrTrc('nti_AnnIncProPolAbm:      '||to_char(nti_AnnIncProPolAbm));
479 
480 
481 EXCEPTION
482    WHEN OTHERS THEN
483       IF xpt_Msg = 'No Error' THEN
484          xpt_Msg := 'NetTxbIncCalc: '||TO_CHAR(SQLCODE);
485       END IF;
486        RAISE xpt_E;
487 END NetTxbIncCalc;
488 
489 -------------------------------------------------------------------------------
490 -- Tax Override Function
491 -------------------------------------------------------------------------------
492 FUNCTION ZaTxOvr_01032006(
493     p_OvrTyp IN VARCHAR2
494    ,p_TxOnNI IN NUMBER
495    ,p_TxOnAP IN NUMBER
496    ,p_TxPrc  IN NUMBER
497    )RETURN NUMBER
498 AS
499    l_Dum NUMBER := 1;
500 BEGIN
501    -- Set the Override Global
502    trc_OvrTxCalc := TRUE;
503 
504    -- Set Override Values
505    trc_OvrTyp  := p_OvrTyp;
506 
507    IF p_OvrTyp = 'V' THEN
508       trc_LibFpNI := p_TxOnNI;
509       trc_LibFpAP := p_TxOnAP;
510    ELSIF p_OvrTyp = 'P' THEN
511       trc_OvrPrc  := p_TxPrc;
512    END IF;
513    RETURN l_Dum;
514 
515 EXCEPTION
519 END ZaTxOvr_01032006;
516    WHEN OTHERS THEN
517       hr_utility.set_message(801, 'ZaTxOvr_01032006: '||TO_CHAR(SQLCODE));
518       hr_utility.raise_error;
520 
521 -------------------------------------------------------------------------------
522 --                    Main Tax Calculation Procedures                        --
523 -------------------------------------------------------------------------------
524 -------------------------------------------------------------------------------
525 -- LteCalc
526 -------------------------------------------------------------------------------
527 PROCEDURE LteCalc AS
528 
529    -- Variables
530    l_EndDate             DATE;
531    l_StrtDte             DATE;
532    l_65Year              DATE;
533    l_ZA_TX_YR_END        DATE;
534    l_ZA_ADL_TX_RBT       NUMBER;
535    l_ZA_PRI_TX_RBT       NUMBER;
536    l_ZA_PRI_TX_THRSHLD   NUMBER;
537    l_ZA_SC_TX_THRSHLD    NUMBER;
538 
539    l_Sl                  BOOLEAN;
540    l_Np                  BALANCE DEFAULT 0;
541 
542 
543    -- Private Functions
544    --
545       FUNCTION getBalVal
546          (p_BalNme IN pay_balance_types.balance_name%TYPE
547          ,p_EffDte   IN DATE
548          ) RETURN NUMBER
549       AS
550          -- Variables
551          l_BalVal BALANCE;
552          l_BalTypId pay_balance_types.balance_type_id%TYPE;
553          l_dimension pay_balance_dimensions.dimension_name%TYPE ;
554 
555       BEGIN
556          hr_utility.set_location('py_za_tx_01032006.LteCalc',1);
557          -- Get the Balance Type ID
558          SELECT pbt.balance_type_id
559            INTO l_BalTypId
560            FROM pay_balance_types pbt
561           WHERE pbt.balance_name = p_BalNme
562            AND  pbt.legislation_code = 'ZA';
563 
564          hr_utility.set_location('py_za_tx_01032006.LteCalc',2);
565 
566          -- Get the Balance Value
567          l_dimension := '_ASG_TAX_YTD';
568          l_BalVal := py_za_bal.get_balance_value
569                                       ( con_ASG_ID
570                                       , l_BalTypId
571                                       , l_dimension
572                                       , p_EffDte
573                                       );
574          RETURN l_BalVal;
575       END getBalVal;
576 
577       FUNCTION getBalVal2
578          (p_BalNme IN pay_balance_types.balance_name%TYPE
579          ,p_EffDte   IN DATE
580          ) RETURN NUMBER
581       AS
582          -- Variables
583          l_BalVal BALANCE;
584          l_BalTypId pay_balance_types.balance_type_id%TYPE;
585          l_dimension pay_balance_dimensions.dimension_name%TYPE ;
586       BEGIN
587          hr_utility.set_location('py_za_tx_01032006.LteCalc',3);
588          -- Get the Balance Type ID
589          SELECT pbt.balance_type_id
590            INTO l_BalTypId
591            FROM pay_balance_types pbt
592           WHERE pbt.balance_name = p_BalNme;
593 
594          hr_utility.set_location('py_za_tx_01032006.LteCalc',4);
595 
596          -- Get the Balance Value
597          l_dimension := '_ASG_ITD';
598          l_BalVal := py_za_bal.get_balance_value
599                                        ( con_ASG_ID
600                                        , l_BalTypId
601                                        , l_dimension
602                                        , p_EffDte
603                                        );
604          RETURN l_BalVal;
605       END getBalVal2;
606 
607 BEGIN
608    hr_utility.set_location('py_za_tx_01032006.LteCalc',5);
609    -- Does the Assignment have an OFigure?
610    --
611    IF bal_TOT_TXB_INC_ITD <= 0 THEN
612       hr_utility.set_location('py_za_tx_01032006.LteCalc',6);
613       -- Calculate the 'O' Figure
614       -- Set the Global
615       trc_CalTyp := 'PstCalc';
616       -- Set the Site Factor to the value of the previous tax year
617       l_StrtDte := dbi_ZA_ASG_TX_YR_STRT;
618       l_EndDate := dbi_ZA_ASG_TX_YR_END;
619       hr_utility.set_location('py_za_tx_01032006.LteCalc',8);
620 
621       trc_SitFactor := (l_EndDate - l_StrtDte + 1) / py_za_tx_utl_01032006.DaysWorked;
622       hr_utility.set_location('py_za_tx_01032006.LteCalc',9);
623 
624       -- Populate Local Balance Variables
625       -- The PTD Globals are used as dummy to store the previous tax year's
626       -- Balance values
627 
628       bal_ANN_ARR_PF_PTD           := getBalVal('Annual Arrear Pension Fund',l_EndDate);
629       bal_ANN_ARR_RA_PTD           := getBalVal('Annual Arrear Retirement Annuity',l_EndDate);
630       bal_ANN_PF_PTD               := getBalVal('Annual Pension Fund',l_EndDate);
631       bal_ANN_RA_PTD               := getBalVal('Annual Retirement Annuity',l_EndDate);
632       bal_ARR_PF_PTD               := getBalVal('Arrear Pension Fund',l_EndDate);
633       bal_ARR_RA_PTD               := getBalVal('Arrear Retirement Annuity',l_EndDate);
634       bal_BP_PTD                   := getBalVal('Bonus Provision',l_EndDate);
635       bal_CUR_PF_PTD               := getBalVal('Current Pension Fund',l_EndDate);
636       bal_CUR_RA_PTD               := getBalVal('Current Retirement Annuity',l_EndDate);
637       bal_EXC_ARR_PEN_PTD          := getBalVal2('Excess Arrear Pension',l_EndDate);
638       bal_EXC_ARR_RA_PTD           := getBalVal2('Excess Arrear Retirement Annuity',l_EndDate);
639       bal_MED_CONTR_PTD            := getBalVal('Medical Aid Contribution',l_EndDate);
640       bal_MED_CNTRB_ABM_PTD        := getBalVal('Medical Contributions Abatement',l_EndDate);
644       bal_TOT_NRFI_INC_PTD         := getBalVal('Total NRFIable Income',l_EndDate);
641       bal_ANN_MED_CNTRB_ABM_PTD    := getBalVal('Annual Medical Contributions Abatement',l_EndDate);
642       bal_TOT_INC_PTD              := getBalVal('Total Income',l_EndDate);
643       bal_TOT_NRFI_AN_INC_PTD      := getBalVal('Total NRFIable Annual Income',l_EndDate);
645       bal_TOT_RFI_AN_INC_PTD       := getBalVal('Total RFIable Annual Income',l_EndDate);
646       bal_TOT_RFI_INC_PTD          := getBalVal('Total RFIable Income',l_EndDate);
647       bal_TOT_TXB_AB_PTD           := getBalVal('ZATax Total Taxable Annual Bonus',l_EndDate);
648       bal_TOT_TXB_AP_PTD           := getBalVal('ZATax Total Taxable Annual Payments',l_EndDate);
649       bal_TOT_TXB_FB_PTD           := getBalVal('ZATax Total Taxable Fringe Benefits',l_EndDate);
650       bal_TOT_TXB_NI_PTD           := getBalVal('ZATax Total Taxable Normal Income',l_EndDate);
651       bal_TOT_TXB_TA_PTD           := getBalVal('ZATax Total Taxable Travel Allowance',l_EndDate);
652       bal_TOT_TXB_PO_PTD           := getBalVal('ZATax Total Taxable Public Office Allowance',l_EndDate);
653 
654       hr_utility.set_location('py_za_tx_01032006.LteCalc',10);
655 
656       -- Update Globals with Correct Taxable Values
657       py_za_tx_utl_01032006.TrvAll;
658 
659       bal_TOT_TXB_PO_PTD  := bal_TOT_TXB_PO_PTD
660                        * py_za_tx_utl_01032006.GlbVal('ZA_PUBL_TAX_PERC',l_EndDate)
661                        / 100;
662       hr_utility.set_location('py_za_tx_01032006.LteCalc',11);
663 
664       -- Rebates
665       py_za_tx_utl_01032006.SetRebates;
666       -- Abatements
667       py_za_tx_utl_01032006.Abatements;
668 
669       hr_utility.set_location('py_za_tx_01032006.LteCalc',12);
670 
671       -- Base Earnings
672       --
673        trc_BseErn :=
674          ( ( bal_TOT_TXB_NI_PTD
675            + bal_TOT_TXB_FB_PTD
676            + bal_TOT_TXB_TA_PTD
677            + bal_TOT_TXB_PO_PTD
678            + bal_BP_PTD
679          )* trc_SitFactor
680          )
681          + bal_TOT_TXB_AB_PTD
682          + bal_TOT_TXB_AP_PTD;
683       -- Taxable Base Income
684       trc_TxbBseInc := trc_BseErn - trc_AnnTotAbm;
685       -- Threshold Check
686       IF trc_TxbBseInc >= trc_Threshold THEN
687          hr_utility.set_location('py_za_tx_01032006.LteCalc',13);
688       -- Tax Liability
689          trc_TotLibBse := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbBseInc);
690       ELSE
691          hr_utility.set_location('py_za_tx_01032006.LteCalc',14);
692          trc_TotLibBse := 0;
693       END IF;
694 
695       -- Populate the O Figure
696       trc_OUpdFig := trc_TxbBseInc - bal_TOT_TXB_INC_ITD;
697 
698       -- Base Income
699       WrtHrTrc('trc_BseErn:    '||to_char(trc_BseErn));
700       WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
701       WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
702 
703    ELSE
704       hr_utility.set_location('py_za_tx_01032006.LteCalc',15);
705       -- Use the 'O' Figure as Base
706       -- Set the Global
707       trc_CalTyp := 'LteCalc';
708 
709       -- Get the assignment's previous tax year's
710       -- threshold and rebate figures
711       -- Employee Tax Year Start and End Dates
712       l_EndDate  := dbi_ZA_ASG_TX_YR_END;
713 
714       hr_utility.set_location('py_za_tx_01032006.LteCalc',16);
715 
716       -- Global Values
717       l_ZA_TX_YR_END        := l_EndDate;
718       l_ZA_ADL_TX_RBT       := py_za_tx_utl_01032006.GlbVal('ZA_ADDITIONAL_TAX_REBATE',l_EndDate);
719       l_ZA_PRI_TX_RBT       := py_za_tx_utl_01032006.GlbVal('ZA_PRIMARY_TAX_REBATE',l_EndDate);
720       l_ZA_PRI_TX_THRSHLD   := py_za_tx_utl_01032006.GlbVal('ZA_PRIM_TAX_THRESHOLD',l_EndDate);
721       l_ZA_SC_TX_THRSHLD    := py_za_tx_utl_01032006.GlbVal('ZA_SEC_TAX_THRESHOLD',l_EndDate);
722 
723       -- Calculate the assignments 65 Year Date
724       l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
725 
726       IF l_65Year <= l_ZA_TX_YR_END THEN
727          hr_utility.set_location('py_za_tx_01032006.LteCalc',17);
728          -- give the extra abatement
729          trc_Rebate    := l_ZA_PRI_TX_RBT + l_ZA_ADL_TX_RBT;
730          trc_Threshold := l_ZA_SC_TX_THRSHLD;
731       ELSE
732          hr_utility.set_location('py_za_tx_01032006.LteCalc',18);
733          -- not eligable for extra abatement
734          trc_Rebate    := l_ZA_PRI_TX_RBT;
735          trc_Threshold := l_ZA_PRI_TX_THRSHLD;
736       END IF;
737 
738 
739    -- Base Earnings
740    --
741       -- Take the OFigure as Taxable Base Income
742       trc_TxbBseInc := bal_TOT_TXB_INC_ITD;
743       -- Threshold Check
744       IF trc_TxbBseInc >= trc_Threshold THEN
745          hr_utility.set_location('py_za_tx_01032006.LteCalc',19);
746          -- Tax Liability
747          trc_TotLibBse := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbBseInc);
748       ELSE
749          hr_utility.set_location('py_za_tx_01032006.LteCalc',20);
750          trc_TotLibBse := 0;
751       END IF;
752 
753       -- Base Income
754       WrtHrTrc('trc_BseErn:    '||to_char(trc_BseErn));
755       WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
756       WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
757    END IF;
758 
759    -- Override the Global
760    trc_CalTyp := 'LteCalc';
761    -- Set the SitFactor back to 1
762    trc_SitFactor := 1;
763 
764    hr_utility.set_location('py_za_tx_01032006.LteCalc',21);
765 
766    -- Rebates
767    py_za_tx_utl_01032006.SetRebates;
768    -- Abatements
772 
769    py_za_tx_utl_01032006.Abatements;
770 
771    hr_utility.set_location('py_za_tx_01032006.LteCalc',22);
773    -- Update Global Balance Values with correct TAXABLE values
774    py_za_tx_utl_01032006.TrvAll;
775 
776    bal_TOT_TXB_PO_YTD  := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
777 
778 -- Normal Income
779 --
780    -- Ytd Normal Income
781    trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
782    -- Skip the calculation if there is No Income
783    IF trc_NorIncYtd <> 0 THEN
784       hr_utility.set_location('py_za_tx_01032006.LteCalc',23);
785       -- Normal Earnings
786       trc_NorErn := trc_NorIncYtd + trc_TxbBseInc;
787       -- Taxable Normal Income
788       trc_TxbNorInc := trc_NorErn - trc_PerTotAbm;
789       -- Threshold Check
790       IF trc_TxbNorInc >= trc_Threshold THEN
791          hr_utility.set_location('py_za_tx_01032006.LteCalc',24);
792          -- Tax Liability
793          trc_TotLibNI := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbNorInc);
794          trc_LibFyNI  := trc_TotLibNI - least(trc_TotLibNI,trc_TotLibBse);
795          trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibBse);
796          trc_LibFpNI  := trc_LibFyNI - bal_TX_ON_NI_YTD;
797       ELSE
798          hr_utility.set_location('py_za_tx_01032006.LteCalc',25);
799          -- Set Cascade Figures and Refund
800          trc_TotLibNI   := 0;
801          trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
802          trc_LibFpNIOvr := TRUE;
803       END IF;
804    ELSE
805       hr_utility.set_location('py_za_tx_01032006.LteCalc',26);
806       -- Set Cascade Figures and Refund
807       trc_NorErn     := trc_TxbBseInc;
808       trc_TxbNorInc  := 0;
809       trc_TotLibNI   := trc_TotLibBse;
810       trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
811       trc_LibFpNIOvr := TRUE;
812    END IF;
813 
814 -- Fringe Benefits
815 --
816    trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
817    -- Skip the calculation if there is No Income
818    IF trc_FrnBenYtd <> 0 THEN
819       hr_utility.set_location('py_za_tx_01032006.LteCalc',27);
820       -- Fringe Benefit Earnings
821       trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
822       -- Taxable Fringe Income
823       trc_TxbFrnInc := trc_FrnBenErn - trc_PerTotAbm;
824       -- Threshold Check
825       IF trc_TxbFrnInc >= trc_Threshold THEN
826          hr_utility.set_location('py_za_tx_01032006.LteCalc',28);
827          -- Tax Liability
828          trc_TotLibFB := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbFrnInc);
829          trc_LibFyFB  := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
830          trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
831          trc_LibFpFB  := trc_LibFyFB - bal_TX_ON_FB_YTD;
832       ElSE
833          hr_utility.set_location('py_za_tx_01032006.LteCalc',29);
834          -- Set Cascade Figures and Refund
835          trc_TotLibFB   := trc_TotLibNI;
836          trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
837          trc_LibFpFBOvr := TRUE;
838       END IF;
839    ELSE
840       hr_utility.set_location('py_za_tx_01032006.LteCalc',30);
841       -- Set Cascade Figures and Refund
842       trc_FrnBenErn  := trc_NorErn;
843       trc_TxbFrnInc  := trc_TxbNorInc;
844       trc_TotLibFB   := trc_TotLibNI;
845       trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
846       trc_LibFpFBOvr := TRUE;
847    END IF;
848 
849 -- Travel Allowance
850 --
851    -- Ytd Travel Allowance
852    trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
853    -- Skip the calculation if there is No Income
854    IF trc_TrvAllYtd <> 0 THEN
855       hr_utility.set_location('py_za_tx_01032006.LteCalc',31);
856       -- Travel Earnings
857       trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
858       -- Taxable Travel Income
859       trc_TxbTrvInc := trc_TrvAllErn - trc_PerTotAbm;
860       -- Threshold Check
861       IF trc_TxbTrvInc >= trc_Threshold THEN
862          hr_utility.set_location('py_za_tx_01032006.LteCalc',32);
863          -- Tax Liability
864          trc_TotLibTA := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbTrvInc);
865          trc_LibFyTA  := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
866          trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
867          trc_LibFpTA  := trc_LibFyTA - bal_TX_ON_TA_YTD;
868       ELSE
869          hr_utility.set_location('py_za_tx_01032006.LteCalc',33);
870          -- Set Cascade Figures and Refund
871          trc_TotLibTA   := trc_TotLibFB;
872          trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
873          trc_LibFpTAOvr := TRUE;
874       END IF;
875    ELSE
876       hr_utility.set_location('py_za_tx_01032006.LteCalc',34);
877       -- Set Cascade Figures and Refund
878       trc_TrvAllErn  := trc_FrnBenErn;
879       trc_TxbTrvInc  := trc_TxbFrnInc;
880       trc_TotLibTA   := trc_TotLibFB;
881       trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
882       trc_LibFpTAOvr := TRUE;
883    END IF;
884 
885 -- Annual Bonus
886 --
887    -- Ytd Annual Bonus
888    trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
889    -- Skip the calculation if there is No Income
890    IF trc_AnnBonYtd <> 0 THEN
891       hr_utility.set_location('py_za_tx_01032006.LteCalc',35);
892       -- Annual Bonus Earnings
893       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
894       -- Taxable Annual Bonus Income
895       trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
896       -- Threshold Check
900          trc_TotLibAB := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbAnnBonInc);
897       IF trc_TxbAnnBonInc >= trc_Threshold THEN
898          hr_utility.set_location('py_za_tx_01032006.LteCalc',36);
899          -- Tax Liability
901          trc_LibFyAB  := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
902          trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
903          trc_LibFpAB  := trc_LibFyAB - bal_TX_ON_AB_YTD;
904       ELSE
905          hr_utility.set_location('py_za_tx_01032006.LteCalc',39);
906          -- Set Cascade Figures and Refund
907          trc_TotLibAB   := trc_TotLibTA;
908          trc_LibFpAB    := -1 * bal_TX_ON_AB_YTD;
909          trc_LibFpABOvr := TRUE;
910       END IF;
911    ELSE
912       hr_utility.set_location('py_za_tx_01032006.LteCalc',40);
913       -- Set Cascade Figures and Refund
914       trc_AnnBonErn    := trc_TrvAllErn;
915       trc_TxbAnnBonInc := trc_TxbTrvInc;
916       trc_TotLibAB     := trc_TotLibTA;
917       trc_LibFpAB      := -1 * bal_TX_ON_AB_YTD;
918       trc_LibFpABOvr   := TRUE;
919    END IF;
920 
921 -- Annual Payments
922 --
923    -- Ytd Annual Payments
924    trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
925    -- Skip the calculation if there is No Income
926    IF trc_AnnPymYtd <> 0 THEN
927       hr_utility.set_location('py_za_tx_01032006.LteCalc',41);
928       -- Annual Payments Earnings
929       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
930       -- Taxable Annual Payments Income
931       trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
932       -- Threshold Check
933       IF trc_TxbAnnPymInc >= trc_Threshold THEN
934          hr_utility.set_location('py_za_tx_01032006.LteCalc',42);
935          -- Tax Liability
936          trc_TotLibAP := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbAnnPymInc);
937          trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
938          trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
939          trc_LibFpAP  := trc_LibFyAP - bal_TX_ON_AP_YTD;
940       ELSE
941          hr_utility.set_location('py_za_tx_01032006.LteCalc',45);
942          -- Set Cascade Figures and Refund
943          trc_TotLibAP   := trc_TotLibAB;
944          trc_LibFpAP    := -1 * bal_TX_ON_AP_YTD;
945          trc_LibFpAPOvr := TRUE;
946       END IF;
947    ELSE
948       hr_utility.set_location('py_za_tx_01032006.LteCalc',46);
949       -- Set Cascade Figures and Refund
950       trc_AnnPymErn    := trc_AnnBonErn;
951       trc_TxbAnnPymInc := trc_TxbAnnBonInc;
952       trc_TotLibAP     := trc_TotLibAB;
953       trc_LibFpAP      := -1 * bal_TX_ON_AP_YTD;
954       trc_LibFpAPOvr   := TRUE;
955    END IF;
956 
957 -- Public Office Allowance
958 --
959    -- Ytd Public Office Allowance
960    trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
961    -- Skip the calculation if there is No Income
962    IF trc_PblOffYtd <> 0 THEN
963       hr_utility.set_location('py_za_tx_01032006.LteCalc',47);
964       -- Public Office Allowance Earnings
965       trc_PblOffErn := trc_PblOffYtd + trc_AnnPymErn;
966       -- Taxable Public Office Allowance
967       trc_TxbPblOffInc := trc_PblOffErn - trc_AnnTotAbm;
968       -- Threshold Check
969       IF trc_TxbPblOffInc >= trc_Threshold THEN
970          hr_utility.set_location('py_za_tx_01032006.LteCalc',48);
971          -- Tax Liability
972          trc_TotLibPO := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbPblOffInc);
973          trc_LibFyPO  := trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP);
974          trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
975          trc_LibFpPO  := trc_LibFyPO - bal_TX_ON_PO_YTD;
976       ElSE
977          hr_utility.set_location('py_za_tx_01032006.LteCalc',49);
978          -- Set Cascade Figures and Refund
979          trc_TotLibPO   := trc_TotLibPO;
980          trc_LibFpPO    := -1 * bal_TX_ON_PO_YTD;
981          trc_LibFpPOOvr := TRUE;
982       END IF;
983    ELSE
984       hr_utility.set_location('py_za_tx_01032006.LteCalc',50);
985       -- Set Cascade Figures and Refund
986       trc_PblOffErn     := trc_AnnPymErn;
987       trc_TxbPblOffInc  := trc_TxbAnnPymInc;
988       trc_TotLibPO      := trc_TotLibAP;
989       trc_LibFpPO       := -1 * bal_TX_ON_PO_YTD;
990       trc_LibFpPOOvr    := TRUE;
991    END IF;
992 
993 -- Net Pay Validation
994 --
995    -- Net Pay of the Employee
996    l_Np := bal_NET_PAY_RUN;
997    -- Site Limit Check
998    IF trc_TxbAnnPymInc + trc_PblOffErn < glb_ZA_SIT_LIM THEN
999       hr_utility.set_location('py_za_tx_01032006.LteCalc',51);
1000       l_Sl := TRUE;
1001    ELSE
1002       hr_utility.set_location('py_za_tx_01032006.LteCalc',52);
1003       l_Sl := FALSE;
1004    END IF;
1005 
1006    py_za_tx_utl_01032006.ValidateTaxOns(p_Rf => l_Sl);
1007 
1008 -- Set IT3A Indicator
1009 --
1010    IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
1011       hr_utility.set_location('py_za_tx_01032006.LteCalc',53);
1012       trc_It3Ind := 0; -- Over Lim
1013    ELSE
1014       hr_utility.set_location('py_za_tx_01032006.LteCalc',54);
1015       trc_It3Ind := 1; -- Under Lim
1016    END IF;
1017 
1018    -- Normal Income
1019    WrtHrTrc('trc_NorIncYtd:    '||to_char(trc_NorIncYtd));
1020    WrtHrTrc('trc_NorIncPtd:    '||to_char(trc_NorIncPtd));
1021    WrtHrTrc('trc_NorErn:       '||to_char(trc_NorErn));
1025    WrtHrTrc('trc_LibFpNI:      '||to_char(trc_LibFpNI));
1022    WrtHrTrc('trc_TxbNorInc:    '||to_char(trc_TxbNorInc));
1023    WrtHrTrc('trc_TotLibNI:     '||to_char(trc_TotLibNI));
1024    WrtHrTrc('trc_LibFyNI:      '||to_char(trc_LibFyNI));
1026    -- Fringe Benefits
1027    WrtHrTrc('trc_FrnBenYtd:    '||to_char(trc_FrnBenYtd));
1028    WrtHrTrc('trc_FrnBenPtd:    '||to_char(trc_FrnBenPtd));
1029    WrtHrTrc('trc_FrnBenErn:    '||to_char(trc_FrnBenErn));
1030    WrtHrTrc('trc_TxbFrnInc:    '||to_char(trc_TxbFrnInc));
1031    WrtHrTrc('trc_TotLibFB:     '||to_char(trc_TotLibFB));
1032    WrtHrTrc('trc_LibFyFB:      '||to_char(trc_LibFyFB));
1033    WrtHrTrc('trc_LibFpFB:      '||to_char(trc_LibFpFB));
1034    -- Travel Allowance
1035    WrtHrTrc('trc_TrvAllYtd:    '||to_char(trc_TrvAllYtd));
1036    WrtHrTrc('trc_TrvAllPtd:    '||to_char(trc_TrvAllPtd));
1037    WrtHrTrc('trc_TrvAllErn:    '||to_char(trc_TrvAllErn));
1038    WrtHrTrc('trc_TxbTrvInc:    '||to_char(trc_TxbTrvInc));
1039    WrtHrTrc('trc_TotLibTA:     '||to_char(trc_TotLibTA));
1040    WrtHrTrc('trc_LibFyTA:      '||to_char(trc_LibFyTA));
1041    WrtHrTrc('trc_LibFpTA:      '||to_char(trc_LibFpTA));
1042    -- Annual Bonus
1043    WrtHrTrc('trc_AnnBonYtd:    '||to_char(trc_AnnBonYtd));
1044    WrtHrTrc('trc_AnnBonPtd:    '||to_char(trc_AnnBonPtd));
1045    WrtHrTrc('trc_AnnBonErn:    '||to_char(trc_AnnBonErn));
1046    WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
1047    WrtHrTrc('trc_TotLibAB:     '||to_char(trc_TotLibAB));
1048    WrtHrTrc('trc_LibFyAB:      '||to_char(trc_LibFyAB));
1049    WrtHrTrc('trc_LibFpAB:      '||to_char(trc_LibFpAB));
1050    -- Annual Payments
1051    WrtHrTrc('trc_AnnPymYtd:    '||to_char(trc_AnnPymYtd));
1052    WrtHrTrc('trc_AnnPymPtd:    '||to_char(trc_AnnPymPtd));
1053    WrtHrTrc('trc_AnnPymErn:    '||to_char(trc_AnnPymErn));
1054    WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
1055    WrtHrTrc('trc_TotLibAP:     '||to_char(trc_TotLibAP));
1056    WrtHrTrc('trc_LibFyAP:      '||to_char(trc_LibFyAP));
1057    WrtHrTrc('trc_LibFpAP:      '||to_char(trc_LibFpAP));
1058    -- Pubilc Office Allowance
1059    WrtHrTrc('trc_PblOffYtd:    '||to_char(trc_PblOffYtd));
1060    WrtHrTrc('trc_PblOffPtd:    '||to_char(trc_PblOffPtd));
1061    WrtHrTrc('trc_PblOffErn:    '||to_char(trc_PblOffErn));
1062    WrtHrTrc('trc_TxbPblOffInc: '||to_char(trc_TxbPblOffInc));
1063    WrtHrTrc('trc_TotLibPO:     '||to_char(trc_TotLibPO));
1064    WrtHrTrc('trc_LibFyPO:      '||to_char(trc_LibFyPO));
1065    WrtHrTrc('trc_LibFpPO:      '||to_char(trc_LibFpPO));
1066 
1067 
1068 
1069 EXCEPTION
1070    WHEN OTHERS THEN
1071       IF xpt_Msg = 'No Error' THEN
1072          xpt_Msg := 'LteCalc: '||TO_CHAR(SQLCODE);
1073       END IF;
1074       RAISE xpt_E;
1075 END LteCalc;
1076 -------------------------------------------------------------------------------
1077 -- SeaCalc                                                                   --
1078 -- Tax Calculation for Seasonal Workers                                      --
1079 -------------------------------------------------------------------------------
1080 PROCEDURE SeaCalc AS
1081 -- Variables
1082 --
1083    l_Np       BALANCE DEFAULT 0;
1084    l_65Year   DATE;
1085 
1086 BEGIN
1087    hr_utility.set_location('py_za_tx_01032006.SeaCalc',1);
1088 -- Identify the calculation
1089 --
1090    trc_CalTyp := 'SeaCalc';
1091 
1092 -- Period Type Income
1093 --
1094    trc_TxbIncPtd :=
1095       ( bal_TOT_TXB_NI_RUN
1096       + bal_TOT_TXB_FB_RUN
1097       );
1098 -- Check if any Period Income Exists
1099 --
1100    hr_utility.set_location('py_za_tx_01032006.SeaCalc',2);
1101    IF trc_TxbIncPtd = 0 THEN -- Pre-Earnings Calc
1102       hr_utility.set_location('py_za_tx_01032006.SeaCalc',3);
1103       -- Site Factor
1104       --
1105       trc_SitFactor := glb_ZA_WRK_DYS_PR_YR / dbi_SEA_WRK_DYS_WRK;
1106 
1107       -- Tax Rebates, Threshold Figure and Medical Aid
1108       -- Abatements
1109       -- Calculate the assignments 65 Year Date
1110       l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
1111 
1112       IF l_65Year BETWEEN dbi_ZA_TX_YR_STRT AND dbi_ZA_TX_YR_END THEN
1113          hr_utility.set_location('py_za_tx_01032006.SeaCalc',4);
1114          -- give the extra abatement
1115          trc_Rebate    := glb_ZA_PRI_TX_RBT + glb_ZA_ADL_TX_RBT;
1116          trc_Threshold := glb_ZA_SC_TX_THRSHLD;
1117       ELSE
1118          hr_utility.set_location('py_za_tx_01032006.SeaCalc',5);
1119          -- not eligable for extra abatement
1120          trc_Rebate    := glb_ZA_PRI_TX_RBT;
1121          trc_Threshold := glb_ZA_PRI_TX_THRSHLD;
1122       END IF;
1123 
1124    -- Base Income
1125    --
1126       -- Base Income
1127       trc_BseErn := bal_TOT_TXB_AP_RUN;
1128       -- Taxable Base Income
1129       trc_TxbBseInc := trc_BseErn * trc_SitFactor;
1130       -- Threshold Check
1131       IF trc_TxbBseInc >= trc_Threshold THEN
1132          hr_utility.set_location('py_za_tx_01032006.SeaCalc',6);
1133          -- Tax Liability
1134          trc_TotLibBse := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbBseInc);
1135       ELSE
1136          hr_utility.set_location('py_za_tx_01032006.SeaCalc',7);
1137          trc_TotLibBse := 0;
1138       END IF;
1139 
1140    -- Annual Payments
1141    --
1142       -- Taxable Annual Payments Income
1143       trc_TxbAnnPymInc := trc_BseErn + trc_TxbBseInc;-- AP was taken as base!
1144       -- Threshold Check
1148          trc_TotLibAP := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1145       IF trc_TxbAnnPymInc >= trc_Threshold THEN
1146          hr_utility.set_location('py_za_tx_01032006.SeaCalc',8);
1147          -- Tax Liability
1149          trc_LibFpAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibBse);
1150       ElSE
1151          hr_utility.set_location('py_za_tx_01032006.SeaCalc',9);
1152          trc_LibFpAP := 0;
1153       END IF;
1154 
1155       -- Base Income
1156       WrtHrTrc('trc_BseErn: '      ||to_char(trc_BseErn));
1157       WrtHrTrc('trc_TxbBseInc: '   ||to_char(trc_TxbBseInc));
1158       WrtHrTrc('trc_TotLibBse: '   ||to_char(trc_TotLibBse));
1159       -- Annual Payments
1160       WrtHrTrc('trc_AnnPymYtd: '   ||to_char(trc_AnnPymYtd));
1161       WrtHrTrc('trc_AnnPymPtd: '   ||to_char(trc_AnnPymPtd));
1162       WrtHrTrc('trc_AnnPymErn: '   ||to_char(trc_AnnPymErn));
1163       WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
1164       WrtHrTrc('trc_TotLibAP: '    ||to_char(trc_TotLibAP));
1165       WrtHrTrc('trc_LibFyAP: '     ||to_char(trc_LibFyAP));
1166       WrtHrTrc('trc_LibFpAP: '     ||to_char(trc_LibFpAP));
1167 
1168 
1169    ELSE
1170       hr_utility.set_location('py_za_tx_01032006.SeaCalc',10);
1171       -- Site Factor
1172       --
1173       trc_SitFactor := glb_ZA_WRK_DYS_PR_YR / dbi_SEA_WRK_DYS_WRK;
1174 
1175       -- Rebates
1176       py_za_tx_utl_01032006.SetRebates;
1177 
1178       -- Abatements
1179       py_za_tx_utl_01032006.Abatements;
1180 
1181    hr_utility.set_location('py_za_tx_01032006.SeaCalc',11);
1182 
1183    -- Normal Income
1184    --
1185       -- Run Normal Income
1186       trc_NorIncPtd := bal_TOT_TXB_NI_RUN;
1187       -- Skip the calculation if there is No Income
1188       IF trc_NorIncPtd <> 0 THEN
1189          hr_utility.set_location('py_za_tx_01032006.SeaCalc',12);
1190          -- Normal Earnings
1191          trc_NorErn := trc_NorIncPtd * trc_SitFactor;
1192          -- Taxable Normal Income
1193          trc_TxbNorInc := trc_NorErn - trc_PerTotAbm;
1194          -- Threshold Check
1195          IF trc_TxbNorInc >= trc_Threshold THEN
1196             hr_utility.set_location('py_za_tx_01032006.SeaCalc',13);
1197             -- Tax Liability
1198             trc_TotLibNI := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbNorInc);
1199             trc_LibFyNI  := trc_TotLibNI - 0;
1200             trc_TotLibNI := greatest(trc_TotLibNI,0);
1201             trc_LibFpNI  := trc_LibFyNI / trc_SitFactor;
1202          ELSE
1203             hr_utility.set_location('py_za_tx_01032006.SeaCalc',14);
1204             trc_TotLibNI := 0;
1205          END IF;
1206       ELSE
1207          hr_utility.set_location('py_za_tx_01032006.SeaCalc',15);
1208          trc_NorErn    := 0;
1209          trc_TxbNorInc := 0;
1210          trc_TotLibNI  := 0;
1211       END IF;
1212 
1213    -- Fringe Benefits
1214    --
1215       -- Run Fringe Benefits
1216       trc_FrnBenPtd := bal_TOT_TXB_FB_RUN;
1217       -- Skip the calculation if there is No Income
1218       IF trc_FrnBenPtd <> 0 THEN
1219          hr_utility.set_location('py_za_tx_01032006.SeaCalc',16);
1220          -- Fringe Benefit Earnings
1221          trc_FrnBenErn := trc_FrnBenPtd * trc_SitFactor + trc_NorErn;
1222          -- Taxable Fringe Income
1223          trc_TxbFrnInc := trc_FrnBenErn - trc_PerTotAbm;
1224          -- Threshold Check
1225          IF trc_TxbFrnInc >= trc_Threshold THEN
1226             hr_utility.set_location('py_za_tx_01032006.SeaCalc',17);
1227             -- Tax Liability
1228             trc_TotLibFB := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbFrnInc);
1229             trc_LibFyFB  := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
1230             trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
1231             trc_LibFpFB  := trc_LibFyFB / trc_SitFactor;
1232          ELSE
1233             hr_utility.set_location('py_za_tx_01032006.SeaCalc',18);
1234             trc_TotLibFB := trc_TotLibNI;
1235          END IF;
1236       ELSE
1237          hr_utility.set_location('py_za_tx_01032006.SeaCalc',19);
1238          trc_FrnBenErn := trc_NorErn;
1239          trc_TxbFrnInc := trc_TxbNorInc;
1240          trc_TotLibFB  := trc_TotLibNI;
1241       END IF;
1242 
1243    -- Annual Payments
1244    --
1245       -- Run Annual Payments
1246       trc_AnnPymPtd :=  bal_TOT_TXB_AP_RUN;
1247       -- Skip the calculation if there is No Income
1248       IF trc_AnnPymPtd <> 0 THEN
1249          hr_utility.set_location('py_za_tx_01032006.SeaCalc',20);
1250          -- Annual Payments Earnings
1251          trc_AnnPymErn := trc_AnnPymPtd + trc_FrnBenErn;
1252          -- Taxable Annual Payments Income
1253          trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
1254          -- Threshold Check
1255          IF trc_TxbAnnPymInc >= trc_Threshold THEN
1256             hr_utility.set_location('py_za_tx_01032006.SeaCalc',21);
1257             -- Tax Liability
1258             trc_TotLibAP := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1259             trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibFB);
1260             trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibFB);
1261             trc_LibFpAP  := trc_LibFyAP;
1262          ELSE
1263             hr_utility.set_location('py_za_tx_01032006.SeaCalc',22);
1264             trc_TotLibAP := trc_TotLibFB;
1265          END IF;
1266       ELSE
1270          trc_TotLibAP     := trc_TotLibFB;
1267          hr_utility.set_location('py_za_tx_01032006.SeaCalc',23);
1268          trc_AnnPymErn    := trc_FrnBenErn;
1269          trc_TxbAnnPymInc := trc_TxbFrnInc;
1271       END IF;
1272 
1273 
1274    -- Net Pay Validation
1275    --
1276       py_za_tx_utl_01032006.ValidateTaxOns;
1277 
1278    hr_utility.set_location('py_za_tx_01032006.SeaCalc',24);
1279 
1280    -- Set IT3A Indicator
1281    --
1282       IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
1283          hr_utility.set_location('py_za_tx_01032006.SeaCalc',25);
1284          trc_It3Ind := 0; -- Over Lim
1285       ELSE
1286          hr_utility.set_location('py_za_tx_01032006.SeaCalc',26);
1287          trc_It3Ind := 1; -- Under Lim
1288       END IF;
1289    END IF;
1290 
1291    -- Normal Income
1292    WrtHrTrc('trc_NorIncYtd:    '||to_char(trc_NorIncYtd));
1293    WrtHrTrc('trc_NorIncPtd:    '||to_char(trc_NorIncPtd));
1294    WrtHrTrc('trc_NorErn:       '||to_char(trc_NorErn));
1295    WrtHrTrc('trc_TxbNorInc:    '||to_char(trc_TxbNorInc));
1296    WrtHrTrc('trc_TotLibNI:     '||to_char(trc_TotLibNI));
1297    WrtHrTrc('trc_LibFyNI:      '||to_char(trc_LibFyNI));
1298    WrtHrTrc('trc_LibFpNI:      '||to_char(trc_LibFpNI));
1299    -- Fringe Benefits
1300    WrtHrTrc('trc_FrnBenYtd:    '||to_char(trc_FrnBenYtd));
1301    WrtHrTrc('trc_FrnBenPtd:    '||to_char(trc_FrnBenPtd));
1302    WrtHrTrc('trc_FrnBenErn:    '||to_char(trc_FrnBenErn));
1303    WrtHrTrc('trc_TxbFrnInc:    '||to_char(trc_TxbFrnInc));
1304    WrtHrTrc('trc_TotLibFB:     '||to_char(trc_TotLibFB));
1305    WrtHrTrc('trc_LibFyFB:      '||to_char(trc_LibFyFB));
1306    WrtHrTrc('trc_LibFpFB:      '||to_char(trc_LibFpFB));
1307    -- Annual Payments
1308    WrtHrTrc('trc_AnnPymYtd:    '||to_char(trc_AnnPymYtd));
1309    WrtHrTrc('trc_AnnPymPtd:    '||to_char(trc_AnnPymPtd));
1310    WrtHrTrc('trc_AnnPymErn:    '||to_char(trc_AnnPymErn));
1311    WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
1312    WrtHrTrc('trc_TotLibAP:     '||to_char(trc_TotLibAP));
1313    WrtHrTrc('trc_LibFyAP:      '||to_char(trc_LibFyAP));
1314    WrtHrTrc('trc_LibFpAP:      '||to_char(trc_LibFpAP));
1315 
1316 EXCEPTION
1317    WHEN OTHERS THEN
1318       IF xpt_Msg = 'No Error' THEN
1319          xpt_Msg := 'SeaCalc: '||TO_CHAR(SQLCODE);
1320       END IF;
1321       RAISE xpt_E;
1322 END SeaCalc;
1323 
1324 -------------------------------------------------------------------------------
1325 -- SitCalc                                                                   --
1326 -- End of Year Tax Calculation                                               --
1327 -------------------------------------------------------------------------------
1328 PROCEDURE SitCalc AS
1329 -- Variables
1330 --
1331    l_Sl       BOOLEAN;
1332    l_Np       BALANCE;
1333 
1334 BEGIN
1335 
1336    hr_utility.set_location('py_za_tx_01032006.SitCalc',1);
1337 -- Identify the calculation
1338 --
1339    trc_CalTyp := 'SitCalc';
1340 
1341 -- Update Global Balance Values with correct TAXABLE values
1342 --
1343    py_za_tx_utl_01032006.TrvAll;
1344 
1345    hr_utility.set_location('py_za_tx_01032006.SitCalc',2);
1346 
1347    bal_TOT_TXB_PO_YTD  := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
1348 
1349 -- Ytd Taxable Income
1350 --
1351  trc_TxbIncYtd :=
1352     ( bal_TOT_TXB_NI_YTD
1353     + bal_TOT_TXB_FB_YTD
1354     + bal_TOT_TXB_TA_YTD
1355     + bal_BP_YTD
1356     );
1357    hr_utility.set_location('py_za_tx_01032006.SitCalc',3);
1358 
1359 -- Site Factor
1360 --
1361    trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032006.DaysWorked;
1362 
1363    hr_utility.set_location('py_za_tx_01032006.SitCalc',4);
1364 
1365 -- Rebates
1366    py_za_tx_utl_01032006.SetRebates;
1367 
1368 -- Abatements
1369    py_za_tx_utl_01032006.Abatements;
1370 
1371    hr_utility.set_location('py_za_tx_01032006.SitCalc',5);
1372 
1373 -- Deemed Remuneration
1374 --
1375    -- Run Deemed Remuneration
1376    trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
1377 
1378    -- Skip the calculation if there is No Income
1379    IF trc_DmdRmnRun <> 0 THEN
1380       hr_utility.set_location('py_za_tx_01032006.SitCalc',6);
1381       -- Taxable Deemed Remuneration
1382       trc_TxbDmdRmn := trc_DmdRmnRun;
1383       -- Threshold Check
1384       IF trc_TxbDmdRmn >= trc_Threshold THEN
1385          hr_utility.set_location('py_za_tx_01032006.SitCalc',7);
1386          -- Tax Liability
1387          trc_TotLibDR := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbDmdRmn);
1388          trc_LibFyDR  := (trc_TotLibDR - 0) / trc_SitFactor;
1389          trc_TotLibDR := greatest(trc_TotLibDR,0);
1390          trc_LibFpDR  := trc_LibFyDR - bal_TX_ON_DR_YTD;
1391       ELSE
1392          hr_utility.set_location('py_za_tx_01032006.SitCalc',8);
1393          -- Set Cascade Figures and Refund
1394          trc_TotLibDR   := 0;
1395          trc_LibFpDR    := -1 * bal_TX_ON_DR_YTD;
1396          trc_LibFpDROvr := TRUE;
1397       END IF;
1398    ELSE
1399       hr_utility.set_location('py_za_tx_01032006.SitCalc',9);
1400       -- Set Cascade Figures and Refund
1401       trc_TxbDmdRmn  := 0;
1402       trc_TotLibDR   := 0;
1403       trc_LibFpDR    := -1 * bal_TX_ON_DR_YTD;
1404       trc_LibFpDROvr := TRUE;
1405    END IF;
1406 
1410 --
1407    hr_utility.set_location('py_za_tx_01032006.SitCalc',10);
1408 
1409 -- Normal Income
1411    -- Ytd Normal Income
1412    trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
1413    -- Skip the calculation if there is No Income
1414    IF trc_NorIncYtd <> 0 THEN
1415       hr_utility.set_location('py_za_tx_01032006.SitCalc',11);
1416       -- Normal Earnings
1417       trc_NorErn := trc_NorIncYtd * trc_SitFactor;
1418       -- Taxable Normal Income
1419       trc_TxbNorInc := trc_NorErn - trc_PerTotAbm;
1420       -- Threshold Check
1421       IF trc_TxbNorInc >= trc_Threshold THEN
1422          hr_utility.set_location('py_za_tx_01032006.SitCalc',12);
1423          -- Tax Liability
1424          trc_TotLibNI := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbNorInc);
1425          trc_LibFyNI  := (trc_TotLibNI - least(trc_TotLibNI,trc_TotLibDR)) / trc_SitFactor;
1426          trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibDR);
1427          trc_LibFpNI  := trc_LibFyNI - bal_TX_ON_NI_YTD;
1428       ELSE
1429          hr_utility.set_location('py_za_tx_01032006.SitCalc',13);
1430          -- Set Cascade Figures and Refund
1431          trc_TotLibNI   := trc_TotLibDR;
1432          trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
1433          trc_LibFpNIOvr := TRUE;
1434       END IF;
1435    ELSE
1436       hr_utility.set_location('py_za_tx_01032006.SitCalc',14);
1437       -- Set Cascade Figures and Refund
1438       trc_NorErn     := 0;
1439       trc_TxbNorInc  := 0;
1440       trc_TotLibNI   := trc_TotLibDR;
1441       trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
1442       trc_LibFpNIOvr := TRUE;
1443    END IF;
1444 
1445 -- Fringe Benefits
1446 --
1447    -- Ytd Fringe Benefits
1448    trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
1449    -- Skip the calculation if there is No Income
1450    IF trc_FrnBenYtd <> 0 THEN
1451       hr_utility.set_location('py_za_tx_01032006.SitCalc',15);
1452       -- Fringe Benefit Earnings
1453       trc_FrnBenErn := trc_FrnBenYtd * trc_SitFactor + trc_NorErn;
1454       -- Taxable Fringe Income
1455       trc_TxbFrnInc := trc_FrnBenErn - trc_PerTotAbm;
1456       -- Threshold Check
1457       IF trc_TxbFrnInc >= trc_Threshold THEN
1458          hr_utility.set_location('py_za_tx_01032006.SitCalc',16);
1459          -- Tax Liability
1460          trc_TotLibFB := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbFrnInc);
1461          trc_LibFyFB  := (trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI)) / trc_SitFactor;
1462          trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
1463          trc_LibFpFB  := trc_LibFyFB - bal_TX_ON_FB_YTD;
1464       ElSE
1465          hr_utility.set_location('py_za_tx_01032006.SitCalc',17);
1466          -- Set Cascade Figures and Refund
1467          trc_TotLibFB   := trc_TotLibNI;
1468          trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
1469          trc_LibFpFBOvr := TRUE;
1470       END IF;
1471    ELSE
1472       hr_utility.set_location('py_za_tx_01032006.SitCalc',18);
1473       -- Set Cascade Figures and Refund
1474       trc_FrnBenErn  := trc_NorErn;
1475       trc_TxbFrnInc  := trc_TxbNorInc;
1476       trc_TotLibFB   := trc_TotLibNI;
1477       trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
1478       trc_LibFpFBOvr := TRUE;
1479    END IF;
1480 
1481 -- Travel Allowance
1482 --
1483    -- Ytd Travel Allowance
1484    trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
1485    -- Skip the calculation if there is No Income
1486    IF trc_TrvAllYtd <> 0 THEN
1487       hr_utility.set_location('py_za_tx_01032006.SitCalc',19);
1488       -- Travel Earnings
1489       trc_TrvAllErn := trc_TrvAllYtd * trc_SitFactor + trc_FrnBenErn;
1490       -- Taxable Travel Income
1491       trc_TxbTrvInc := trc_TrvAllErn - trc_PerTotAbm;
1492       -- Threshold Check
1493       IF trc_TxbTrvInc >= trc_Threshold THEN
1494          hr_utility.set_location('py_za_tx_01032006.SitCalc',20);
1495          -- Tax Liability
1496          trc_TotLibTA := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbTrvInc);
1497          trc_LibFyTA  := (trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB)) / trc_SitFactor;
1498          trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
1499          trc_LibFpTA  := trc_LibFyTA - bal_TX_ON_TA_YTD;
1500       ELSE
1501          hr_utility.set_location('py_za_tx_01032006.SitCalc',21);
1502          -- Set Cascade Figures and Refund
1503          trc_TotLibTA   := trc_TotLibFB;
1504          trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
1505          trc_LibFpTAOvr := TRUE;
1506       END IF;
1507    ELSE
1508       hr_utility.set_location('py_za_tx_01032006.SitCalc',22);
1509       -- Set Cascade Figures and Refund
1510       trc_TrvAllErn  := trc_FrnBenErn;
1511       trc_TxbTrvInc  := trc_TxbFrnInc;
1512       trc_TotLibTA   := trc_TotLibFB;
1513       trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
1514       trc_LibFpTAOvr := TRUE;
1515    END IF;
1516 
1517 -- Bonus Provision
1518 --
1519    -- Ytd Bonus Prvision
1520    trc_BonProYtd := bal_BP_YTD;
1521    -- Skip the calculation if there is No Income
1522    IF trc_BonProYtd <> 0 THEN
1523       hr_utility.set_location('py_za_tx_01032006.SitCalc',23);
1524       -- Bonus Provision Earnings
1525       trc_BonProErn := trc_BonProYtd * trc_SitFactor + trc_TrvAllErn;
1526       -- Taxable Bonus Provision Income
1527       trc_TxbBonProInc := trc_BonProErn - trc_PerTotAbm;
1528       -- Threshold Check
1529       IF trc_TxbBonProInc >= trc_Threshold THEN
1530          hr_utility.set_location('py_za_tx_01032006.SitCalc',24);
1531          -- Tax Liability
1535          trc_LibFpBP  := trc_LibFyBP - bal_TX_ON_BP_YTD;
1532          trc_TotLibBP := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbBonProInc);
1533          trc_LibFyBP  := (trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA)) / trc_SitFactor;
1534          trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
1536       ELSE
1537          hr_utility.set_location('py_za_tx_01032006.SitCalc',25);
1538          -- Set Cascade Figures and Refund
1539          trc_TotLibBP   := trc_TotLibTA;
1540          trc_LibFpBP    := -1 * bal_TX_ON_BP_YTD;
1541          trc_LibFpBPOvr := TRUE;
1542       END IF;
1543    ELSE
1544       hr_utility.set_location('py_za_tx_01032006.SitCalc',26);
1545       -- Set Cascade Figures and Refund
1546       trc_BonProErn    := trc_TrvAllErn;
1547       trc_TxbBonProInc := trc_TxbTrvInc;
1548       trc_TotLibBP     := trc_TotLibTA;
1549       trc_LibFpBP      := -1 * bal_TX_ON_BP_YTD;
1550       trc_LibFpBPOvr   := TRUE;
1551    END IF;
1552 
1553 -- Annual Bonus
1554 --
1555    -- Ytd Annual Bonus
1556    trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
1557    -- Skip the calculation if there is No Income
1558    IF trc_AnnBonYtd <> 0 THEN
1559       hr_utility.set_location('py_za_tx_01032006.SitCalc',27);
1560       -- Annual Bonus Earnings
1561       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
1562       -- Taxable Annual Bonus Income
1563       trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
1564       -- Threshold Check
1565       IF trc_TxbAnnBonInc >= trc_Threshold THEN
1566          hr_utility.set_location('py_za_tx_01032006.SitCalc',28);
1567          -- Tax Liability
1568          trc_TotLibAB := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbAnnBonInc);
1569          trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
1570          trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
1571          hr_utility.set_location('py_za_tx_01032006.SitCalc',29);
1572          -- Check Bonus Provision
1573          IF trc_BonProYtd <> 0 THEN
1574             hr_utility.set_location('py_za_tx_01032006.SitCalc',30);
1575             -- Check Bonus Provision Frequency
1576             IF dbi_BP_TX_RCV = 'B' OR py_za_tx_utl_01032006.SitePeriod THEN
1577                hr_utility.set_location('py_za_tx_01032006.SitCalc',31);
1578                trc_LibFpAB :=
1579                trc_LibFyAB - (bal_TX_ON_BP_YTD
1580                              + trc_LibFpBP
1581                              + bal_TX_ON_AB_YTD);
1582             ELSE
1583                hr_utility.set_location('py_za_tx_01032006.SitCalc',32);
1584                trc_LibFpAB := 0;
1585             END IF;
1586          ELSE
1587             hr_utility.set_location('py_za_tx_01032006.SitCalc',33);
1588             trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
1589          END IF;
1590       ELSE
1591          hr_utility.set_location('py_za_tx_01032006.SitCalc',34);
1592          -- Set Cascade Figures and Refund
1593          trc_TotLibAB   := trc_TotLibTA;
1594          trc_LibFpAB    := -1 * bal_TX_ON_AB_YTD;
1595          trc_LibFpABOvr := TRUE;
1596       END IF;
1597    ELSE
1598       hr_utility.set_location('py_za_tx_01032006.SitCalc',35);
1599       -- Set Cascade Figures and Refund
1600       trc_LibFpAB      := -1 * bal_TX_ON_AB_YTD;
1601       trc_LibFpABOvr   := TRUE;
1602 
1603       IF dbi_BP_TX_RCV = 'A' AND py_za_tx_utl_01032006.SitePeriod THEN
1604          hr_utility.set_location('py_za_tx_01032006.SitCalc',36);
1605          trc_LibFpBP      := -1 * bal_TX_ON_BP_YTD;
1606          trc_LibFpBPOvr   := TRUE;
1607          trc_LibFpAPOvr   := TRUE;
1608 
1609          trc_AnnBonErn    := trc_TrvAllErn;
1610          trc_TxbAnnBonInc := trc_TxbTrvInc;
1611          trc_TotLibAB     := trc_TotLibTA;
1612       ELSE
1613          hr_utility.set_location('py_za_tx_01032006.SitCalc',37);
1614          trc_AnnBonErn    := trc_BonProErn;
1615          trc_TxbAnnBonInc := trc_TxbBonProInc;
1616          trc_TotLibAB     := trc_TotLibBP;
1617       END IF;
1618    END IF;
1619 
1620 -- Annual Payments
1621 --
1622    -- Ytd Annual Payments
1623    trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
1624    -- Skip the calculation if there is No Income
1625    IF trc_AnnPymYtd <> 0 THEN
1626       hr_utility.set_location('py_za_tx_01032006.SitCalc',38);
1627       -- Annual Payments Earnings
1628       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
1629       -- Taxable Annual Payments Income
1630       trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
1631       -- Threshold Check
1632       IF trc_TxbAnnPymInc >= trc_Threshold THEN
1633          hr_utility.set_location('py_za_tx_01032006.SitCalc',39);
1634          -- Tax Liability
1635          trc_TotLibAP := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1636          trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
1637          trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
1638          trc_LibFpAP  := trc_LibFyAP - bal_TX_ON_AP_YTD;
1639       ELSE
1640          hr_utility.set_location('py_za_tx_01032006.SitCalc',40);
1641          -- Set Cascade Figures and Refund
1642          trc_TotLibAP   := trc_TotLibAB;
1643          trc_LibFpAP    := -1 * bal_TX_ON_AP_YTD;
1644          trc_LibFpAPOvr := TRUE;
1645       END IF;
1646    ELSE
1647       hr_utility.set_location('py_za_tx_01032006.SitCalc',41);
1648       -- Set Cascade Figures and Refund
1649       trc_AnnPymErn    := trc_AnnBonErn;
1650       trc_TxbAnnPymInc := trc_TxbAnnBonInc;
1651       trc_TotLibAP     := trc_TotLibAB;
1655 
1652       trc_LibFpAP      := -1 * bal_TX_ON_AP_YTD;
1653       trc_LibFpAPOvr   := TRUE;
1654    END IF;
1656 -- Public Office Allowance
1657 --
1658    -- Ytd Public Office Allowance
1659    trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
1660    -- Skip the calculation if there is No Income
1661    IF trc_PblOffYtd <> 0 THEN
1662       hr_utility.set_location('py_za_tx_01032006.SitCalc',42);
1663       -- Public Office Allowance Earnings
1664       trc_PblOffErn := trc_PblOffYtd * trc_SitFactor + trc_AnnPymErn;
1665       -- Taxable Public Office Allowance
1666       trc_TxbPblOffInc := trc_PblOffErn - trc_AnnTotAbm;
1667       -- Threshold Check
1668       IF trc_TxbPblOffInc >= trc_Threshold THEN
1669          hr_utility.set_location('py_za_tx_01032006.SitCalc',43);
1670          -- Tax Liability
1671          trc_TotLibPO := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbPblOffInc);
1672          trc_LibFyPO  := (trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP)) / trc_SitFactor;
1673          trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
1674          trc_LibFpPO  := trc_LibFyPO - bal_TX_ON_PO_YTD;
1675       ElSE
1676          hr_utility.set_location('py_za_tx_01032006.SitCalc',44);
1677          -- Set Cascade Figures and Refund
1678          trc_TotLibPO   := trc_TotLibAP;
1679          trc_LibFpPO    := -1 * bal_TX_ON_PO_YTD;
1680          trc_LibFpPOOvr := TRUE;
1681       END IF;
1682    ELSE
1683       hr_utility.set_location('py_za_tx_01032006.SitCalc',45);
1684       -- Set Cascade Figures and Refund
1685       trc_PblOffErn     := trc_AnnPymErn;
1686       trc_TxbPblOffInc  := trc_TxbAnnPymInc;
1687       trc_TotLibPO      := trc_TotLibAP;
1688       trc_LibFpPO       := -1 * bal_TX_ON_PO_YTD;
1689       trc_LibFpPOOvr    := TRUE;
1690    END IF;
1691 
1692 -- Net Pay Validation
1693 --
1694    -- Net Pay of the Employee
1695    l_Np := bal_NET_PAY_RUN;
1696    -- Site Limit Check
1697    IF trc_TxbAnnPymInc + trc_PblOffErn < glb_ZA_SIT_LIM THEN
1698       hr_utility.set_location('py_za_tx_01032006.SitCalc',46);
1699       l_Sl := TRUE;
1700    ELSE
1701       hr_utility.set_location('py_za_tx_01032006.SitCalc',47);
1702       l_Sl := FALSE;
1703    END IF;
1704 
1705    py_za_tx_utl_01032006.ValidateTaxOns(p_Rf => l_Sl);
1706 
1707    hr_utility.set_location('py_za_tx_01032006.SitCalc',48);
1708 
1709 -- Set IT3A Indicator
1710 --
1711    IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
1712       hr_utility.set_location('py_za_tx_01032006.SitCalc',49);
1713       trc_It3Ind := 0; -- Over Lim
1714    ELSE
1715       hr_utility.set_location('py_za_tx_01032006.SitCalc',50);
1716       trc_It3Ind := 1; -- Under Lim
1717    END IF;
1718 
1719 -- Calculate Total Taxable Income and pass out
1720 --
1721    trc_OUpdFig := (trc_TxbAnnPymInc + trc_PblOffErn) - bal_TOT_TXB_INC_ITD;
1722 
1723    hr_utility.set_location('py_za_tx_01032006.SitCalc',51);
1724 
1725    -- Deemed Remuneration
1726    WrtHrTrc('trc_TxbDmdRmn:    '||to_char(trc_TxbDmdRmn));
1727    WrtHrTrc('trc_TotLibDR:     '||to_char(trc_TotLibDR));
1728    WrtHrTrc('trc_LibFyDR:      '||to_char(trc_LibFyDR));
1729    WrtHrTrc('trc_LibFpDR:      '||to_char(trc_LibFpDR));
1730    -- Base Income
1731    WrtHrTrc('trc_BseErn:       '||to_char(trc_BseErn));
1732    WrtHrTrc('trc_TxbBseInc:    '||to_char(trc_TxbBseInc));
1733    WrtHrTrc('trc_TotLibBse:    '||to_char(trc_TotLibBse));
1734    -- Normal Income
1735    WrtHrTrc('trc_NorIncYtd:    '||to_char(trc_NorIncYtd));
1736    WrtHrTrc('trc_NorIncPtd:    '||to_char(trc_NorIncPtd));
1737    WrtHrTrc('trc_NorErn:       '||to_char(trc_NorErn));
1738    WrtHrTrc('trc_TxbNorInc:    '||to_char(trc_TxbNorInc));
1739    WrtHrTrc('trc_TotLibNI:     '||to_char(trc_TotLibNI));
1740    WrtHrTrc('trc_LibFyNI:      '||to_char(trc_LibFyNI));
1741    WrtHrTrc('trc_LibFpNI:      '||to_char(trc_LibFpNI));
1742    -- Fringe Benefits
1743    WrtHrTrc('trc_FrnBenYtd:    '||to_char(trc_FrnBenYtd));
1744    WrtHrTrc('trc_FrnBenPtd:    '||to_char(trc_FrnBenPtd));
1745    WrtHrTrc('trc_FrnBenErn:    '||to_char(trc_FrnBenErn));
1746    WrtHrTrc('trc_TxbFrnInc:    '||to_char(trc_TxbFrnInc));
1747    WrtHrTrc('trc_TotLibFB:     '||to_char(trc_TotLibFB));
1748    WrtHrTrc('trc_LibFyFB:      '||to_char(trc_LibFyFB));
1749    WrtHrTrc('trc_LibFpFB:      '||to_char(trc_LibFpFB));
1750    -- Travel Allowance
1751    WrtHrTrc('trc_TrvAllYtd:    '||to_char(trc_TrvAllYtd));
1752    WrtHrTrc('trc_TrvAllPtd:    '||to_char(trc_TrvAllPtd));
1753    WrtHrTrc('trc_TrvAllErn:    '||to_char(trc_TrvAllErn));
1754    WrtHrTrc('trc_TxbTrvInc:    '||to_char(trc_TxbTrvInc));
1755    WrtHrTrc('trc_TotLibTA:     '||to_char(trc_TotLibTA));
1756    WrtHrTrc('trc_LibFyTA:      '||to_char(trc_LibFyTA));
1757    WrtHrTrc('trc_LibFpTA:      '||to_char(trc_LibFpTA));
1758    -- Bonus Provision
1759    WrtHrTrc('trc_BonProYtd:    '||to_char(trc_BonProYtd));
1760    WrtHrTrc('trc_BonProPtd:    '||to_char(trc_BonProPtd));
1761    WrtHrTrc('trc_BonProErn:    '||to_char(trc_BonProErn));
1762    WrtHrTrc('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
1763    WrtHrTrc('trc_TotLibBP:     '||to_char(trc_TotLibBP));
1764    WrtHrTrc('trc_LibFyBP:      '||to_char(trc_LibFyBP));
1765    WrtHrTrc('trc_LibFpBP:      '||to_char(trc_LibFpBP));
1766    -- Annual Bonus
1767    WrtHrTrc('trc_AnnBonYtd:    '||to_char(trc_AnnBonYtd));
1768    WrtHrTrc('trc_AnnBonPtd:    '||to_char(trc_AnnBonPtd));
1769    WrtHrTrc('trc_AnnBonErn:    '||to_char(trc_AnnBonErn));
1773    WrtHrTrc('trc_LibFpAB:      '||to_char(trc_LibFpAB));
1770    WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
1771    WrtHrTrc('trc_TotLibAB:     '||to_char(trc_TotLibAB));
1772    WrtHrTrc('trc_LibFyAB:      '||to_char(trc_LibFyAB));
1774    -- Annual Payments
1775    WrtHrTrc('trc_AnnPymYtd:    '||to_char(trc_AnnPymYtd));
1776    WrtHrTrc('trc_AnnPymPtd:    '||to_char(trc_AnnPymPtd));
1777    WrtHrTrc('trc_AnnPymErn:    '||to_char(trc_AnnPymErn));
1778    WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
1779    WrtHrTrc('trc_TotLibAP:     '||to_char(trc_TotLibAP));
1780    WrtHrTrc('trc_LibFyAP:      '||to_char(trc_LibFyAP));
1781    WrtHrTrc('trc_LibFpAP:      '||to_char(trc_LibFpAP));
1782    -- Pubilc Office Allowance
1783    WrtHrTrc('trc_PblOffYtd:    '||to_char(trc_PblOffYtd));
1784    WrtHrTrc('trc_PblOffPtd:    '||to_char(trc_PblOffPtd));
1785    WrtHrTrc('trc_PblOffErn:    '||to_char(trc_PblOffErn));
1786    WrtHrTrc('trc_TxbPblOffInc: '||to_char(trc_TxbPblOffInc));
1787    WrtHrTrc('trc_TotLibPO:     '||to_char(trc_TotLibPO));
1788    WrtHrTrc('trc_LibFyPO:      '||to_char(trc_LibFyPO));
1789    WrtHrTrc('trc_LibFpPO:      '||to_char(trc_LibFpPO));
1790 
1791 EXCEPTION
1792    WHEN OTHERS THEN
1793       IF xpt_Msg = 'No Error' THEN
1794          xpt_Msg := 'SitCalc: '||TO_CHAR(SQLCODE);
1795       END IF;
1796       RAISE xpt_E;
1797 END SitCalc;
1798 
1799 -------------------------------------------------------------------------------
1800 -- DirCalc                                                                   --
1801 -- Tax Calculation for Directive Assignments                                 --
1802 -------------------------------------------------------------------------------
1803 PROCEDURE DirCalc AS
1804 -- Variables
1805 --
1806    l_Np       BALANCE DEFAULT 0;
1807 
1808 BEGIN
1809 
1810    hr_utility.set_location('py_za_tx_01032006.DirCalc',1);
1811 -- Identify the calculation
1812 --
1813    trc_CalTyp := 'DirCalc';
1814 
1815 -- Update Global Balance Values with correct TAXABLE values
1816 --
1817    py_za_tx_utl_01032006.TrvAll;
1818 
1819    hr_utility.set_location('py_za_tx_01032006.DirCalc',2);
1820 
1821    bal_TOT_TXB_PO_YTD  := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
1822 
1823 -- Normal Income
1824 --
1825    -- Ytd Normal Income
1826    trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
1827    -- Skip the calculation if there is No Income
1828    IF trc_NorIncYtd <> 0 THEN
1829       hr_utility.set_location('py_za_tx_01032006.DirCalc',3);
1830       -- Normal Earnings
1831       trc_NorErn := trc_NorIncYtd;
1832       -- Tax Liability
1833       trc_TotLibNI := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_NorErn);
1834       trc_LibFyNI  := trc_TotLibNI - 0;
1835       trc_TotLibNI := greatest(trc_TotLibNI,0);
1836       trc_LibFpNI  := trc_LibFyNI - bal_TX_ON_NI_YTD;
1837    ELSE
1838       hr_utility.set_location('py_za_tx_01032006.DirCalc',4);
1839       -- Set Cascade Figures and Refund
1840       trc_NorErn     := 0;
1841       trc_TotLibNI   := 0;
1842       trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
1843       trc_LibFpNIOvr := TRUE;
1844    END IF;
1845 
1846 -- Fringe Benefits
1847 --
1848    -- Ytd Fringe Benefits
1849      trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
1850    -- Skip the calculation if there is No Income
1851    IF trc_FrnBenYtd <> 0 THEN
1852       hr_utility.set_location('py_za_tx_01032006.DirCalc',5);
1853       -- Fringe Benefit Earnings
1854       trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
1855       -- Tax Liability
1856       trc_TotLibFB := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_FrnBenErn);
1857       trc_LibFyFB  := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
1858       trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
1859       trc_LibFpFB  := trc_LibFyFB - bal_TX_ON_FB_YTD;
1860    ELSE
1861       hr_utility.set_location('py_za_tx_01032006.DirCalc',6);
1862       -- Set Cascade Figures and Refund
1863       trc_FrnBenErn  := trc_NorErn;
1864       trc_TotLibFB   := trc_TotLibNI;
1865       trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
1866       trc_LibFpFBOvr := TRUE;
1867    END IF;
1868 
1869 -- Travel Allowance
1870 --
1871    -- Ytd Travel Allowance
1872    trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
1873    -- Skip the calculation if there is No Income
1874    IF trc_TrvAllYtd <> 0 THEN
1875       hr_utility.set_location('py_za_tx_01032006.DirCalc',7);
1876       -- Travel Allowance Earnings
1877       trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
1878       -- Tax Liability
1879       trc_TotLibTA := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TrvAllErn);
1880       trc_LibFyTA  := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
1881       trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
1882       trc_LibFpTA  := trc_LibFyTA - bal_TX_ON_TA_YTD;
1883    ELSE
1884       hr_utility.set_location('py_za_tx_01032006.DirCalc',8);
1885       -- Set Cascade Figures and Refund
1886       trc_TrvAllErn  := trc_FrnBenErn; --Cascade Figure
1887       trc_TotLibTA   := trc_TotLibFB;
1888       trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
1889       trc_LibFpTAOvr := TRUE;
1890    END IF;
1891 
1892 -- Bonus Provision
1893 --
1894    -- Ytd Bonus Provision
1895    trc_BonProYtd := bal_BP_YTD;
1896    -- Skip the calculation if there is No Income
1897    IF trc_BonProYtd <> 0 THEN
1898       hr_utility.set_location('py_za_tx_01032006.DirCalc',9);
1902       trc_TotLibBP := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_BonProErn);
1899       -- Bonus Provision Earnings
1900       trc_BonProErn := trc_BonProYtd + trc_TrvAllErn;
1901       -- Tax Liability
1903       trc_LibFyBP  := trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA);
1904       trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
1905       trc_LibFpBP  := trc_LibFyBP - bal_TX_ON_BP_YTD;
1906    ELSE
1907       hr_utility.set_location('py_za_tx_01032006.DirCalc',10);
1908       -- Set Cascade Figures and Refund
1909       trc_BonProErn  := trc_TrvAllErn;
1910       trc_TotLibBP   := trc_TotLibTA;
1911       trc_LibFpBP    := -1 * bal_TX_ON_BP_YTD;
1912       trc_LibFpBPOvr := TRUE;
1913    END IF;
1914 
1915 -- Annual Bonus
1916 --
1917    -- Ytd Annual Bonus
1918    trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
1919    -- Skip the calculation if there is No Income
1920    IF trc_AnnBonYtd <> 0 THEN
1921       hr_utility.set_location('py_za_tx_01032006.DirCalc',11);
1922       -- Annual Bonus Earnings
1923       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
1924       -- Tax Liability
1925       trc_TotLibAB := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_AnnBonErn);
1926       trc_LibFyAB  := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
1927       trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
1928       -- Check Bonus Provision
1929       IF trc_BonProYtd <> 0 THEN
1930          hr_utility.set_location('py_za_tx_01032006.DirCalc',12);
1931          -- Check Bonus Provision Frequency
1932          IF dbi_BP_TX_RCV = 'B' OR py_za_tx_utl_01032006.SitePeriod THEN
1933             hr_utility.set_location('py_za_tx_01032006.DirCalc',13);
1934             trc_LibFpAB :=
1935             trc_LibFyAB - (bal_TX_ON_BP_YTD
1936                           + trc_LibFpBP
1937                           + bal_TX_ON_AB_YTD);
1938          ELSE
1939             hr_utility.set_location('py_za_tx_01032006.DirCalc',14);
1940             trc_LibFpAB := 0;
1941          END IF;
1942       ELSE
1943          hr_utility.set_location('py_za_tx_01032006.DirCalc',15);
1944          trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
1945       END IF;
1946    ELSE
1947       hr_utility.set_location('py_za_tx_01032006.DirCalc',16);
1948       -- Set Cascade Figures and Refund
1949       trc_LibFpAB    := -1 * bal_TX_ON_AB_YTD;
1950       trc_LibFpABOvr := TRUE;
1951 
1952       IF dbi_BP_TX_RCV = 'A' AND py_za_tx_utl_01032006.SitePeriod THEN
1953          hr_utility.set_location('py_za_tx_01032006.DirCalc',17);
1954          trc_LibFpBP    := -1 * bal_TX_ON_BP_YTD;
1955          trc_LibFpBPOvr := TRUE;
1956          trc_LibFpAPOvr := TRUE;
1957 
1958          trc_AnnBonErn  := trc_TrvAllErn;
1959          trc_TotLibAB   := trc_TotLibTA;
1960       ELSE
1961          hr_utility.set_location('py_za_tx_01032006.DirCalc',18);
1962          trc_AnnBonErn  := trc_BonProErn;
1963          trc_TotLibAB   := trc_TotLibBP;
1964       END IF;
1965    END IF;
1966 
1967 -- Annual Payments
1968 --
1969    -- Ytd Annual Payments
1970    trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
1971    -- Skip the calculation if there is No Income
1972    IF trc_AnnPymYtd <> 0 THEN
1973       hr_utility.set_location('py_za_tx_01032006.DirCalc',19);
1974       -- Annual Payments Earnings
1975       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
1976       -- Tax Liability
1977       trc_TotLibAP := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_AnnPymErn);
1978       trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
1979       trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
1980       trc_LibFpAP  := trc_LibFyAP - bal_TX_ON_AP_YTD;
1981    ElSE
1982       hr_utility.set_location('py_za_tx_01032006.DirCalc',20);
1983       -- Set Cascade Figures and Refund
1984       trc_AnnPymErn  := trc_AnnBonErn;
1985       trc_TotLibAP   := trc_TotLibAB;
1986       trc_LibFpAP    := -1 * bal_TX_ON_AP_YTD;
1987       trc_LibFpAPOvr := TRUE;
1988    END IF;
1989 
1990 -- Public Office Allowance
1991 --
1992    -- Ytd Public Office Allowance
1993    trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
1994    -- Skip the calculation if there is No Income
1995    IF trc_PblOffYtd <> 0 THEN
1996       hr_utility.set_location('py_za_tx_01032006.DirCalc',21);
1997       -- Public Office Allowance Earnings
1998       trc_PblOffErn := trc_PblOffYtd + trc_AnnPymErn;
1999       -- Tax Liability
2000       trc_TotLibPO := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_PblOffErn);
2001       trc_LibFyPO  := trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP);
2002       trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
2003       trc_LibFpPO  := trc_LibFyPO - bal_TX_ON_PO_YTD;
2004    ELSE
2005       hr_utility.set_location('py_za_tx_01032006.DirCalc',22);
2006       -- Set Cascade Figures and Refund
2007       trc_PblOffErn  := trc_AnnPymErn;
2008       trc_TotLibPO   := trc_TotLibAP;
2009       trc_LibFpPO    := -1 * bal_TX_ON_PO_YTD;
2010       trc_LibFpPOOvr := TRUE;
2011    END IF;
2012 
2013 -- Net Pay Validation
2014 --
2015    py_za_tx_utl_01032006.ValidateTaxOns(p_Rf => TRUE);
2016 
2017    hr_utility.set_location('py_za_tx_01032006.DirCalc',23);
2018 
2019 -- Tax Percentage Indicator
2020 --
2021    IF dbi_TX_STA    IN ('D','P') THEN
2022       hr_utility.set_location('py_za_tx_01032006.DirCalc',24);
2023       trc_TxPercVal := dbi_TX_DIR_VAL;
2024    ELSIF dbi_TX_STA = 'E' THEN
2025       hr_utility.set_location('py_za_tx_01032006.DirCalc',25);
2029       trc_TxPercVal := glb_ZA_TMP_TX_RTE;
2026       trc_TxPercVal := glb_ZA_CC_TX_PRC;
2027    ELSIF dbi_TX_STA = 'F' THEN
2028       hr_utility.set_location('py_za_tx_01032006.DirCalc',26);
2030    ELSIF dbi_TX_STA = 'J' THEN
2031       hr_utility.set_location('py_za_tx_01032006.DirCalc',27);
2032       trc_TxPercVal := glb_ZA_PER_SERV_COMP_PERC;
2033    ELSIF dbi_TX_STA = 'K' THEN
2034       hr_utility.set_location('py_za_tx_01032006.DirCalc',28);
2035       trc_TxPercVal := glb_ZA_PER_SERV_TRST_PERC;
2036    ELSIF dbi_TX_STA = 'L' THEN
2037       hr_utility.set_location('py_za_tx_01032006.DirCalc',29);
2038       trc_TxPercVal := glb_ZA_PER_SERV_COMP_PERC;
2039    ELSE
2040       hr_utility.set_location('py_za_tx_01032006.DirCalc',30);
2041       trc_TxPercVal := 0;
2042    END IF;
2043 
2044    hr_utility.set_location('py_za_tx_01032006.DirCalc',31);
2045 
2046    -- Base Income
2047    WrtHrTrc('trc_BseErn:       '||to_char(trc_BseErn));
2048    WrtHrTrc('trc_TxbBseInc:    '||to_char(trc_TxbBseInc));
2049    WrtHrTrc('trc_TotLibBse:    '||to_char(trc_TotLibBse));
2050    -- Normal Income
2051    WrtHrTrc('trc_NorIncYtd:    '||to_char(trc_NorIncYtd));
2052    WrtHrTrc('trc_NorIncPtd:    '||to_char(trc_NorIncPtd));
2053    WrtHrTrc('trc_NorErn:       '||to_char(trc_NorErn));
2054    WrtHrTrc('trc_TxbNorInc:    '||to_char(trc_TxbNorInc));
2055    WrtHrTrc('trc_TotLibNI:     '||to_char(trc_TotLibNI));
2056    WrtHrTrc('trc_LibFyNI:      '||to_char(trc_LibFyNI));
2057    WrtHrTrc('trc_LibFpNI:      '||to_char(trc_LibFpNI));
2058    -- Fringe Benefits
2059    WrtHrTrc('trc_FrnBenYtd:    '||to_char(trc_FrnBenYtd));
2060    WrtHrTrc('trc_FrnBenPtd:    '||to_char(trc_FrnBenPtd));
2061    WrtHrTrc('trc_FrnBenErn:    '||to_char(trc_FrnBenErn));
2062    WrtHrTrc('trc_TxbFrnInc:    '||to_char(trc_TxbFrnInc));
2063    WrtHrTrc('trc_TotLibFB:     '||to_char(trc_TotLibFB));
2064    WrtHrTrc('trc_LibFyFB:      '||to_char(trc_LibFyFB));
2065    WrtHrTrc('trc_LibFpFB:      '||to_char(trc_LibFpFB));
2066    -- Travel Allowance
2067    WrtHrTrc('trc_TrvAllYtd:    '||to_char(trc_TrvAllYtd));
2068    WrtHrTrc('trc_TrvAllPtd:    '||to_char(trc_TrvAllPtd));
2069    WrtHrTrc('trc_TrvAllErn:    '||to_char(trc_TrvAllErn));
2070    WrtHrTrc('trc_TxbTrvInc:    '||to_char(trc_TxbTrvInc));
2071    WrtHrTrc('trc_TotLibTA:     '||to_char(trc_TotLibTA));
2072    WrtHrTrc('trc_LibFyTA:      '||to_char(trc_LibFyTA));
2073    WrtHrTrc('trc_LibFpTA:      '||to_char(trc_LibFpTA));
2074    -- Bonus Provision
2075    WrtHrTrc('trc_BonProYtd:    '||to_char(trc_BonProYtd));
2076    WrtHrTrc('trc_BonProPtd:    '||to_char(trc_BonProPtd));
2077    WrtHrTrc('trc_BonProErn:    '||to_char(trc_BonProErn));
2078    WrtHrTrc('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
2079    WrtHrTrc('trc_TotLibBP:     '||to_char(trc_TotLibBP));
2080    WrtHrTrc('trc_LibFyBP:      '||to_char(trc_LibFyBP));
2081    WrtHrTrc('trc_LibFpBP:      '||to_char(trc_LibFpBP));
2082    -- Annual Bonus
2083    WrtHrTrc('trc_AnnBonYtd:    '||to_char(trc_AnnBonYtd));
2084    WrtHrTrc('trc_AnnBonPtd:    '||to_char(trc_AnnBonPtd));
2085    WrtHrTrc('trc_AnnBonErn:    '||to_char(trc_AnnBonErn));
2086    WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
2087    WrtHrTrc('trc_TotLibAB:     '||to_char(trc_TotLibAB));
2088    WrtHrTrc('trc_LibFyAB:      '||to_char(trc_LibFyAB));
2089    WrtHrTrc('trc_LibFpAB:      '||to_char(trc_LibFpAB));
2090    -- Annual Payments
2091    WrtHrTrc('trc_AnnPymYtd:    '||to_char(trc_AnnPymYtd));
2092    WrtHrTrc('trc_AnnPymPtd:    '||to_char(trc_AnnPymPtd));
2093    WrtHrTrc('trc_AnnPymErn:    '||to_char(trc_AnnPymErn));
2094    WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2095    WrtHrTrc('trc_TotLibAP:     '||to_char(trc_TotLibAP));
2096    WrtHrTrc('trc_LibFyAP:      '||to_char(trc_LibFyAP));
2097    WrtHrTrc('trc_LibFpAP:      '||to_char(trc_LibFpAP));
2098    -- Pubilc Office Allowance
2099    WrtHrTrc('trc_PblOffYtd:    '||to_char(trc_PblOffYtd));
2100    WrtHrTrc('trc_PblOffPtd:    '||to_char(trc_PblOffPtd));
2101    WrtHrTrc('trc_PblOffErn:    '||to_char(trc_PblOffErn));
2102    WrtHrTrc('trc_TxbPblOffInc: '||to_char(trc_TxbPblOffInc));
2103    WrtHrTrc('trc_TotLibPO:     '||to_char(trc_TotLibPO));
2104    WrtHrTrc('trc_LibFyPO:      '||to_char(trc_LibFyPO));
2105    WrtHrTrc('trc_LibFpPO:      '||to_char(trc_LibFpPO));
2106 
2107 EXCEPTION
2108    WHEN OTHERS THEN
2109       IF xpt_Msg = 'No Error' THEN
2110          xpt_Msg := 'DirCalc: '||TO_CHAR(SQLCODE);
2111       END IF;
2112       RAISE xpt_E;
2113 END DirCalc;
2114 
2115 -------------------------------------------------------------------------------
2116 -- BasCalc                                                                   --
2117 -- Pre-Earnings Tax Calculation                                              --
2118 -------------------------------------------------------------------------------
2119 PROCEDURE BasCalc AS
2120 -- Variables
2121 --
2122    l_Np       BALANCE;
2123    l_65Year   DATE;
2124 
2125 BEGIN
2126 
2127    hr_utility.set_location('py_za_tx_01032006.BasCalc',1);
2128 -- Identify the Calculation
2129 --
2130    trc_CalTyp := 'BasCalc';
2131 
2132 -- Rebates
2133    py_za_tx_utl_01032006.SetRebates;
2134 
2135 -- Abatements
2136    py_za_tx_utl_01032006.Abatements;
2137 
2138 -- Deemed Remuneration
2139 --
2140    -- Run Deemed Remuneration
2141    trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
2142 
2143    -- Skip the calculation if there is No Income
2144    IF trc_DmdRmnRun <> 0 THEN
2148       -- Threshold Check
2145       hr_utility.set_location('py_za_tx_01032006.BasCalc',2);
2146       -- Taxable Deemed Remuneration
2147       trc_TxbDmdRmn := trc_DmdRmnRun;
2149       IF trc_TxbDmdRmn >= trc_Threshold THEN
2150          hr_utility.set_location('py_za_tx_01032006.BasCalc',3);
2151          -- Tax Liability
2152          trc_TotLibDR := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbDmdRmn);
2153       ELSE
2154          hr_utility.set_location('py_za_tx_01032006.BasCalc',4);
2155          trc_TotLibDR := 0;
2156       END IF;
2157    ELSE
2158       hr_utility.set_location('py_za_tx_01032006.BasCalc',5);
2159       trc_TotLibDR := 0;
2160    END IF;
2161 
2162    hr_utility.set_location('py_za_tx_01032006.BasCalc',6);
2163 
2164 -- Base Earnings
2165 --
2166    --Base Earnings
2167    trc_BseErn := bal_TOT_TXB_AB_PTD + bal_TOT_TXB_AP_PTD;
2168       -- Estimate Base Taxable Income
2169       trc_TxbBseInc := trc_BseErn * dbi_ZA_PAY_PRDS_PER_YR;
2170    -- Threshold Check
2171    IF trc_TxbBseInc >= trc_Threshold THEN
2172       hr_utility.set_location('py_za_tx_01032006.BasCalc',7);
2173       -- Tax Liability
2174       trc_TotLibBse := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbBseInc);
2175       trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
2176    ELSE
2177       hr_utility.set_location('py_za_tx_01032006.BasCalc',8);
2178       trc_TotLibBse := trc_TotLibDR;
2179    END IF;
2180 
2181    hr_utility.set_location('py_za_tx_01032006.BasCalc',9);
2182 
2183 -- Annual Bonus
2184 --
2185    -- Ytd Annual Bonus
2186    trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
2187    -- Skip the calculation if there is No Income
2188    IF trc_AnnBonYtd <> 0 THEN
2189       hr_utility.set_location('py_za_tx_01032006.BasCalc',10);
2190       -- Annual Bonus Earnings
2191       trc_AnnBonErn := trc_AnnBonYtd + trc_TxbBseInc;
2192       -- Taxable Annual Bonus Income
2193       trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
2194       -- Threshold Check
2195       IF trc_TxbAnnBonInc >= trc_Threshold THEN
2196          hr_utility.set_location('py_za_tx_01032006.BasCalc',11);
2197          -- Tax Liability
2198          trc_TotLibAB := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbAnnBonInc);
2199          trc_LibFyAB  := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
2200          trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
2201          -- Check Bonus Provision
2202          IF bal_BP_YTD <> 0 THEN
2203             hr_utility.set_location('py_za_tx_01032006.BasCalc',12);
2204             -- Check Bonus Provision Frequency
2205             IF dbi_BP_TX_RCV = 'A' THEN
2206                hr_utility.set_location('py_za_tx_01032006.BasCalc',13);
2207                trc_LibFpAB := 0;
2208             ELSE
2209                hr_utility.set_location('py_za_tx_01032006.BasCalc',14);
2210                trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD
2211                                             + bal_TX_ON_AB_YTD);
2212             END IF;
2213          ELSE
2214             hr_utility.set_location('py_za_tx_01032006.BasCalc',15);
2215             trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
2216          END IF;
2217       ELSE
2218          hr_utility.set_location('py_za_tx_01032006.BasCalc',16);
2219          trc_TotLibAB := trc_TotLibBse;
2220       END IF;
2221    ELSE
2222       hr_utility.set_location('py_za_tx_01032006.BasCalc',17);
2223       trc_TotLibAB     := trc_TotLibBse;
2224       trc_TxbAnnBonInc := trc_TxbBseInc;
2225    END IF;
2226 
2227    hr_utility.set_location('py_za_tx_01032006.BasCalc',18);
2228 
2229 -- Annual Payments
2230 --
2231    -- Ytd Annual Payments
2232    trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
2233    -- Skip the calculation if there is No Income
2234    IF trc_AnnPymYtd <> 0 THEN
2235       hr_utility.set_location('py_za_tx_01032006.BasCalc',19);
2236    -- Taxable Annual Payments Income
2237       trc_TxbAnnPymInc := trc_AnnPymYtd + trc_TxbAnnBonInc;
2238    -- Threshold Check
2239       IF trc_TxbAnnPymInc >= trc_Threshold THEN
2240          hr_utility.set_location('py_za_tx_01032006.BasCalc',20);
2241       -- Tax Liability
2242          trc_TotLibAP := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2243          trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
2244          trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
2245          trc_LibFpAP  := trc_LibFyAP - bal_TX_ON_AP_YTD;
2246       ELSE
2247          hr_utility.set_location('py_za_tx_01032006.BasCalc',21);
2248          NULL;
2249       END IF;
2250    ELSE
2251       hr_utility.set_location('py_za_tx_01032006.BasCalc',22);
2252       NULL;
2253    END IF;
2254 
2255 -- Net Pay Validation
2256 --
2257    py_za_tx_utl_01032006.ValidateTaxOns;
2258 
2259    -- Deemed Remuneration
2260    WrtHrTrc('trc_TxbDmdRmn:    '||to_char(trc_TxbDmdRmn));
2261    WrtHrTrc('trc_TotLibDR:     '||to_char(trc_TotLibDR));
2262    WrtHrTrc('trc_LibFyDR:      '||to_char(trc_LibFyDR));
2263    WrtHrTrc('trc_LibFpDR:      '||to_char(trc_LibFpDR));
2264    -- Base Income
2265    WrtHrTrc('trc_BseErn:       '||to_char(trc_BseErn));
2266    WrtHrTrc('trc_TxbBseInc:    '||to_char(trc_TxbBseInc));
2267    WrtHrTrc('trc_TotLibBse:    '||to_char(trc_TotLibBse));
2268    -- Normal Income
2269    WrtHrTrc('trc_NorIncYtd:    '||to_char(trc_NorIncYtd));
2270    WrtHrTrc('trc_NorIncPtd:    '||to_char(trc_NorIncPtd));
2274    WrtHrTrc('trc_LibFyNI:      '||to_char(trc_LibFyNI));
2271    WrtHrTrc('trc_NorErn:       '||to_char(trc_NorErn));
2272    WrtHrTrc('trc_TxbNorInc:    '||to_char(trc_TxbNorInc));
2273    WrtHrTrc('trc_TotLibNI:     '||to_char(trc_TotLibNI));
2275    WrtHrTrc('trc_LibFpNI:      '||to_char(trc_LibFpNI));
2276    -- Fringe Benefits
2277    WrtHrTrc('trc_FrnBenYtd:    '||to_char(trc_FrnBenYtd));
2278    WrtHrTrc('trc_FrnBenPtd:    '||to_char(trc_FrnBenPtd));
2279    WrtHrTrc('trc_FrnBenErn:    '||to_char(trc_FrnBenErn));
2280    WrtHrTrc('trc_TxbFrnInc:    '||to_char(trc_TxbFrnInc));
2281    WrtHrTrc('trc_TotLibFB:     '||to_char(trc_TotLibFB));
2282    WrtHrTrc('trc_LibFyFB:      '||to_char(trc_LibFyFB));
2283    WrtHrTrc('trc_LibFpFB:      '||to_char(trc_LibFpFB));
2284    -- Travel Allowance
2285    WrtHrTrc('trc_TrvAllYtd:    '||to_char(trc_TrvAllYtd));
2286    WrtHrTrc('trc_TrvAllPtd:    '||to_char(trc_TrvAllPtd));
2287    WrtHrTrc('trc_TrvAllErn:    '||to_char(trc_TrvAllErn));
2288    WrtHrTrc('trc_TxbTrvInc:    '||to_char(trc_TxbTrvInc));
2289    WrtHrTrc('trc_TotLibTA:     '||to_char(trc_TotLibTA));
2290    WrtHrTrc('trc_LibFyTA:      '||to_char(trc_LibFyTA));
2291    WrtHrTrc('trc_LibFpTA:      '||to_char(trc_LibFpTA));
2292    -- Bonus Provision
2293    WrtHrTrc('trc_BonProYtd:    '||to_char(trc_BonProYtd));
2294    WrtHrTrc('trc_BonProPtd:    '||to_char(trc_BonProPtd));
2295    WrtHrTrc('trc_BonProErn:    '||to_char(trc_BonProErn));
2296    WrtHrTrc('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
2297    WrtHrTrc('trc_TotLibBP:     '||to_char(trc_TotLibBP));
2298    WrtHrTrc('trc_LibFyBP:      '||to_char(trc_LibFyBP));
2299    WrtHrTrc('trc_LibFpBP:      '||to_char(trc_LibFpBP));
2300    -- Annual Bonus
2301    WrtHrTrc('trc_AnnBonYtd:    '||to_char(trc_AnnBonYtd));
2302    WrtHrTrc('trc_AnnBonPtd:    '||to_char(trc_AnnBonPtd));
2303    WrtHrTrc('trc_AnnBonErn:    '||to_char(trc_AnnBonErn));
2304    WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
2305    WrtHrTrc('trc_TotLibAB:     '||to_char(trc_TotLibAB));
2306    WrtHrTrc('trc_LibFyAB:      '||to_char(trc_LibFyAB));
2307    WrtHrTrc('trc_LibFpAB:      '||to_char(trc_LibFpAB));
2308    -- Annual Payments
2309    WrtHrTrc('trc_AnnPymYtd:    '||to_char(trc_AnnPymYtd));
2310    WrtHrTrc('trc_AnnPymPtd:    '||to_char(trc_AnnPymPtd));
2311    WrtHrTrc('trc_AnnPymErn:    '||to_char(trc_AnnPymErn));
2312    WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2313    WrtHrTrc('trc_TotLibAP:     '||to_char(trc_TotLibAP));
2314    WrtHrTrc('trc_LibFyAP:      '||to_char(trc_LibFyAP));
2315    WrtHrTrc('trc_LibFpAP:      '||to_char(trc_LibFpAP));
2316    -- Pubilc Office Allowance
2317    WrtHrTrc('trc_PblOffYtd:    '||to_char(trc_PblOffYtd));
2318    WrtHrTrc('trc_PblOffPtd:    '||to_char(trc_PblOffPtd));
2319    WrtHrTrc('trc_PblOffErn:    '||to_char(trc_PblOffErn));
2320    WrtHrTrc('trc_LibFyPO:      '||to_char(trc_LibFyPO));
2321    WrtHrTrc('trc_LibFpPO:      '||to_char(trc_LibFpPO));
2322 
2323 EXCEPTION
2324    WHEN OTHERS THEN
2325       IF xpt_Msg = 'No Error' THEN
2326          xpt_Msg := 'BasCalc: '||TO_CHAR(SQLCODE);
2327       END IF;
2328       RAISE xpt_E;
2329 END BasCalc;
2330 
2331 -------------------------------------------------------------------------------
2332 -- CalCalc                                                                   --
2333 -- Pre-Earnings Tax Calculation                                              --
2334 -------------------------------------------------------------------------------
2335 PROCEDURE CalCalc AS
2336 -- Variables
2337 --
2338    l_Np       BALANCE;
2339 
2340 BEGIN
2341 
2342    hr_utility.set_location('py_za_tx_01032006.CalCalc',1);
2343 -- Identify the calculation
2344 --
2345    trc_CalTyp := 'CalCalc';
2346 
2347 -- Update Global Balance Values with correct TAXABLE values
2348 --
2349    py_za_tx_utl_01032006.TrvAll;
2350 
2351    hr_utility.set_location('py_za_tx_01032006.CalCalc',2);
2352 
2353 -- Calendar Ytd Taxable Income
2354 --
2355    trc_TxbIncYtd := ( bal_TOT_TXB_NI_CYTD
2356                     + bal_TOT_TXB_FB_CYTD
2357                     + bal_TOT_TXB_TA_CYTD );
2358 -- If there is no Income Execute the Base calculation
2359 --
2360    IF trc_TxbIncYtd = 0 THEN
2361       hr_utility.set_location('py_za_tx_01032006.CalCalc',3);
2362       BasCalc;
2363    ELSE -- continue CalCalc
2364       hr_utility.set_location('py_za_tx_01032006.CalCalc',4);
2365    -- Site Factor
2366    --
2367       trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032006.DaysWorked;
2368 
2369    -- Rebates
2370       py_za_tx_utl_01032006.SetRebates;
2371 
2372    -- Abatements
2373       py_za_tx_utl_01032006.Abatements;
2374 
2375       hr_utility.set_location('py_za_tx_01032006.CalCalc',5);
2376 
2377    -- Deemed Remuneration
2378    --
2379       -- Run Deemed Remuneration
2380       trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
2381 
2382       -- Skip the calculation if there is No Income
2383       IF trc_DmdRmnRun <> 0 THEN
2384          hr_utility.set_location('py_za_tx_01032006.CalCalc',6);
2385          -- Taxable Deemed Remuneration
2386          trc_TxbDmdRmn := trc_DmdRmnRun;
2387          -- Threshold Check
2388          IF trc_TxbDmdRmn >= trc_Threshold THEN
2389             hr_utility.set_location('py_za_tx_01032006.CalCalc',7);
2390          -- Tax Liability
2391             trc_TotLibDR := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbDmdRmn);
2392          ELSE
2396       ELSE
2393             hr_utility.set_location('py_za_tx_01032006.CalCalc',8);
2394             trc_TotLibDR := 0;
2395          END IF;
2397          hr_utility.set_location('py_za_tx_01032006.CalCalc',9);
2398          trc_TotLibDR := 0;
2399       END IF;
2400 
2401       hr_utility.set_location('py_za_tx_01032006.CalCalc',10);
2402 
2403    -- Base Earnings
2404    --
2405       -- Base Earnings
2406       trc_BseErn := trc_TxbIncYtd * trc_SitFactor;
2407       -- Taxable Base Income
2408       trc_TxbBseInc := trc_BseErn - trc_PerTotAbm;
2409       -- Threshold Check
2410       IF trc_TxbBseInc >= trc_Threshold THEN
2411          hr_utility.set_location('py_za_tx_01032006.CalCalc',11);
2412          -- Tax Liability
2413          trc_TotLibBse := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbBseInc);
2414          trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
2415       ELSE
2416          hr_utility.set_location('py_za_tx_01032006.CalCalc',12);
2417          trc_TotLibBse := trc_TotLibDR;
2418       END IF;
2419 
2420       hr_utility.set_location('py_za_tx_01032006.CalCalc',13);
2421 
2422    -- Annual Bonus
2423    --
2424       -- Ytd Annual Bonus
2425       trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
2426       -- Skip the calculation if there is No Income
2427       IF trc_AnnBonYtd <> 0 THEN
2428          hr_utility.set_location('py_za_tx_01032006.CalCalc',14);
2429          -- Annual Bonus Earnings
2430          trc_AnnBonErn := trc_AnnBonYtd + trc_BseErn;
2431          -- Taxable Annual Bonus Income
2432          trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
2433          -- Threshold Check
2434          IF trc_TxbAnnBonInc >= trc_Threshold THEN
2435             hr_utility.set_location('py_za_tx_01032006.CalCalc',15);
2436             -- Tax Liability
2437             trc_TotLibAB := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbAnnBonInc);
2438             trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
2439             trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
2440             -- Check Bonus Provision
2441             IF bal_BP_YTD <> 0 THEN
2442                hr_utility.set_location('py_za_tx_01032006.CalCalc',16);
2443                -- Check Bonus Provision Frequency
2444                IF dbi_BP_TX_RCV = 'A' THEN
2445                   hr_utility.set_location('py_za_tx_01032006.CalCalc',17);
2446                   trc_LibFpAB := 0;
2447                ELSE
2448                   hr_utility.set_location('py_za_tx_01032006.CalCalc',18);
2449                   trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD
2450                                                + bal_TX_ON_AB_YTD);
2451                END IF;
2452             ELSE
2453                hr_utility.set_location('py_za_tx_01032006.CalCalc',19);
2454                trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
2455             END IF;
2456          ELSE
2457             hr_utility.set_location('py_za_tx_01032006.CalCalc',20);
2458             trc_TotLibAB := trc_TotLibBse;
2459          END IF;
2460       ELSE
2461          hr_utility.set_location('py_za_tx_01032006.CalCalc',21);
2462          trc_AnnBonErn    := trc_BseErn;
2463          trc_TxbAnnBonInc := trc_TxbBseInc;
2464          trc_TotLibAB     := trc_TotLibBse;
2465       END IF;
2466 
2467       hr_utility.set_location('py_za_tx_01032006.CalCalc',22);
2468 
2469    -- Annual Payments
2470    --
2471       -- Ytd Annual Payments
2472       trc_AnnPymYtd := bal_TOT_TXB_AP_YTD ;
2473       -- Skip the calculation if there is No Income
2474       IF trc_AnnPymYtd <> 0 THEN
2475          hr_utility.set_location('py_za_tx_01032006.CalCalc',23);
2476          -- Annual Payments Earnings
2477          trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
2478          -- Taxable Annual Payments Income
2479          trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
2480          -- Threshold Check
2481          IF trc_TxbAnnPymInc >= trc_Threshold THEN
2482             hr_utility.set_location('py_za_tx_01032006.CalCalc',24);
2483             -- Tax Liability
2484             trc_TotLibAP := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2485             trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
2486             trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
2487             trc_LibFpAP  := trc_LibFyAP - bal_TX_ON_AP_YTD;
2488          ELSE
2489             hr_utility.set_location('py_za_tx_01032006.CalCalc',25);
2490             trc_TotLibAP := trc_TotLibAB;
2491          END IF;
2492       ELSE
2493          hr_utility.set_location('py_za_tx_01032006.CalCalc',26);
2494          trc_AnnPymErn    := trc_AnnBonErn;
2495          trc_TxbAnnPymInc := trc_TxbAnnBonInc;
2496          trc_TotLibAP     := trc_TotLibAB;
2497       END IF;
2498 
2499    -- Net pay Validation
2500    --
2501       py_za_tx_utl_01032006.ValidateTaxOns;
2502 
2503       -- Deemed Remuneration
2504       WrtHrTrc('trc_TxbDmdRmn:    '||to_char(trc_TxbDmdRmn));
2505       WrtHrTrc('trc_TotLibDR:     '||to_char(trc_TotLibDR));
2506       WrtHrTrc('trc_LibFyDR:      '||to_char(trc_LibFyDR));
2507       WrtHrTrc('trc_LibFpDR:      '||to_char(trc_LibFpDR));
2508       -- Base Income
2509       WrtHrTrc('trc_BseErn:       '||to_char(trc_BseErn));
2510       WrtHrTrc('trc_TxbBseInc:    '||to_char(trc_TxbBseInc));
2511       WrtHrTrc('trc_TotLibBse:    '||to_char(trc_TotLibBse));
2512       -- Normal Income
2516       WrtHrTrc('trc_TxbNorInc:    '||to_char(trc_TxbNorInc));
2513       WrtHrTrc('trc_NorIncYtd:    '||to_char(trc_NorIncYtd));
2514       WrtHrTrc('trc_NorIncPtd:    '||to_char(trc_NorIncPtd));
2515       WrtHrTrc('trc_NorErn:       '||to_char(trc_NorErn));
2517       WrtHrTrc('trc_TotLibNI:     '||to_char(trc_TotLibNI));
2518       WrtHrTrc('trc_LibFyNI:      '||to_char(trc_LibFyNI));
2519       WrtHrTrc('trc_LibFpNI:      '||to_char(trc_LibFpNI));
2520       -- Fringe Benefits
2521       WrtHrTrc('trc_FrnBenYtd:    '||to_char(trc_FrnBenYtd));
2522       WrtHrTrc('trc_FrnBenPtd:    '||to_char(trc_FrnBenPtd));
2523       WrtHrTrc('trc_FrnBenErn:    '||to_char(trc_FrnBenErn));
2524       WrtHrTrc('trc_TxbFrnInc:    '||to_char(trc_TxbFrnInc));
2525       WrtHrTrc('trc_TotLibFB:     '||to_char(trc_TotLibFB));
2526       WrtHrTrc('trc_LibFyFB:      '||to_char(trc_LibFyFB));
2527       WrtHrTrc('trc_LibFpFB:      '||to_char(trc_LibFpFB));
2528       -- Travel Allowance
2529       WrtHrTrc('trc_TrvAllYtd:    '||to_char(trc_TrvAllYtd));
2530       WrtHrTrc('trc_TrvAllPtd:    '||to_char(trc_TrvAllPtd));
2531       WrtHrTrc('trc_TrvAllErn:    '||to_char(trc_TrvAllErn));
2532       WrtHrTrc('trc_TxbTrvInc:    '||to_char(trc_TxbTrvInc));
2533       WrtHrTrc('trc_TotLibTA:     '||to_char(trc_TotLibTA));
2534       WrtHrTrc('trc_LibFyTA:      '||to_char(trc_LibFyTA));
2535       WrtHrTrc('trc_LibFpTA:      '||to_char(trc_LibFpTA));
2536       -- Bonus Provision
2537       WrtHrTrc('trc_BonProYtd:    '||to_char(trc_BonProYtd));
2538       WrtHrTrc('trc_BonProPtd:    '||to_char(trc_BonProPtd));
2539       WrtHrTrc('trc_BonProErn:    '||to_char(trc_BonProErn));
2540       WrtHrTrc('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
2541       WrtHrTrc('trc_TotLibBP:     '||to_char(trc_TotLibBP));
2542       WrtHrTrc('trc_LibFyBP:      '||to_char(trc_LibFyBP));
2543       WrtHrTrc('trc_LibFpBP:      '||to_char(trc_LibFpBP));
2544       -- Annual Bonus
2545       WrtHrTrc('trc_AnnBonYtd:    '||to_char(trc_AnnBonYtd));
2546       WrtHrTrc('trc_AnnBonPtd:    '||to_char(trc_AnnBonPtd));
2547       WrtHrTrc('trc_AnnBonErn:    '||to_char(trc_AnnBonErn));
2548       WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
2549       WrtHrTrc('trc_TotLibAB:     '||to_char(trc_TotLibAB));
2550       WrtHrTrc('trc_LibFyAB:      '||to_char(trc_LibFyAB));
2551       WrtHrTrc('trc_LibFpAB:      '||to_char(trc_LibFpAB));
2552       -- Annual Payments
2553       WrtHrTrc('trc_AnnPymYtd:    '||to_char(trc_AnnPymYtd));
2554       WrtHrTrc('trc_AnnPymPtd:    '||to_char(trc_AnnPymPtd));
2555       WrtHrTrc('trc_AnnPymErn:    '||to_char(trc_AnnPymErn));
2556       WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2557       WrtHrTrc('trc_TotLibAP:     '||to_char(trc_TotLibAP));
2558       WrtHrTrc('trc_LibFyAP:      '||to_char(trc_LibFyAP));
2559       WrtHrTrc('trc_LibFpAP:      '||to_char(trc_LibFpAP));
2560       -- Pubilc Office Allowance
2561       WrtHrTrc('trc_PblOffYtd:    '||to_char(trc_PblOffYtd));
2562       WrtHrTrc('trc_PblOffPtd:    '||to_char(trc_PblOffPtd));
2563       WrtHrTrc('trc_PblOffErn:    '||to_char(trc_PblOffErn));
2564       WrtHrTrc('trc_LibFyPO:      '||to_char(trc_LibFyPO));
2565       WrtHrTrc('trc_LibFpPO:      '||to_char(trc_LibFpPO));
2566 
2567    END IF;
2568 
2569    hr_utility.set_location('py_za_tx_01032006.CalCalc',27);
2570 
2571 EXCEPTION
2572    WHEN OTHERS THEN
2573       IF xpt_Msg = 'No Error' THEN
2574          xpt_Msg := 'CalCalc: '||TO_CHAR(SQLCODE);
2575       END IF;
2576       RAISE xpt_E;
2577 END CalCalc;
2578 -------------------------------------------------------------------------------
2579 -- YtdCalc                                                                   --
2580 -- Pre-Earnings Tax Calculation                                              --
2581 -------------------------------------------------------------------------------
2582 PROCEDURE YtdCalc AS
2583 -- Variables
2584 --
2585    l_Np       BALANCE;
2586 
2587 BEGIN
2588 
2589    hr_utility.set_location('py_za_tx_01032006.YtdCalc',1);
2590 -- Identify the calculation
2591 --
2592    trc_CalTyp := 'YtdCalc';
2593 
2594 -- Update Global Balance Values with correct TAXABLE values
2595    py_za_tx_utl_01032006.TrvAll;
2596 
2597    hr_utility.set_location('py_za_tx_01032006.YtdCalc',2);
2598 
2599 -- Ytd Taxable Income
2600    trc_TxbIncYtd :=
2601       ( bal_TOT_TXB_NI_YTD
2602       + bal_TOT_TXB_FB_YTD
2603       + bal_TOT_TXB_TA_YTD
2604       + bal_BP_YTD
2605       );
2606 -- If the Ytd Taxable Income = 0, execute the CalCalc
2607    IF trc_TxbIncYtd = 0 THEN
2608       hr_utility.set_location('py_za_tx_01032006.YtdCalc',3);
2609       CalCalc;
2610    ELSE --Continue YtdCalc
2611       hr_utility.set_location('py_za_tx_01032006.YtdCalc',4);
2612    -- Site Factor
2613       trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032006.DaysWorked;
2614 
2615    -- Rebates
2616       py_za_tx_utl_01032006.SetRebates;
2617 
2618    -- Abatements
2619       py_za_tx_utl_01032006.Abatements;
2620 
2621       hr_utility.set_location('py_za_tx_01032006.YtdCalc',5);
2622 
2623    -- Deemed Remuneration
2624    --
2625       -- Run Deemed Remuneration
2626       trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
2627 
2628       -- Skip the calculation if there is No Income
2629       IF trc_DmdRmnRun <> 0 THEN
2630          hr_utility.set_location('py_za_tx_01032006.YtdCalc',6);
2631          -- Taxable Deemed Remuneration
2632          trc_TxbDmdRmn := trc_DmdRmnRun;
2633          -- Threshold Check
2637             trc_TotLibDR := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbDmdRmn);
2634          IF trc_TxbDmdRmn >= trc_Threshold THEN
2635             hr_utility.set_location('py_za_tx_01032006.YtdCalc',7);
2636             -- Tax Liability
2638          ELSE
2639             hr_utility.set_location('py_za_tx_01032006.YtdCalc',8);
2640             trc_TotLibDR := 0;
2641          END IF;
2642       ELSE
2643          hr_utility.set_location('py_za_tx_01032006.YtdCalc',9);
2644          trc_TotLibDR := 0;
2645       END IF;
2646 
2647       hr_utility.set_location('py_za_tx_01032006.YtdCalc',10);
2648 
2649    -- Base Earnings
2650    --
2651       -- Base Earnings
2652       trc_BseErn := trc_TxbIncYtd * trc_SitFactor;
2653       -- Taxable Base Income
2654       trc_TxbBseInc := trc_BseErn - trc_PerTotAbm;
2655       -- Threshold Check
2656       IF trc_TxbBseInc >= trc_Threshold THEN
2657          hr_utility.set_location('py_za_tx_01032006.YtdCalc',11);
2658          -- Tax Liability
2659          trc_TotLibBse := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbBseInc);
2660          trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
2661       ELSE
2662          hr_utility.set_location('py_za_tx_01032006.YtdCalc',12);
2663          trc_TotLibBse := trc_TotLibDR;
2664       END IF;
2665 
2666       hr_utility.set_location('py_za_tx_01032006.YtdCalc',13);
2667 
2668    -- Annual Bonus
2669    --
2670       -- Ytd Annual Bonus
2671       trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
2672       -- Skip the calculation if there is No Income
2673       IF trc_AnnBonYtd <> 0 THEN
2674          hr_utility.set_location('py_za_tx_01032006.YtdCalc',14);
2675          -- Annual Bonus Earnings
2676          trc_AnnBonErn := trc_AnnBonYtd + trc_BseErn;
2677          -- Taxable Annual Bonus Income
2678          trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
2679          -- Threshold Check
2680          IF trc_TxbAnnBonInc >= trc_Threshold THEN
2681             hr_utility.set_location('py_za_tx_01032006.YtdCalc',15);
2682             -- Tax Liability
2683             trc_TotLibAB := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbAnnBonInc);
2684             trc_LibFyAB  := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
2685             trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
2686             -- Check Bonus Provision
2687             IF bal_BP_YTD <> 0 THEN
2688                hr_utility.set_location('py_za_tx_01032006.YtdCalc',16);
2689                -- Check Bonus Provision Frequency
2690                IF dbi_BP_TX_RCV = 'A' THEN
2691                   hr_utility.set_location('py_za_tx_01032006.YtdCalc',17);
2692                   trc_LibFpAB := 0;
2693                ELSE
2694                   hr_utility.set_location('py_za_tx_01032006.YtdCalc',18);
2695                   trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD
2696                                                + bal_TX_ON_AB_YTD);
2697                END IF;
2698             ELSE
2699                hr_utility.set_location('py_za_tx_01032006.YtdCalc',19);
2700                trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
2701             END IF;
2702          ELSE
2703             hr_utility.set_location('py_za_tx_01032006.YtdCalc',20);
2704             trc_TotLibAB := trc_TotLibBse;
2705          END IF;
2706       ELSE
2707          hr_utility.set_location('py_za_tx_01032006.YtdCalc',21);
2708          trc_AnnBonErn    := trc_BseErn;
2709          trc_TxbAnnBonInc := trc_TxbBseInc;
2710          trc_TotLibAB     := trc_TotLibBse;
2711       END IF;
2712 
2713       hr_utility.set_location('py_za_tx_01032006.YtdCalc',22);
2714 
2715    -- Annual Payments
2716    --
2717       -- Ytd Annual Payments
2718       trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
2719       -- Skip the calculation if there is No Income
2720       IF trc_AnnPymYtd <> 0 THEN
2721          hr_utility.set_location('py_za_tx_01032006.YtdCalc',23);
2722          -- Annual Payments Earnings
2723          trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
2724          -- Taxable Annual Payments Income
2725          trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
2726          -- Threshold Check
2727          IF trc_TxbAnnPymInc >= trc_Threshold THEN
2728             hr_utility.set_location('py_za_tx_01032006.YtdCalc',24);
2729             -- Tax Liability
2730             trc_TotLibAP := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2731             trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
2732             trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
2733             trc_LibFpAP  := trc_LibFyAP - bal_TX_ON_AP_YTD;
2734          ELSE
2735             hr_utility.set_location('py_za_tx_01032006.YtdCalc',25);
2736             trc_TotLibAP := trc_TotLibAB;
2737          END IF;
2738       ELSE
2739          hr_utility.set_location('py_za_tx_01032006.YtdCalc',26);
2740          trc_AnnPymErn    := trc_AnnBonErn;
2741          trc_TxbAnnPymInc := trc_TxbAnnBonInc;
2742          trc_TotLibAP     := trc_TotLibAB;
2743       END IF;
2744 
2745    -- Net Pay validation
2746    --
2747       py_za_tx_utl_01032006.ValidateTaxOns;
2748 
2749       hr_utility.set_location('py_za_tx_01032006.YtdCalc',27);
2750 
2751       -- Deemed Remuneration
2752       WrtHrTrc('trc_TxbDmdRmn:    '||to_char(trc_TxbDmdRmn));
2753       WrtHrTrc('trc_TotLibDR:     '||to_char(trc_TotLibDR));
2754       WrtHrTrc('trc_LibFyDR:      '||to_char(trc_LibFyDR));
2758       WrtHrTrc('trc_TxbBseInc:    '||to_char(trc_TxbBseInc));
2755       WrtHrTrc('trc_LibFpDR:      '||to_char(trc_LibFpDR));
2756       -- Base Income
2757       WrtHrTrc('trc_BseErn:       '||to_char(trc_BseErn));
2759       WrtHrTrc('trc_TotLibBse:    '||to_char(trc_TotLibBse));
2760       -- Normal Income
2761       WrtHrTrc('trc_NorIncYtd:    '||to_char(trc_NorIncYtd));
2762       WrtHrTrc('trc_NorIncPtd:    '||to_char(trc_NorIncPtd));
2763       WrtHrTrc('trc_NorErn:       '||to_char(trc_NorErn));
2764       WrtHrTrc('trc_TxbNorInc:    '||to_char(trc_TxbNorInc));
2765       WrtHrTrc('trc_TotLibNI:     '||to_char(trc_TotLibNI));
2766       WrtHrTrc('trc_LibFyNI:      '||to_char(trc_LibFyNI));
2767       WrtHrTrc('trc_LibFpNI:      '||to_char(trc_LibFpNI));
2768       -- Fringe Benefits
2769       WrtHrTrc('trc_FrnBenYtd:    '||to_char(trc_FrnBenYtd));
2770       WrtHrTrc('trc_FrnBenPtd:    '||to_char(trc_FrnBenPtd));
2771       WrtHrTrc('trc_FrnBenErn:    '||to_char(trc_FrnBenErn));
2772       WrtHrTrc('trc_TxbFrnInc:    '||to_char(trc_TxbFrnInc));
2773       WrtHrTrc('trc_TotLibFB:     '||to_char(trc_TotLibFB));
2774       WrtHrTrc('trc_LibFyFB:      '||to_char(trc_LibFyFB));
2775       WrtHrTrc('trc_LibFpFB:      '||to_char(trc_LibFpFB));
2776       -- Travel Allowance
2777       WrtHrTrc('trc_TrvAllYtd:    '||to_char(trc_TrvAllYtd));
2778       WrtHrTrc('trc_TrvAllPtd:    '||to_char(trc_TrvAllPtd));
2779       WrtHrTrc('trc_TrvAllErn:    '||to_char(trc_TrvAllErn));
2780       WrtHrTrc('trc_TxbTrvInc:    '||to_char(trc_TxbTrvInc));
2781       WrtHrTrc('trc_TotLibTA:     '||to_char(trc_TotLibTA));
2782       WrtHrTrc('trc_LibFyTA:      '||to_char(trc_LibFyTA));
2783       WrtHrTrc('trc_LibFpTA:      '||to_char(trc_LibFpTA));
2784       -- Bonus Provision
2785       WrtHrTrc('trc_BonProYtd:    '||to_char(trc_BonProYtd));
2786       WrtHrTrc('trc_BonProPtd:    '||to_char(trc_BonProPtd));
2787       WrtHrTrc('trc_BonProErn:    '||to_char(trc_BonProErn));
2788       WrtHrTrc('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
2789       WrtHrTrc('trc_TotLibBP:     '||to_char(trc_TotLibBP));
2790       WrtHrTrc('trc_LibFyBP:      '||to_char(trc_LibFyBP));
2791       WrtHrTrc('trc_LibFpBP:      '||to_char(trc_LibFpBP));
2792       -- Annual Bonus
2793       WrtHrTrc('trc_AnnBonYtd:    '||to_char(trc_AnnBonYtd));
2794       WrtHrTrc('trc_AnnBonPtd:    '||to_char(trc_AnnBonPtd));
2795       WrtHrTrc('trc_AnnBonErn:    '||to_char(trc_AnnBonErn));
2796       WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
2797       WrtHrTrc('trc_TotLibAB:     '||to_char(trc_TotLibAB));
2798       WrtHrTrc('trc_LibFyAB:      '||to_char(trc_LibFyAB));
2799       WrtHrTrc('trc_LibFpAB:      '||to_char(trc_LibFpAB));
2800       -- Annual Payments
2801       WrtHrTrc('trc_AnnPymYtd:    '||to_char(trc_AnnPymYtd));
2802       WrtHrTrc('trc_AnnPymPtd:    '||to_char(trc_AnnPymPtd));
2803       WrtHrTrc('trc_AnnPymErn:    '||to_char(trc_AnnPymErn));
2804       WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2805       WrtHrTrc('trc_TotLibAP:     '||to_char(trc_TotLibAP));
2806       WrtHrTrc('trc_LibFyAP:      '||to_char(trc_LibFyAP));
2807       WrtHrTrc('trc_LibFpAP:      '||to_char(trc_LibFpAP));
2808       -- Pubilc Office Allowance
2809       WrtHrTrc('trc_PblOffYtd:    '||to_char(trc_PblOffYtd));
2810       WrtHrTrc('trc_PblOffPtd:    '||to_char(trc_PblOffPtd));
2811       WrtHrTrc('trc_PblOffErn:    '||to_char(trc_PblOffErn));
2812       WrtHrTrc('trc_LibFyPO:      '||to_char(trc_LibFyPO));
2813       WrtHrTrc('trc_LibFpPO:      '||to_char(trc_LibFpPO));
2814 
2815    END IF;
2816 
2817 EXCEPTION
2818    WHEN OTHERS THEN
2819       IF xpt_Msg = 'No Error' THEN
2820          xpt_Msg := 'YtdCalc: '||TO_CHAR(SQLCODE);
2821       END IF;
2822       RAISE xpt_E;
2823 END YtdCalc;
2824 -------------------------------------------------------------------------------
2825 -- NorCalc                                                                   --
2826 -- Main Tax Calculation for Periodic Income                                  --
2827 -------------------------------------------------------------------------------
2828 PROCEDURE NorCalc AS
2829 -- Variables
2830 --
2831    l_Np       BALANCE DEFAULT 0;
2832 
2833 BEGIN
2834 
2835    hr_utility.set_location('py_za_tx_01032006.NorCalc',1);
2836 -- Identify the calculation
2837 --
2838    trc_CalTyp := 'NorCalc';
2839 
2840 -- Update Global Balance Values with correct TAXABLE values
2841 --
2842    bal_TOT_TXB_TA_PTD  := bal_TOT_TXB_TA_PTD * glb_ZA_TRV_ALL_TX_PRC / 100;
2843 
2844    py_za_tx_utl_01032006.TrvAll;
2845 
2846    hr_utility.set_location('py_za_tx_01032006.NorCalc',2);
2847 
2848    bal_TOT_TXB_PO_PTD  := bal_TOT_TXB_PO_PTD * glb_ZA_PBL_TX_PRC / 100;
2849    bal_TOT_TXB_PO_YTD  := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
2850 
2851 -- PTD Taxable Income
2852 --
2853    trc_TxbIncPtd :=
2854       ( bal_TOT_TXB_NI_PTD
2855       + bal_TOT_TXB_FB_PTD
2856       + bal_TOT_TXB_TA_PTD
2857       + bal_BP_PTD
2858       );
2859 -- Period Factor
2860    py_za_tx_utl_01032006.PeriodFactor;
2861 
2862 -- Possible Periods Factor
2863    py_za_tx_utl_01032006.PossiblePeriodsFactor;
2864 
2865 -- Rebates
2866    py_za_tx_utl_01032006.SetRebates;
2867 
2868 -- Abatements
2869    py_za_tx_utl_01032006.Abatements;
2870 
2871    hr_utility.set_location('py_za_tx_01032006.NorCalc',3);
2872 
2873 -- Deemed Remuneration
2874 --
2875    -- Run Deemed Remuneration
2876    trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
2880       -- Taxable Deemed Remuneration
2877    -- Skip the calculation if there is No Income
2878    IF trc_DmdRmnRun <> 0 THEN
2879       hr_utility.set_location('py_za_tx_01032006.NorCalc',4);
2881       trc_TxbDmdRmn := trc_DmdRmnRun;
2882       -- Threshold Check
2883       IF trc_TxbDmdRmn >= trc_Threshold THEN
2884          hr_utility.set_location('py_za_tx_01032006.NorCalc',5);
2885          -- Tax Liability
2886          trc_TotLibDR := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbDmdRmn);
2887          trc_LibFyDR  := trc_TotLibDR - 0;
2888          trc_TotLibDR := greatest(trc_TotLibDR,0);
2889          -- DeAnnualise
2890          trc_LibFpDR := py_za_tx_utl_01032006.DeAnnualise
2891                            ( p_Liab    => trc_LibFyDR
2892                            , p_TxOnYtd => bal_TX_ON_DR_YTD
2893                            , p_TxOnPtd => bal_TX_ON_DR_PTD
2894                            );
2895       ELSE
2896          hr_utility.set_location('py_za_tx_01032006.NorCalc',6);
2897          -- Set Cascade Figures and Refund
2898          trc_TotLibDR   := 0;
2899          trc_LibFpDR    := -1 * bal_TX_ON_DR_YTD;
2900          trc_LibFpDROvr := TRUE;
2901       END IF;
2902    ELSE
2903       hr_utility.set_location('py_za_tx_01032006.NorCalc',7);
2904       -- Set Cascade Figures and Refund
2905       trc_TxbDmdRmn  := 0;
2906       trc_TotLibDR   := 0;
2907       trc_LibFpDR    := -1 * bal_TX_ON_DR_YTD;
2908       trc_LibFpDROvr := TRUE;
2909    END IF;
2910 
2911 -- Normal Income
2912 --
2913    -- Ytd Normal Income
2914    trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
2915    -- Skip the calculation if there is No Income
2916    IF trc_NorIncYtd <> 0 THEN
2917       hr_utility.set_location('py_za_tx_01032006.NorCalc',8);
2918 
2919       -- Annualise Normal Income
2920       trc_NorErn := py_za_tx_utl_01032006.Annualise
2921          (p_YtdInc => trc_NorIncYtd
2922          ,p_PtdInc => trc_NorIncPtd
2923          );
2924       -- Taxable Normal Income
2925       trc_TxbNorInc := trc_NorErn - trc_PerTotAbm;
2926       -- Threshold Check
2927       IF trc_TxbNorInc >= trc_Threshold THEN
2928          hr_utility.set_location('py_za_tx_01032006.NorCalc',9);
2929          -- Tax Liability
2930          trc_TotLibNI := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbNorInc);
2931          trc_LibFyNI  := trc_TotLibNI - least(trc_TotLibNI,trc_TotLibDR);
2932          trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibDR);
2933          -- DeAnnualise
2934          trc_LibFpNI := py_za_tx_utl_01032006.DeAnnualise
2935                            ( p_Liab    => trc_LibFyNI
2936                            , p_TxOnYtd => bal_TX_ON_NI_YTD
2937                            , p_TxOnPtd => bal_TX_ON_NI_PTD
2938                            );
2939       ELSE
2940          hr_utility.set_location('py_za_tx_01032006.NorCalc',10);
2941          -- Set Cascade Figures and Refund
2942          trc_TotLibNI   := trc_TotLibDR;
2943          trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
2944          trc_LibFpNIOvr := TRUE;
2945       END IF;
2946    ELSE
2947       hr_utility.set_location('py_za_tx_01032006.NorCalc',11);
2948       -- Set Cascade Figures and Refund
2949       trc_NorErn     := 0;
2950       trc_TxbNorInc  := 0;
2951       trc_TotLibNI   := trc_TotLibDR;
2952       trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
2953       trc_LibFpNIOvr := TRUE;
2954    END IF;
2955 
2956 -- Fringe Benefits
2957 --
2958    -- Ytd Fringe Benefits
2959    trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
2960    -- Skip the calculation if there is No Income
2961    IF trc_FrnBenYtd <> 0 THEN
2962       hr_utility.set_location('py_za_tx_01032006.NorCalc',12);
2963 
2964       -- Annualise Fringe Benefits
2965       trc_FrnBenErn := py_za_tx_utl_01032006.Annualise
2966                           ( p_YtdInc => trc_FrnBenYtd
2967                           , p_PtdInc => trc_FrnBenPtd
2968                           ) + trc_NorErn;
2969       -- Taxable Fringe Income
2970       trc_TxbFrnInc := trc_FrnBenErn - trc_PerTotAbm;
2971       -- Threshold Check
2972       IF trc_TxbFrnInc >= trc_Threshold THEN
2973          hr_utility.set_location('py_za_tx_01032006.NorCalc',13);
2974          -- Tax Liability
2975          trc_TotLibFB := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbFrnInc);
2976          trc_LibFyFB  := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
2977          trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
2978          -- DeAnnualise
2979          trc_LibFpFB := py_za_tx_utl_01032006.DeAnnualise
2980                            ( trc_LibFyFB
2981                            , bal_TX_ON_FB_YTD
2982                            , bal_TX_ON_FB_PTD
2983                            );
2984       ELSE
2985          hr_utility.set_location('py_za_tx_01032006.NorCalc',14);
2986          -- Set Cascade Figures and Refund
2987          trc_TotLibFB   := trc_TotLibNI;
2988          trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
2989          trc_LibFpFBOvr := TRUE;
2990       END IF;
2991    ELSE
2992       hr_utility.set_location('py_za_tx_01032006.NorCalc',15);
2993       -- Set Cascade Figures and Refund
2994       trc_FrnBenErn  := trc_NorErn;
2995       trc_TxbFrnInc  := trc_TxbNorInc;
2996       trc_TotLibFB   := trc_TotLibNI;
2997       trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
2998       trc_LibFpFBOvr := TRUE;
2999    END IF;
3000 
3001 -- Travel Allowance
3002 --
3006    IF trc_TrvAllYtd <> 0 THEN
3003    -- Ytd Travel Allowance
3004    trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
3005    -- Skip the calculation if there is No Income
3007       hr_utility.set_location('py_za_tx_01032006.NorCalc',16);
3008       -- Ptd Travel Allowance
3009       trc_TrvAllPtd := bal_TOT_TXB_TA_PTD;
3010       -- Annualise Travel Allowance
3011       trc_TrvAllErn := py_za_tx_utl_01032006.Annualise
3012                           ( p_YtdInc => trc_TrvAllYtd
3013                           , p_PtdInc => trc_TrvAllPtd
3014                           ) + trc_FrnBenErn;
3015       -- Taxable Travel Income
3016       trc_TxbTrvInc := trc_TrvAllErn - trc_PerTotAbm;
3017       -- Threshold Check
3018       IF trc_TxbTrvInc >= trc_Threshold THEN
3019          hr_utility.set_location('py_za_tx_01032006.NorCalc',17);
3020          -- Tax Liability
3021          trc_TotLibTA := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbTrvInc);
3022          trc_LibFyTA  := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
3023          trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
3024          -- DeAnnualise
3025          trc_LibFpTA := py_za_tx_utl_01032006.DeAnnualise
3026                            ( trc_LibFyTA
3027                            , bal_TX_ON_TA_YTD
3028                            , bal_TX_ON_TA_PTD
3029                            );
3030       ELSE
3031          hr_utility.set_location('py_za_tx_01032006.NorCalc',18);
3032          -- Set Cascade Figures and Refund
3033          trc_TotLibTA   := trc_TotLibFB;
3034          trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
3035          trc_LibFpTAOvr := TRUE;
3036       END IF;
3037    ELSE
3038       hr_utility.set_location('py_za_tx_01032006.NorCalc',19);
3039       -- Set Cascade Figures and Refund
3040       trc_TrvAllErn  := trc_FrnBenErn;
3041       trc_TxbTrvInc  := trc_TxbFrnInc;
3042       trc_TotLibTA   := trc_TotLibFB;
3043       trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
3044       trc_LibFpTAOvr := TRUE;
3045    END IF;
3046 
3047 -- Bonus Provision
3048 --
3049    -- Ytd Bonus Prvision
3050    trc_BonProYtd := bal_BP_YTD;
3051    -- Skip the calculation if there is No Income
3052    IF trc_BonProYtd <> 0 THEN
3053       hr_utility.set_location('py_za_tx_01032006.NorCalc',20);
3054       -- Annualise Bonus Provision
3055       trc_BonProErn := py_za_tx_utl_01032006.Annualise
3056                           ( p_YtdInc => trc_BonProYtd
3057                           , p_PtdInc => trc_BonProPtd
3058                           ) + trc_TrvAllErn;
3059       -- Taxable Bonus Provision Income
3060       trc_TxbBonProInc := trc_BonProErn - trc_PerTotAbm;
3061       -- Threshold Check
3062       IF trc_TxbBonProInc >= trc_Threshold THEN
3063          hr_utility.set_location('py_za_tx_01032006.NorCalc',21);
3064          -- Tax Liability
3065          trc_TotLibBP := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbBonProInc);
3066          trc_LibFyBP  := trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA);
3067          trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
3068          -- DeAnnualise
3069          trc_LibFpBP := py_za_tx_utl_01032006.DeAnnualise
3070                            ( trc_LibFyBP
3071                            , bal_TX_ON_BP_YTD
3072                            , bal_TX_ON_BP_PTD
3073                            );
3074       ELSE
3075          hr_utility.set_location('py_za_tx_01032006.NorCalc',22);
3076          -- Set Cascade Figures and Refund
3077          trc_TotLibBP   := trc_TotLibTA;
3078          trc_LibFpBP    := -1 * bal_TX_ON_BP_YTD;
3079          trc_LibFpBPOvr := TRUE;
3080       END IF;
3081    ELSE
3082       hr_utility.set_location('py_za_tx_01032006.NorCalc',23);
3083       -- Set Cascade Figures and Refund
3084       trc_BonProErn    := trc_TrvAllErn;
3085       trc_TxbBonProInc := trc_TxbTrvInc;
3086       trc_TotLibBP     := trc_TotLibTA;
3087       trc_LibFpBP      := -1 * bal_TX_ON_BP_YTD;
3088       trc_LibFpBPOvr   := TRUE;
3089    END IF;
3090 
3091 -- Annual Bonus
3092 --
3093    -- Ytd Annual Bonus
3094    trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
3095    -- Skip the calculation if there is No Income
3096    IF trc_AnnBonYtd <> 0 THEN
3097       hr_utility.set_location('py_za_tx_01032006.NorCalc',24);
3098       -- Annual Bonus Earnings
3099       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
3100       -- Taxable Annual Bonus Income
3101       trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
3102       -- Threshold Check
3103       IF trc_TxbAnnBonInc >= trc_Threshold THEN
3104          hr_utility.set_location('py_za_tx_01032006.NorCalc',25);
3105          -- Tax Liability
3106          trc_TotLibAB := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbAnnBonInc);
3107          trc_LibFyAB  := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
3108          trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
3109          -- Check Bonus Provision
3110          IF trc_BonProYtd <> 0 THEN
3111             hr_utility.set_location('py_za_tx_01032006.NorCalc',26);
3112             -- Check Bonus Provision Frequency
3113             IF dbi_BP_TX_RCV = 'A' THEN
3114                hr_utility.set_location('py_za_tx_01032006.NorCalc',27);
3115                trc_LibFpAB := 0;
3116             ELSE
3117                hr_utility.set_location('py_za_tx_01032006.NorCalc',28);
3118                trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD
3119                                             + trc_LibFpBP
3120                                             + bal_TX_ON_AB_YTD);
3124             trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
3121             END IF;
3122          ELSE
3123             hr_utility.set_location('py_za_tx_01032006.NorCalc',29);
3125          END IF;
3126       ELSE
3127          hr_utility.set_location('py_za_tx_01032006.NorCalc',30);
3128          -- Set Cascade Figures and Refund
3129          trc_TotLibAB   := trc_TotLibTA;
3130          trc_LibFpAB    := -1 * bal_TX_ON_AB_YTD;
3131          trc_LibFpABOvr := TRUE;
3132       END IF;
3133    ELSE
3134       hr_utility.set_location('py_za_tx_01032006.NorCalc',31);
3135       -- Set Cascade Figures and Refund
3136       trc_AnnBonErn    := trc_BonProErn;
3137       trc_TxbAnnBonInc := trc_TxbBonProInc;
3138       trc_TotLibAB     := trc_TotLibBP;
3139       trc_LibFpAB      := -1 * bal_TX_ON_AB_YTD;
3140       trc_LibFpABOvr   := TRUE;
3141    END IF;
3142 
3143 -- Annual Payments
3144 --
3145    -- Ytd Annual Payments
3146    trc_AnnPymYtd := bal_TOT_TXB_AP_YTD ;
3147    -- Skip the calculation if there is No Income
3148    IF trc_AnnPymYtd <> 0 THEN
3149       hr_utility.set_location('py_za_tx_01032006.NorCalc',32);
3150       -- Annual Payments Earnings
3151       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
3152       -- Taxable Annual Payments Income
3153       trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
3154       -- Threshold Check
3155       IF trc_TxbAnnPymInc >= trc_Threshold THEN
3156          hr_utility.set_location('py_za_tx_01032006.NorCalc',33);
3157          -- Tax Liability
3158          trc_TotLibAP := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbAnnPymInc);
3159          trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
3160          trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
3161          hr_utility.set_location('py_za_tx_01032006.NorCalc',34);
3162          trc_LibFpAP  := trc_LibFyAP - bal_TX_ON_AP_YTD;
3163       ELSE
3164          hr_utility.set_location('py_za_tx_01032006.NorCalc',35);
3165          -- Set Cascade Figures and Refund
3166          trc_TotLibAP   := trc_TotLibAB;
3167          trc_LibFpAP    := -1 * bal_TX_ON_AP_YTD;
3168          trc_LibFpAPOvr := TRUE;
3169       END IF;
3170    ELSE
3171       hr_utility.set_location('py_za_tx_01032006.NorCalc',36);
3172       -- Set Cascade Figures and Refund
3173       trc_AnnPymErn    := trc_AnnBonErn;
3174       trc_TxbAnnPymInc := trc_TxbAnnBonInc;
3175       trc_TotLibAP     := trc_TotLibAB;
3176       trc_LibFpAP      := -1 * bal_TX_ON_AP_YTD;
3177       trc_LibFpAPOvr   := TRUE;
3178    END IF;
3179 
3180 -- Public Office Allowance
3181 --
3182    -- Ytd Public Office Allowance
3183    trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
3184    -- Skip the calculation if there is No Income
3185    IF trc_PblOffYtd <> 0 THEN
3186       hr_utility.set_location('py_za_tx_01032006.NorCalc',37);
3187       -- Ptd Public Office Allowance
3188       trc_PblOffPtd := bal_TOT_TXB_PO_PTD;
3189       -- Annualise Public Office Allowance
3190       trc_PblOffErn := py_za_tx_utl_01032006.Annualise
3191                           ( p_YtdInc => trc_PblOffYtd
3192                           , p_PtdInc => trc_PblOffPtd
3193                           ) + trc_AnnPymErn;
3194       -- Taxable Public Office Allowance
3195       trc_TxbPblOffInc := trc_PblOffErn - trc_AnnTotAbm;
3196       -- Threshold Check
3197       IF trc_TxbPblOffInc >= trc_Threshold THEN
3198          hr_utility.set_location('py_za_tx_01032006.NorCalc',38);
3199          -- Tax Liability
3200          trc_TotLibPO := py_za_tx_utl_01032006.TaxLiability(p_Amt => trc_TxbPblOffInc);
3201          trc_LibFyPO  := trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP);
3202          trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
3203          -- DeAnnualise
3204          trc_LibFpPO := py_za_tx_utl_01032006.DeAnnualise
3205                            ( trc_LibFyPO
3206                            , bal_TX_ON_PO_YTD
3207                            , bal_TX_ON_PO_PTD
3208                            );
3209       ELSE
3210          hr_utility.set_location('py_za_tx_01032006.NorCalc',39);
3211          -- Set Cascade Figures and Refund
3212          trc_TotLibPO   := trc_TotLibAP;
3213          trc_LibFpPO    := -1 * bal_TX_ON_PO_YTD;
3214          trc_LibFpPOOvr := TRUE;
3215       END IF;
3216    ELSE
3217       hr_utility.set_location('py_za_tx_01032006.NorCalc',40);
3218       -- Set Cascade Figures and Refund
3219       trc_PblOffErn     := trc_AnnPymErn;
3220       trc_TxbPblOffInc  := trc_TxbAnnPymInc;
3221       trc_TotLibPO      := trc_TotLibAP;
3222       trc_LibFpPO       := -1 * bal_TX_ON_PO_YTD;
3223       trc_LibFpPOOvr    := TRUE;
3224    END IF;
3225 
3226 -- Net Pay Validation
3227 --
3228    py_za_tx_utl_01032006.ValidateTaxOns;
3229 
3230    hr_utility.set_location('py_za_tx_01032006.NorCalc',41);
3231 
3232    -- Deemed Remuneration
3233    WrtHrTrc('trc_TxbDmdRmn:    '||to_char(trc_TxbDmdRmn));
3234    WrtHrTrc('trc_TotLibDR:     '||to_char(trc_TotLibDR ));
3235    WrtHrTrc('trc_LibFyDR:      '||to_char(trc_LibFyDR  ));
3236    WrtHrTrc('trc_LibFpDR:      '||to_char(trc_LibFpDR  ));
3237    -- Base Income
3238    WrtHrTrc('trc_BseErn:       '||to_char(trc_BseErn   ));
3239    WrtHrTrc('trc_TxbBseInc:    '||to_char(trc_TxbBseInc));
3240    WrtHrTrc('trc_TotLibBse:    '||to_char(trc_TotLibBse));
3241    -- Normal Income
3242    WrtHrTrc('trc_NorIncYtd:    '||to_char(trc_NorIncYtd));
3246    WrtHrTrc('trc_TotLibNI:     '||to_char(trc_TotLibNI ));
3243    WrtHrTrc('trc_NorIncPtd:    '||to_char(trc_NorIncPtd));
3244    WrtHrTrc('trc_NorErn:       '||to_char(trc_NorErn   ));
3245    WrtHrTrc('trc_TxbNorInc:    '||to_char(trc_TxbNorInc));
3247    WrtHrTrc('trc_LibFyNI:      '||to_char(trc_LibFyNI  ));
3248    WrtHrTrc('trc_LibFpNI:      '||to_char(trc_LibFpNI  ));
3249    -- Fringe Benefits
3250    WrtHrTrc('trc_FrnBenYtd:    '||to_char(trc_FrnBenYtd));
3251    WrtHrTrc('trc_FrnBenPtd:    '||to_char(trc_FrnBenPtd));
3252    WrtHrTrc('trc_FrnBenErn:    '||to_char(trc_FrnBenErn));
3253    WrtHrTrc('trc_TxbFrnInc:    '||to_char(trc_TxbFrnInc));
3254    WrtHrTrc('trc_TotLibFB:     '||to_char(trc_TotLibFB ));
3255    WrtHrTrc('trc_LibFyFB:      '||to_char(trc_LibFyFB  ));
3256    WrtHrTrc('trc_LibFpFB:      '||to_char(trc_LibFpFB  ));
3257    -- Travel Allowance
3258    WrtHrTrc('trc_TrvAllYtd:    '||to_char(trc_TrvAllYtd));
3259    WrtHrTrc('trc_TrvAllPtd:    '||to_char(trc_TrvAllPtd));
3260    WrtHrTrc('trc_TrvAllErn:    '||to_char(trc_TrvAllErn));
3261    WrtHrTrc('trc_TxbTrvInc:    '||to_char(trc_TxbTrvInc));
3262    WrtHrTrc('trc_TotLibTA:     '||to_char(trc_TotLibTA ));
3263    WrtHrTrc('trc_LibFyTA:      '||to_char(trc_LibFyTA  ));
3264    WrtHrTrc('trc_LibFpTA:      '||to_char(trc_LibFpTA  ));
3265    -- Bonus Provision
3266    WrtHrTrc('trc_BonProYtd:    '||to_char(trc_BonProYtd));
3267    WrtHrTrc('trc_BonProPtd:    '||to_char(trc_BonProPtd));
3268    WrtHrTrc('trc_BonProErn:    '||to_char(trc_BonProErn));
3269    WrtHrTrc('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
3270    WrtHrTrc('trc_TotLibBP:     '||to_char(trc_TotLibBP ));
3271    WrtHrTrc('trc_LibFyBP:      '||to_char(trc_LibFyBP  ));
3272    WrtHrTrc('trc_LibFpBP:      '||to_char(trc_LibFpBP  ));
3273    -- Annual Bonus
3274    WrtHrTrc('trc_AnnBonYtd:    '||to_char(trc_AnnBonYtd));
3275    WrtHrTrc('trc_AnnBonPtd:    '||to_char(trc_AnnBonPtd));
3276    WrtHrTrc('trc_AnnBonErn:    '||to_char(trc_AnnBonErn));
3277    WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
3278    WrtHrTrc('trc_TotLibAB:     '||to_char(trc_TotLibAB ));
3279    WrtHrTrc('trc_LibFyAB:      '||to_char(trc_LibFyAB  ));
3280    WrtHrTrc('trc_LibFpAB:      '||to_char(trc_LibFpAB  ));
3281    -- Annual Payments
3282    WrtHrTrc('trc_AnnPymYtd:    '||to_char(trc_AnnPymYtd));
3283    WrtHrTrc('trc_AnnPymPtd:    '||to_char(trc_AnnPymPtd));
3284    WrtHrTrc('trc_AnnPymErn:    '||to_char(trc_AnnPymErn));
3285    WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
3286    WrtHrTrc('trc_TotLibAP:     '||to_char(trc_TotLibAP ));
3287    WrtHrTrc('trc_LibFyAP:      '||to_char(trc_LibFyAP  ));
3288    WrtHrTrc('trc_LibFpAP:      '||to_char(trc_LibFpAP  ));
3289    -- Pubilc Office Allowance
3290    WrtHrTrc('trc_PblOffYtd:    '||to_char(trc_PblOffYtd));
3291    WrtHrTrc('trc_PblOffPtd:    '||to_char(trc_PblOffPtd));
3292    WrtHrTrc('trc_PblOffErn:    '||to_char(trc_PblOffErn));
3293    WrtHrTrc('trc_TxbPblOffInc: '||to_char(trc_TxbPblOffInc));
3294    WrtHrTrc('trc_TotLibPO:     '||to_char(trc_TotLibPO));
3295    WrtHrTrc('trc_LibFyPO:      '||to_char(trc_LibFyPO  ));
3296    WrtHrTrc('trc_LibFpPO:      '||to_char(trc_LibFpPO  ));
3297 
3298 EXCEPTION
3299    WHEN OTHERS THEN
3300       IF xpt_Msg = 'No Error' THEN
3301          xpt_Msg := 'NorCalc: '||TO_CHAR(SQLCODE);
3302       END IF;
3303       RAISE xpt_E;
3304 END NorCalc;
3305 -------------------------------------------------------------------------------
3306 -- ZaTxGlb_01032006                                                          --
3307 -- Tax module supporting function                                            --
3308 -------------------------------------------------------------------------------
3309 FUNCTION ZaTxGlb_01032006(
3310 -- Global Values
3311     p_ZA_ADL_TX_RBT         IN NUMBER
3312    ,p_ZA_ARR_PF_AN_MX_ABT   IN NUMBER
3313    ,p_ZA_ARR_RA_AN_MX_ABT   IN NUMBER
3314    ,p_ZA_TRV_ALL_TX_PRC     IN NUMBER
3315    ,p_ZA_CC_TX_PRC          IN NUMBER
3316    ,p_ZA_PF_AN_MX_ABT       IN NUMBER
3317    ,p_ZA_PF_MX_PRC          IN NUMBER
3318    ,p_ZA_PER_SERV_COMP_PERC IN NUMBER
3319    ,p_ZA_PER_SERV_TRST_PERC IN NUMBER
3320    ,p_ZA_PRI_TX_RBT         IN NUMBER
3321    ,p_ZA_PRI_TX_THRSHLD     IN NUMBER
3322    ,p_ZA_PBL_TX_PRC         IN NUMBER
3323    ,p_ZA_PBL_TX_RTE         IN NUMBER
3324    ,p_ZA_RA_AN_MX_ABT       IN NUMBER
3325    ,p_ZA_RA_MX_PRC          IN NUMBER
3326    ,p_ZA_SC_TX_THRSHLD      IN NUMBER
3327    ,p_ZA_SIT_LIM            IN NUMBER
3328    ,p_ZA_TMP_TX_RTE         IN NUMBER
3329    ,p_ZA_WRK_DYS_PR_YR      IN NUMBER
3330    ) RETURN NUMBER
3331 AS
3332    l_Dum NUMBER := 1;
3333    --id VARCHAR2(30);
3334 
3335 BEGIN
3336 
3337    --id := dbms_debug.initialize('JLTX');
3338    --dbms_debug.debug_on;
3339 
3340 -- Initialise Package Globals
3341 -- Global Values
3342    glb_ZA_ADL_TX_RBT         := p_ZA_ADL_TX_RBT;
3343    glb_ZA_ARR_PF_AN_MX_ABT   := p_ZA_ARR_PF_AN_MX_ABT;
3344    glb_ZA_ARR_RA_AN_MX_ABT   := p_ZA_ARR_RA_AN_MX_ABT;
3345    glb_ZA_TRV_ALL_TX_PRC     := p_ZA_TRV_ALL_TX_PRC;
3346    glb_ZA_CC_TX_PRC          := p_ZA_CC_TX_PRC;
3347    glb_ZA_PF_AN_MX_ABT       := p_ZA_PF_AN_MX_ABT;
3348    glb_ZA_PF_MX_PRC          := p_ZA_PF_MX_PRC;
3349    glb_ZA_PER_SERV_COMP_PERC := p_ZA_PER_SERV_COMP_PERC;
3350    glb_ZA_PER_SERV_TRST_PERC := p_ZA_PER_SERV_TRST_PERC;
3351    glb_ZA_PRI_TX_RBT         := p_ZA_PRI_TX_RBT;
3352    glb_ZA_PRI_TX_THRSHLD     := p_ZA_PRI_TX_THRSHLD;
3353    glb_ZA_PBL_TX_PRC         := p_ZA_PBL_TX_PRC;
3357    glb_ZA_SC_TX_THRSHLD      := p_ZA_SC_TX_THRSHLD;
3354    glb_ZA_PBL_TX_RTE         := p_ZA_PBL_TX_RTE;
3355    glb_ZA_RA_AN_MX_ABT       := p_ZA_RA_AN_MX_ABT;
3356    glb_ZA_RA_MX_PRC          := p_ZA_RA_MX_PRC;
3358    glb_ZA_SIT_LIM            := p_ZA_SIT_LIM;
3359    glb_ZA_TMP_TX_RTE         := p_ZA_TMP_TX_RTE;
3360    glb_ZA_WRK_DYS_PR_YR      := p_ZA_WRK_DYS_PR_YR;
3361 
3362    RETURN l_Dum;
3363 EXCEPTION
3364    WHEN OTHERS THEN
3365       hr_utility.set_message(801, 'ZaTxGlb_01032006: '||TO_CHAR(SQLCODE));
3366       hr_utility.raise_error;
3367 END ZaTxGlb_01032006;
3368 -------------------------------------------------------------------------------
3369 -- ZaTxDbi_01032006                                                          --
3370 -- Tax module supporting function                                            --
3371 -------------------------------------------------------------------------------
3372 FUNCTION ZaTxDbi_01032006(
3373 -- Database Items
3374    p_PAY_PROC_PRD_DTE_PD   IN DATE
3375   ,p_PER_AGE               IN NUMBER
3376   ,p_PER_DTE_OF_BRTH       IN DATE
3377   ,p_SES_DTE               IN DATE
3378   ,p_ZA_ACT_END_DTE        IN DATE
3379   ,p_ZA_ACT_STRT_DTE       IN DATE
3380   ,p_ZA_ASG_TX_RTR_PRD     IN VARCHAR2
3381   ,p_ZA_ASG_TAX_RTR_RSLTS  IN VARCHAR2
3382   ,p_ZA_ASG_TX_YR          IN NUMBER
3383   ,p_ZA_ASG_TX_YR_END      IN DATE
3384   ,p_ZA_ASG_TX_YR_STRT     IN DATE
3385   ,p_ZA_CUR_PRD_END_DTE    IN DATE
3386   ,p_ZA_CUR_PRD_STRT_DTE   IN DATE
3387   ,p_ZA_DYS_IN_YR          IN NUMBER
3388   ,p_ZA_PAY_PRDS_LFT       IN NUMBER
3389   ,p_ZA_PAY_PRDS_PER_YR    IN NUMBER
3390   ,p_ZA_TX_YR_END          IN DATE
3391   ,p_ZA_TX_YR_STRT         IN DATE
3392   ,p_BP_TX_RCV             IN VARCHAR2
3393   ,p_SEA_WRK_DYS_WRK       IN NUMBER
3394   ,p_TX_DIR_NUM            IN VARCHAR2
3395   ,p_TX_DIR_VAL            IN NUMBER
3396   ,p_TX_STA                IN VARCHAR2
3397   ,p_ZA_LS_DIR_NUM         IN VARCHAR2
3398   ,p_ZA_LS_DIR_VAL         IN NUMBER
3399    ) RETURN NUMBER
3400 AS
3401    l_Dum NUMBER := 1;
3402 
3403 BEGIN
3404 
3405 -- Initialise Package Globals
3406 -- Database Items
3407    dbi_PAY_PROC_PRD_DTE_PD  := p_PAY_PROC_PRD_DTE_PD;
3408    dbi_PER_AGE              := p_PER_AGE;
3409    dbi_PER_DTE_OF_BRTH      := p_PER_DTE_OF_BRTH;
3410    dbi_SES_DTE              := p_SES_DTE;
3411    dbi_ZA_ACT_END_DTE       := p_ZA_ACT_END_DTE;
3412    dbi_ZA_ACT_STRT_DTE      := p_ZA_ACT_STRT_DTE;
3413    dbi_ZA_ASG_TX_RTR_PRD    := p_ZA_ASG_TX_RTR_PRD;
3414    dbi_ZA_ASG_TAX_RTR_RSLTS := p_ZA_ASG_TAX_RTR_RSLTS;
3415    dbi_ZA_ASG_TX_YR         := p_ZA_ASG_TX_YR;
3416    dbi_ZA_ASG_TX_YR_END     := p_ZA_ASG_TX_YR_END;
3417    dbi_ZA_ASG_TX_YR_STRT    := p_ZA_ASG_TX_YR_STRT;
3418    dbi_ZA_CUR_PRD_END_DTE   := p_ZA_CUR_PRD_END_DTE;
3419    dbi_ZA_CUR_PRD_STRT_DTE  := p_ZA_CUR_PRD_STRT_DTE;
3420    dbi_ZA_DYS_IN_YR         := p_ZA_DYS_IN_YR;
3421    dbi_ZA_PAY_PRDS_LFT      := p_ZA_PAY_PRDS_LFT;
3422    dbi_ZA_PAY_PRDS_PER_YR   := p_ZA_PAY_PRDS_PER_YR;
3423    dbi_ZA_TX_YR_END         := p_ZA_TX_YR_END;
3424    dbi_ZA_TX_YR_STRT        := p_ZA_TX_YR_STRT;
3425    dbi_BP_TX_RCV            := p_BP_TX_RCV;
3426    dbi_SEA_WRK_DYS_WRK      := p_SEA_WRK_DYS_WRK;
3427    dbi_TX_DIR_NUM           := p_TX_DIR_NUM;
3428    dbi_TX_DIR_VAL           := p_TX_DIR_VAL;
3429    dbi_TX_STA               := p_TX_STA;
3430    dbi_ZA_LS_DIR_NUM        := p_ZA_LS_DIR_NUM;
3431    dbi_ZA_LS_DIR_VAL        := p_ZA_LS_DIR_VAL;
3432 
3433    RETURN l_Dum;
3434 EXCEPTION
3435    WHEN OTHERS THEN
3436       hr_utility.set_message(801, 'ZaTxDbi_01032006: '||TO_CHAR(SQLCODE));
3437       hr_utility.raise_error;
3438 END ZaTxDbi_01032006;
3439 -------------------------------------------------------------------------------
3440 -- ZaTxBal1_01032006                                                         --
3441 -- Tax module supporting function                                            --
3442 -------------------------------------------------------------------------------
3443 FUNCTION ZaTxBal1_01032006(
3444 -- Balances
3445     p_ANN_ARR_PF_CMTD           IN NUMBER
3446    ,p_ANN_ARR_PF_CYTD           IN NUMBER
3447    ,p_ANN_ARR_PF_RUN            IN NUMBER
3448    ,p_ANN_ARR_PF_PTD            IN NUMBER
3449    ,p_ANN_ARR_PF_YTD            IN NUMBER
3450    ,p_ANN_ARR_RA_CMTD           IN NUMBER
3451    ,p_ANN_ARR_RA_CYTD           IN NUMBER
3452    ,p_ANN_ARR_RA_RUN            IN NUMBER
3453    ,p_ANN_ARR_RA_PTD            IN NUMBER
3454    ,p_ANN_ARR_RA_YTD            IN NUMBER
3455    ,p_ANN_EE_INC_PRO_POL_CMTD   IN NUMBER
3456    ,p_ANN_EE_INC_PRO_POL_CYTD   IN NUMBER
3457    ,p_ANN_EE_INC_PRO_POL_RUN    IN NUMBER
3458    ,p_ANN_EE_INC_PRO_POL_PTD    IN NUMBER
3459    ,p_ANN_EE_INC_PRO_POL_YTD    IN NUMBER
3460    ,p_ANN_MED_CNTRB_ABM_CMTD    IN NUMBER
3461    ,p_ANN_MED_CNTRB_ABM_CYTD    IN NUMBER
3462    ,p_ANN_MED_CNTRB_ABM_RUN     IN NUMBER
3463    ,p_ANN_MED_CNTRB_ABM_PTD     IN NUMBER
3464    ,p_ANN_MED_CNTRB_ABM_YTD     IN NUMBER
3465    ,p_ANN_PF_CMTD               IN NUMBER
3466    ,p_ANN_PF_CYTD               IN NUMBER
3467    ,p_ANN_PF_RUN                IN NUMBER
3468    ,p_ANN_PF_PTD                IN NUMBER
3469    ,p_ANN_PF_YTD                IN NUMBER
3470    ,p_ANN_RA_CMTD               IN NUMBER
3471    ,p_ANN_RA_CYTD               IN NUMBER
3472    ,p_ANN_RA_RUN                IN NUMBER
3473    ,p_ANN_RA_PTD                IN NUMBER
3474    ,p_ANN_RA_YTD                IN NUMBER
3478 
3475    ) RETURN NUMBER
3476 AS
3477    l_Dum NUMBER := 1;
3479 BEGIN
3480 -- Balances
3481    bal_ANN_ARR_PF_CMTD         := p_ANN_ARR_PF_CMTD;
3482    bal_ANN_ARR_PF_CYTD         := p_ANN_ARR_PF_CYTD;
3483    bal_ANN_ARR_PF_RUN          := p_ANN_ARR_PF_RUN;
3484    bal_ANN_ARR_PF_PTD          := p_ANN_ARR_PF_PTD;
3485    bal_ANN_ARR_PF_YTD          := p_ANN_ARR_PF_YTD;
3486    bal_ANN_ARR_RA_CMTD         := p_ANN_ARR_RA_CMTD;
3487    bal_ANN_ARR_RA_CYTD         := p_ANN_ARR_RA_CYTD;
3488    bal_ANN_ARR_RA_RUN          := p_ANN_ARR_RA_RUN;
3489    bal_ANN_ARR_RA_PTD          := p_ANN_ARR_RA_PTD;
3490    bal_ANN_ARR_RA_YTD          := p_ANN_ARR_RA_YTD;
3491    bal_ANN_EE_INC_PRO_POL_CMTD := p_ANN_EE_INC_PRO_POL_CMTD;
3492    bal_ANN_EE_INC_PRO_POL_CYTD := p_ANN_EE_INC_PRO_POL_CYTD;
3493    bal_ANN_EE_INC_PRO_POL_RUN  := p_ANN_EE_INC_PRO_POL_RUN;
3494    bal_ANN_EE_INC_PRO_POL_PTD  := p_ANN_EE_INC_PRO_POL_PTD;
3495    bal_ANN_EE_INC_PRO_POL_YTD  := p_ANN_EE_INC_PRO_POL_YTD;
3496    bal_ANN_MED_CNTRB_ABM_CMTD  := p_ANN_MED_CNTRB_ABM_CMTD;
3497    bal_ANN_MED_CNTRB_ABM_CYTD  := p_ANN_MED_CNTRB_ABM_CYTD;
3498    bal_ANN_MED_CNTRB_ABM_RUN   := p_ANN_MED_CNTRB_ABM_RUN;
3499    bal_ANN_MED_CNTRB_ABM_PTD   := p_ANN_MED_CNTRB_ABM_PTD;
3500    bal_ANN_MED_CNTRB_ABM_YTD   := p_ANN_MED_CNTRB_ABM_YTD;
3501    bal_ANN_PF_CMTD             := p_ANN_PF_CMTD;
3502    bal_ANN_PF_CYTD             := p_ANN_PF_CYTD;
3503    bal_ANN_PF_RUN              := p_ANN_PF_RUN;
3504    bal_ANN_PF_PTD              := p_ANN_PF_PTD;
3505    bal_ANN_PF_YTD              := p_ANN_PF_YTD;
3506    bal_ANN_RA_CMTD             := p_ANN_RA_CMTD;
3507    bal_ANN_RA_CYTD             := p_ANN_RA_CYTD;
3508    bal_ANN_RA_RUN              := p_ANN_RA_RUN;
3509    bal_ANN_RA_PTD              := p_ANN_RA_PTD;
3510    bal_ANN_RA_YTD              := p_ANN_RA_YTD;
3511 
3512    RETURN l_Dum;
3513 EXCEPTION
3514    WHEN OTHERS THEN
3515       hr_utility.set_message(801, 'ZaTxBal1_01032006: '||TO_CHAR(SQLCODE));
3516       hr_utility.raise_error;
3517 END ZaTxBal1_01032006;
3518 -------------------------------------------------------------------------------
3519 -- ZaTxBal2_01032006                                                         --
3520 -- Tax module supporting function                                            --
3521 -------------------------------------------------------------------------------
3522 FUNCTION ZaTxBal2_01032006(
3523 -- Balances
3524     p_ARR_PF_CMTD                IN NUMBER
3525    ,p_ARR_PF_CYTD                IN NUMBER
3526    ,p_ARR_PF_PTD                 IN NUMBER
3527    ,p_ARR_PF_YTD                 IN NUMBER
3528    ,p_ARR_RA_CMTD                IN NUMBER
3529    ,p_ARR_RA_CYTD                IN NUMBER
3530    ,p_ARR_RA_PTD                 IN NUMBER
3531    ,p_ARR_RA_YTD                 IN NUMBER
3532    ,p_BP_CMTD                    IN NUMBER
3533    ,p_BP_PTD                     IN NUMBER
3534    ,p_BP_YTD                     IN NUMBER
3535    ,p_CUR_PF_CMTD                IN NUMBER
3536    ,p_CUR_PF_CYTD                IN NUMBER
3537    ,p_CUR_PF_RUN                 IN NUMBER
3538    ,p_CUR_PF_PTD                 IN NUMBER
3539    ,p_CUR_PF_YTD                 IN NUMBER
3540    ,p_CUR_RA_CMTD                IN NUMBER
3541    ,p_CUR_RA_CYTD                IN NUMBER
3542    ,p_CUR_RA_RUN                 IN NUMBER
3543    ,p_CUR_RA_PTD                 IN NUMBER
3544    ,p_CUR_RA_YTD                 IN NUMBER
3545    ,p_DIR_DMD_RMN_ITD            IN NUMBER
3546    ) RETURN NUMBER
3547 AS
3548    l_Dum NUMBER := 1;
3549 
3550 BEGIN
3551 -- Balances
3552    bal_ARR_PF_CMTD     := p_ARR_PF_CMTD;
3553    bal_ARR_PF_CYTD     := p_ARR_PF_CYTD;
3554    bal_ARR_PF_PTD      := p_ARR_PF_PTD;
3555    bal_ARR_PF_YTD      := p_ARR_PF_YTD;
3556    bal_ARR_RA_CMTD     := p_ARR_RA_CMTD;
3557    bal_ARR_RA_CYTD     := p_ARR_RA_CYTD;
3558    bal_ARR_RA_PTD      := p_ARR_RA_PTD;
3559    bal_ARR_RA_YTD      := p_ARR_RA_YTD;
3560    bal_BP_CMTD         := p_BP_CMTD;
3561    bal_BP_PTD          := p_BP_PTD;
3562    bal_BP_YTD          := p_BP_YTD;
3563    bal_CUR_PF_CMTD     := p_CUR_PF_CMTD;
3564    bal_CUR_PF_CYTD     := p_CUR_PF_CYTD;
3565    bal_CUR_PF_RUN      := p_CUR_PF_RUN;
3566    bal_CUR_PF_PTD      := p_CUR_PF_PTD;
3567    bal_CUR_PF_YTD      := p_CUR_PF_YTD;
3568    bal_CUR_RA_CMTD     := p_CUR_RA_CMTD;
3569    bal_CUR_RA_CYTD     := p_CUR_RA_CYTD;
3570    bal_CUR_RA_RUN      := p_CUR_RA_RUN;
3571    bal_CUR_RA_PTD      := p_CUR_RA_PTD;
3572    bal_CUR_RA_YTD      := p_CUR_RA_YTD;
3573    bal_DIR_DMD_RMN_ITD := p_DIR_DMD_RMN_ITD;
3574 
3575    RETURN l_Dum;
3576 EXCEPTION
3577    WHEN OTHERS THEN
3578       hr_utility.set_message(801, 'ZaTxBal2_01032006: '||TO_CHAR(SQLCODE));
3579       hr_utility.raise_error;
3580 END ZaTxBal2_01032006;
3581 -------------------------------------------------------------------------------
3582 -- ZaTxBal3_01032006                                                         --
3583 -- Tax module supporting function                                            --
3584 -------------------------------------------------------------------------------
3585 FUNCTION ZaTxBal3_01032006(
3586 -- Balances
3587     p_EE_INC_PRO_POL_CMTD        IN NUMBER
3588    ,p_EE_INC_PRO_POL_CYTD        IN NUMBER
3589    ,p_EE_INC_PRO_POL_RUN         IN NUMBER
3590    ,p_EE_INC_PRO_POL_PTD         IN NUMBER
3591    ,p_EE_INC_PRO_POL_YTD         IN NUMBER
3592    ,p_EXC_ARR_PEN_ITD            IN NUMBER
3593    ,p_EXC_ARR_PEN_PTD            IN NUMBER
3597    ,p_EXC_ARR_RA_YTD             IN NUMBER
3594    ,p_EXC_ARR_PEN_YTD            IN NUMBER
3595    ,p_EXC_ARR_RA_ITD             IN NUMBER
3596    ,p_EXC_ARR_RA_PTD             IN NUMBER
3598    ,p_MED_CONTR_CMTD             IN NUMBER
3599    ,p_MED_CONTR_CYTD             IN NUMBER
3600    ,p_MED_CONTR_RUN              IN NUMBER
3601    ,p_MED_CONTR_PTD              IN NUMBER
3602    ,p_MED_CONTR_YTD              IN NUMBER
3603    ,p_MED_CNTRB_ABM_CMTD         IN NUMBER
3604    ,p_MED_CNTRB_ABM_CYTD         IN NUMBER
3605    ,p_MED_CNTRB_ABM_RUN          IN NUMBER
3606    ,p_MED_CNTRB_ABM_PTD          IN NUMBER
3607    ,p_MED_CNTRB_ABM_YTD          IN NUMBER
3608    ,p_NET_PAY_RUN                IN NUMBER
3609    ,p_NET_TXB_INC_CMTD           IN NUMBER
3610    ) RETURN NUMBER
3611 AS
3612    l_Dum NUMBER := 1;
3613 
3614 BEGIN
3615 -- Balances
3616    bal_EE_INC_PRO_POL_CMTD := p_EE_INC_PRO_POL_CMTD;
3617    bal_EE_INC_PRO_POL_CYTD := p_EE_INC_PRO_POL_CYTD;
3618    bal_EE_INC_PRO_POL_RUN  := p_EE_INC_PRO_POL_RUN;
3619    bal_EE_INC_PRO_POL_PTD  := p_EE_INC_PRO_POL_PTD;
3620    bal_EE_INC_PRO_POL_YTD  := p_EE_INC_PRO_POL_YTD;
3621    bal_EXC_ARR_PEN_ITD     := p_EXC_ARR_PEN_ITD;
3622    bal_EXC_ARR_PEN_PTD     := p_EXC_ARR_PEN_PTD;
3623    bal_EXC_ARR_PEN_YTD     := p_EXC_ARR_PEN_YTD;
3624    bal_EXC_ARR_RA_ITD      := p_EXC_ARR_RA_ITD;
3625    bal_EXC_ARR_RA_PTD      := p_EXC_ARR_RA_PTD;
3626    bal_EXC_ARR_RA_YTD      := p_EXC_ARR_RA_YTD;
3627    bal_MED_CONTR_CMTD      := p_MED_CONTR_CMTD;
3628    bal_MED_CONTR_CYTD      := p_MED_CONTR_CYTD;
3629    bal_MED_CONTR_RUN       := p_MED_CONTR_RUN;
3630    bal_MED_CONTR_PTD       := p_MED_CONTR_PTD;
3631    bal_MED_CONTR_YTD       := p_MED_CONTR_YTD;
3632    bal_MED_CNTRB_ABM_CMTD  := p_MED_CNTRB_ABM_CMTD;
3633    bal_MED_CNTRB_ABM_CYTD  := p_MED_CNTRB_ABM_CYTD;
3634    bal_MED_CNTRB_ABM_RUN   := p_MED_CNTRB_ABM_RUN;
3635    bal_MED_CNTRB_ABM_PTD   := p_MED_CNTRB_ABM_PTD;
3636    bal_MED_CNTRB_ABM_YTD   := p_MED_CNTRB_ABM_YTD;
3637    bal_NET_PAY_RUN         := p_NET_PAY_RUN;
3638    bal_NET_TXB_INC_CMTD    := p_NET_TXB_INC_CMTD;
3639 
3640    RETURN l_Dum;
3641 EXCEPTION
3642    WHEN OTHERS THEN
3643       hr_utility.set_message(801, 'ZaTxBal3_01032006: '||TO_CHAR(SQLCODE));
3644       hr_utility.raise_error;
3645 END ZaTxBal3_01032006;
3646 -------------------------------------------------------------------------------
3647 -- ZaTxBal4_01032006                                                         --
3648 -- Tax module supporting function                                            --
3649 -------------------------------------------------------------------------------
3650 FUNCTION ZaTxBal4_01032006(
3651 -- Balances
3652     p_PAYE_YTD                   IN NUMBER
3653    ,p_SITE_YTD                   IN NUMBER
3654    ,p_TAX_YTD                    IN NUMBER
3655    ,p_TX_ON_AB_PTD               IN NUMBER
3656    ,p_TX_ON_AB_YTD               IN NUMBER
3657    ,p_TX_ON_AP_PTD               IN NUMBER
3658    ,p_TX_ON_AP_YTD               IN NUMBER
3659    ,p_TX_ON_BP_PTD               IN NUMBER
3660    ,p_TX_ON_BP_YTD               IN NUMBER
3661    ,p_TX_ON_TA_PTD               IN NUMBER
3662    ,p_TX_ON_TA_YTD               IN NUMBER
3663    ,p_TX_ON_DR_PTD               IN NUMBER
3664    ,p_TX_ON_DR_YTD               IN NUMBER
3665    ,p_TX_ON_FB_PTD               IN NUMBER
3666    ,p_TX_ON_FB_YTD               IN NUMBER
3667    ,p_TX_ON_NI_PTD               IN NUMBER
3668    ,p_TX_ON_NI_YTD               IN NUMBER
3669    ,p_TX_ON_PO_PTD               IN NUMBER
3670    ,p_TX_ON_PO_YTD               IN NUMBER
3671    ,p_TX_ON_LS_PTD               IN NUMBER
3672    ) RETURN NUMBER
3673 AS
3674    l_Dum NUMBER := 1;
3675 
3676 BEGIN
3677 -- Balances
3678    bal_PAYE_YTD     := p_PAYE_YTD;
3679    bal_SITE_YTD     := p_SITE_YTD;
3680    bal_TAX_YTD      := p_TAX_YTD;
3681    bal_TX_ON_AB_PTD := p_TX_ON_AB_PTD;
3682    bal_TX_ON_AB_YTD := p_TX_ON_AB_YTD;
3683    bal_TX_ON_AP_PTD := p_TX_ON_AP_PTD;
3684    bal_TX_ON_AP_YTD := p_TX_ON_AP_YTD;
3685    bal_TX_ON_BP_PTD := p_TX_ON_BP_PTD;
3686    bal_TX_ON_BP_YTD := p_TX_ON_BP_YTD;
3687    bal_TX_ON_TA_PTD := p_TX_ON_TA_PTD;
3688    bal_TX_ON_TA_YTD := p_TX_ON_TA_YTD;
3689    bal_TX_ON_DR_PTD := p_TX_ON_DR_PTD;
3690    bal_TX_ON_DR_YTD := p_TX_ON_DR_YTD;
3691    bal_TX_ON_FB_PTD := p_TX_ON_FB_PTD;
3692    bal_TX_ON_FB_YTD := p_TX_ON_FB_YTD;
3693    bal_TX_ON_NI_PTD := p_TX_ON_NI_PTD;
3694    bal_TX_ON_NI_YTD := p_TX_ON_NI_YTD;
3695    bal_TX_ON_PO_PTD := p_TX_ON_PO_PTD;
3696    bal_TX_ON_PO_YTD := p_TX_ON_PO_YTD;
3697    bal_TX_ON_LS_PTD := p_TX_ON_LS_PTD;
3698 
3699    RETURN l_Dum;
3700 EXCEPTION
3701    WHEN OTHERS THEN
3702       hr_utility.set_message(801, 'ZaTxBal4_01032006: '||TO_CHAR(SQLCODE));
3703       hr_utility.raise_error;
3704 END ZaTxBal4_01032006;
3705 -------------------------------------------------------------------------------
3706 -- ZaTxBal5_01032006                                                         --
3707 -- Tax module supporting function                                            --
3708 -------------------------------------------------------------------------------
3709 FUNCTION ZaTxBal5_01032006(
3710 -- Balances
3711     p_TOT_INC_PTD                IN NUMBER
3712    ,p_TOT_INC_YTD                IN NUMBER
3713    ,p_TOT_NRFI_AN_INC_CMTD       IN NUMBER
3714    ,p_TOT_NRFI_AN_INC_CYTD       IN NUMBER
3715    ,p_TOT_NRFI_AN_INC_RUN        IN NUMBER
3716    ,p_TOT_NRFI_AN_INC_PTD        IN NUMBER
3720    ,p_TOT_NRFI_INC_RUN           IN NUMBER
3717    ,p_TOT_NRFI_AN_INC_YTD        IN NUMBER
3718    ,p_TOT_NRFI_INC_CMTD          IN NUMBER
3719    ,p_TOT_NRFI_INC_CYTD          IN NUMBER
3721    ,p_TOT_NRFI_INC_PTD           IN NUMBER
3722    ,p_TOT_NRFI_INC_YTD           IN NUMBER
3723    ,p_TOT_RFI_AN_INC_CMTD        IN NUMBER
3724    ,p_TOT_RFI_AN_INC_CYTD        IN NUMBER
3725    ,p_TOT_RFI_AN_INC_RUN         IN NUMBER
3726    ,p_TOT_RFI_AN_INC_PTD         IN NUMBER
3727    ,p_TOT_RFI_AN_INC_YTD         IN NUMBER
3728    ,p_TOT_RFI_INC_CMTD           IN NUMBER
3729    ,p_TOT_RFI_INC_CYTD           IN NUMBER
3730    ,p_TOT_RFI_INC_RUN            IN NUMBER
3731    ,p_TOT_RFI_INC_PTD            IN NUMBER
3732    ,p_TOT_RFI_INC_YTD            IN NUMBER
3733    ,p_TOT_SEA_WRK_DYS_WRK_YTD    IN NUMBER
3734    ,p_TOT_SKL_ANN_INC_CMTD       IN NUMBER
3735    ,p_TOT_SKL_INC_CMTD           IN NUMBER
3736    ,p_TOT_TXB_INC_ITD            IN NUMBER
3737    ) RETURN NUMBER
3738 AS
3739    l_Dum NUMBER := 1;
3740 
3741 BEGIN
3742 -- Balances
3743    bal_TOT_INC_PTD             := p_TOT_INC_PTD;
3744    bal_TOT_INC_YTD             := p_TOT_INC_YTD;
3745    bal_TOT_NRFI_AN_INC_CMTD    := p_TOT_NRFI_AN_INC_CMTD;
3746    bal_TOT_NRFI_AN_INC_CYTD    := p_TOT_NRFI_AN_INC_CYTD;
3747    bal_TOT_NRFI_AN_INC_RUN     := p_TOT_NRFI_AN_INC_RUN;
3748    bal_TOT_NRFI_AN_INC_PTD     := p_TOT_NRFI_AN_INC_PTD;
3749    bal_TOT_NRFI_AN_INC_YTD     := p_TOT_NRFI_AN_INC_YTD;
3750    bal_TOT_NRFI_INC_CMTD       := p_TOT_NRFI_INC_CMTD;
3751    bal_TOT_NRFI_INC_CYTD       := p_TOT_NRFI_INC_CYTD;
3752    bal_TOT_NRFI_INC_RUN        := p_TOT_NRFI_INC_RUN;
3753    bal_TOT_NRFI_INC_PTD        := p_TOT_NRFI_INC_PTD;
3754    bal_TOT_NRFI_INC_YTD        := p_TOT_NRFI_INC_YTD;
3755    bal_TOT_RFI_AN_INC_CMTD     := p_TOT_RFI_AN_INC_CMTD;
3756    bal_TOT_RFI_AN_INC_CYTD     := p_TOT_RFI_AN_INC_CYTD;
3757    bal_TOT_RFI_AN_INC_RUN      := p_TOT_RFI_AN_INC_RUN;
3758    bal_TOT_RFI_AN_INC_PTD      := p_TOT_RFI_AN_INC_PTD;
3759    bal_TOT_RFI_AN_INC_YTD      := p_TOT_RFI_AN_INC_YTD;
3760    bal_TOT_RFI_INC_CMTD        := p_TOT_RFI_INC_CMTD;
3761    bal_TOT_RFI_INC_CYTD        := p_TOT_RFI_INC_CYTD;
3762    bal_TOT_RFI_INC_RUN         := p_TOT_RFI_INC_RUN;
3763    bal_TOT_RFI_INC_PTD         := p_TOT_RFI_INC_PTD;
3764    bal_TOT_RFI_INC_YTD         := p_TOT_RFI_INC_YTD;
3765    bal_TOT_SEA_WRK_DYS_WRK_YTD := p_TOT_SEA_WRK_DYS_WRK_YTD;
3766    bal_TOT_SKL_ANN_INC_CMTD    := p_TOT_SKL_ANN_INC_CMTD;
3767    bal_TOT_SKL_INC_CMTD        := p_TOT_SKL_INC_CMTD;
3768    bal_TOT_TXB_INC_ITD         := p_TOT_TXB_INC_ITD;
3769 
3770    RETURN l_Dum;
3771 EXCEPTION
3772    WHEN OTHERS THEN
3773       hr_utility.set_message(801, 'ZaTxBal5_01032006: '||TO_CHAR(SQLCODE));
3774       hr_utility.raise_error;
3775 END ZaTxBal5_01032006;
3776 
3777 -------------------------------------------------------------------------------
3778 -- ZaTxBal6_01032006                                                         --
3779 -- Tax module supporting function                                            --
3780 -------------------------------------------------------------------------------
3781 FUNCTION ZaTxBal6_01032006(
3782 -- Balances
3783     p_TOT_TXB_AB_CMTD       IN NUMBER
3784    ,p_TOT_TXB_AB_RUN        IN NUMBER
3785    ,p_TOT_TXB_AB_PTD        IN NUMBER
3786    ,p_TOT_TXB_AB_YTD        IN NUMBER
3787    ,p_TOT_TXB_AP_CMTD       IN NUMBER
3788    ,p_TOT_TXB_AP_RUN        IN NUMBER
3789    ,p_TOT_TXB_AP_PTD        IN NUMBER
3790    ,p_TOT_TXB_AP_YTD        IN NUMBER
3791    ,p_TOT_TXB_FB_CMTD       IN NUMBER
3792    ,p_TOT_TXB_FB_CYTD       IN NUMBER
3793    ,p_TOT_TXB_FB_RUN        IN NUMBER
3794    ,p_TOT_TXB_FB_PTD        IN NUMBER
3795    ,p_TOT_TXB_FB_YTD        IN NUMBER
3796    ,p_TOT_TXB_NI_CMTD       IN NUMBER
3797    ,p_TOT_TXB_NI_CYTD       IN NUMBER
3798    ,p_TOT_TXB_NI_RUN        IN NUMBER
3799    ,p_TOT_TXB_NI_PTD        IN NUMBER
3800    ,p_TOT_TXB_NI_YTD        IN NUMBER
3801    ,p_TOT_TXB_PO_CMTD       IN NUMBER
3802    ,p_TOT_TXB_PO_PTD        IN NUMBER
3803    ,p_TOT_TXB_PO_YTD        IN NUMBER
3804    ,p_TOT_TXB_TA_CMTD       IN NUMBER
3805    ,p_TOT_TXB_TA_CYTD       IN NUMBER
3806    ,p_TOT_TXB_TA_PTD        IN NUMBER
3807    ,p_TOT_TXB_TA_YTD        IN NUMBER
3808    ) RETURN NUMBER
3809 AS
3810    l_Dum NUMBER := 1;
3811 
3812 BEGIN
3813 -- Balances
3814    bal_TOT_TXB_AB_CMTD   := p_TOT_TXB_AB_CMTD;
3815    bal_TOT_TXB_AB_RUN    := p_TOT_TXB_AB_RUN;
3816    bal_TOT_TXB_AB_PTD    := p_TOT_TXB_AB_PTD;
3817    bal_TOT_TXB_AB_YTD    := p_TOT_TXB_AB_YTD;
3818    bal_TOT_TXB_AP_CMTD   := p_TOT_TXB_AP_CMTD;
3819    bal_TOT_TXB_AP_RUN    := p_TOT_TXB_AP_RUN;
3820    bal_TOT_TXB_AP_PTD    := p_TOT_TXB_AP_PTD;
3821    bal_TOT_TXB_AP_YTD    := p_TOT_TXB_AP_YTD;
3822    bal_TOT_TXB_FB_CMTD   := p_TOT_TXB_FB_CMTD;
3823    bal_TOT_TXB_FB_CYTD   := p_TOT_TXB_FB_CYTD;
3824    bal_TOT_TXB_FB_RUN    := p_TOT_TXB_FB_RUN;
3825    bal_TOT_TXB_FB_PTD    := p_TOT_TXB_FB_PTD;
3826    bal_TOT_TXB_FB_YTD    := p_TOT_TXB_FB_YTD;
3827    bal_TOT_TXB_NI_CMTD   := p_TOT_TXB_NI_CMTD;
3828    bal_TOT_TXB_NI_CYTD   := p_TOT_TXB_NI_CYTD;
3829    bal_TOT_TXB_NI_RUN    := p_TOT_TXB_NI_RUN;
3830    bal_TOT_TXB_NI_PTD    := p_TOT_TXB_NI_PTD;
3831    bal_TOT_TXB_NI_YTD    := p_TOT_TXB_NI_YTD;
3832    bal_TOT_TXB_PO_CMTD   := p_TOT_TXB_PO_CMTD;
3833    bal_TOT_TXB_PO_PTD    := p_TOT_TXB_PO_PTD;
3834    bal_TOT_TXB_PO_YTD    := p_TOT_TXB_PO_YTD;
3835    bal_TOT_TXB_TA_CMTD   := p_TOT_TXB_TA_CMTD;
3839 
3836    bal_TOT_TXB_TA_CYTD   := p_TOT_TXB_TA_CYTD;
3837    bal_TOT_TXB_TA_PTD    := p_TOT_TXB_TA_PTD;
3838    bal_TOT_TXB_TA_YTD    := p_TOT_TXB_TA_YTD;
3840    RETURN l_Dum;
3841 EXCEPTION
3842    WHEN OTHERS THEN
3843       hr_utility.set_message(801, 'ZaTxBal6_01032006: '||TO_CHAR(SQLCODE));
3844       hr_utility.raise_error;
3845 END ZaTxBal6_01032006;
3846 
3847 -------------------------------------------------------------------------------
3848 -- ZaTx_01032006                                                             --
3849 -- Main Tax module function                                                  --
3850 -------------------------------------------------------------------------------
3851 FUNCTION ZaTx_01032006(
3852 /*  PARAMETERS */
3853    -- Contexts
3854      ASSIGNMENT_ACTION_ID IN NUMBER
3855    , ASSIGNMENT_ID        IN NUMBER
3856    , PAYROLL_ACTION_ID    IN NUMBER
3857    , PAYROLL_ID           IN NUMBER
3858    -- Out Parameters
3859    , p_LibWrn            OUT NOCOPY VARCHAR2
3860    , p_LibFpDR           OUT NOCOPY NUMBER
3861    , p_LibFpNI           OUT NOCOPY NUMBER
3862    , p_LibFpFB           OUT NOCOPY NUMBER
3863    , p_LibFpTA           OUT NOCOPY NUMBER
3864    , p_LibFpBP           OUT NOCOPY NUMBER
3865    , p_LibFpAB           OUT NOCOPY NUMBER
3866    , p_LibFpAP           OUT NOCOPY NUMBER
3867    , p_LibFpPO           OUT NOCOPY NUMBER
3868    , p_PayValSD          OUT NOCOPY NUMBER
3869    , p_PayValEC          OUT NOCOPY NUMBER
3870    , p_PayeVal           OUT NOCOPY NUMBER
3871    , p_SiteVal           OUT NOCOPY NUMBER
3872    , p_It3Ind            OUT NOCOPY NUMBER
3873    , p_PfUpdFig          OUT NOCOPY NUMBER
3874    , p_RaUpdFig          OUT NOCOPY NUMBER
3875    , p_OUpdFig           OUT NOCOPY NUMBER
3876    , p_NtiUpdFig         OUT NOCOPY NUMBER
3877    , p_OvrWrn            OUT NOCOPY VARCHAR2
3878    , p_LSDirNum          OUT NOCOPY VARCHAR2
3879    , p_LSDirVal          OUT NOCOPY NUMBER
3880    )RETURN NUMBER
3881 AS
3882 -- Variables
3883 --
3884    l_Dum NUMBER := 1;
3885 
3886    xpt_FxdPrc EXCEPTION;
3887 
3888 -------------------------------------------------------------------------------
3889 BEGIN--                           MAIN                                       --
3890 -------------------------------------------------------------------------------
3891 -- Set hr_utility globals if debugging
3892 --
3893 --      py_za_tx_utl_01032006.g_HrTraceEnabled  := TRUE;
3894 --      py_za_tx_utl_01032006.g_HrTracePipeName := 'ZATAX';
3895 
3896 -- Call hr_utility start procedure
3897    py_za_tx_utl_01032006.StartHrTrace;
3898 
3899 -- Setup Trace Header Info
3900    WrtHrTrc(' ');
3901    WrtHrTrc(' ');
3902    WrtHrTrc(' ');
3903    WrtHrTrc('------------------------------------------------------------');
3904    WrtHrTrc('-- Start of Tax Trace File');
3905    WrtHrTrc('------------------------------------------------------------');
3906    WrtHrTrc(' ');
3907    WrtHrTrc('   Processing Assignment ID :     '||to_char(ASSIGNMENT_ID       ));
3908    WrtHrTrc('   Assignment Action ID     :     '||to_char(ASSIGNMENT_ACTION_ID));
3909    WrtHrTrc('   Payroll Action ID        :     '||to_char(PAYROLL_ACTION_ID   ));
3910    WrtHrTrc('   Payroll ID               :     '||to_char(PAYROLL_ID          ));
3911    WrtHrTrc(' ');
3912    WrtHrTrc('------------------------------------------------------------');
3913    WrtHrTrc(' ');
3914    WrtHrTrc('-------------------------------------------------------------------------------');
3915    WrtHrTrc('-- Application Global Values');
3916    WrtHrTrc('-------------------------------------------------------------------------------');
3917    WrtHrTrc('   glb_ZA_ADL_TX_RBT:             '||to_char(glb_ZA_ADL_TX_RBT        ));
3918    WrtHrTrc('   glb_ZA_ARR_PF_AN_MX_ABT:       '||to_char(glb_ZA_ARR_PF_AN_MX_ABT  ));
3919    WrtHrTrc('   glb_ZA_ARR_RA_AN_MX_ABT:       '||to_char(glb_ZA_ARR_RA_AN_MX_ABT  ));
3920    WrtHrTrc('   glb_ZA_TRV_ALL_TX_PRC:         '||to_char(glb_ZA_TRV_ALL_TX_PRC    ));
3921    WrtHrTrc('   glb_ZA_CC_TX_PRC:              '||to_char(glb_ZA_CC_TX_PRC         ));
3922    WrtHrTrc('   glb_ZA_PF_AN_MX_ABT:           '||to_char(glb_ZA_PF_AN_MX_ABT      ));
3923    WrtHrTrc('   glb_ZA_PF_MX_PRC:              '||to_char(glb_ZA_PF_MX_PRC         ));
3924    WrtHrTrc('   glb_ZA_PER_SERV_COMP_PERC:     '||to_char(glb_ZA_PER_SERV_COMP_PERC));
3925    WrtHrTrc('   glb_ZA_PER_SERV_TRST_PERC:     '||to_char(glb_ZA_PER_SERV_TRST_PERC));
3926    WrtHrTrc('   glb_ZA_PRI_TX_RBT:             '||to_char(glb_ZA_PRI_TX_RBT        ));
3927    WrtHrTrc('   glb_ZA_PRI_TX_THRSHLD:         '||to_char(glb_ZA_PRI_TX_THRSHLD    ));
3928    WrtHrTrc('   glb_ZA_PBL_TX_PRC:             '||to_char(glb_ZA_PBL_TX_PRC        ));
3929    WrtHrTrc('   glb_ZA_PBL_TX_RTE:             '||to_char(glb_ZA_PBL_TX_RTE        ));
3930    WrtHrTrc('   glb_ZA_RA_AN_MX_ABT:           '||to_char(glb_ZA_RA_AN_MX_ABT      ));
3931    WrtHrTrc('   glb_ZA_RA_MX_PRC:              '||to_char(glb_ZA_RA_MX_PRC         ));
3932    WrtHrTrc('   glb_ZA_SC_TX_THRSHLD:          '||to_char(glb_ZA_SC_TX_THRSHLD     ));
3933    WrtHrTrc('   glb_ZA_SIT_LIM:                '||to_char(glb_ZA_SIT_LIM           ));
3934    WrtHrTrc('   glb_ZA_TMP_TX_RTE:             '||to_char(glb_ZA_TMP_TX_RTE        ));
3935    WrtHrTrc('   glb_ZA_WRK_DYS_PR_YR:          '||to_char(glb_ZA_WRK_DYS_PR_YR     ));
3936    WrtHrTrc('-------------------------------------------------------------------------------');
3937    WrtHrTrc('-- Application Database Items');
3938    WrtHrTrc('-------------------------------------------------------------------------------');
3942    WrtHrTrc('   dbi_PER_DTE_OF_BRTH:           '||to_char(dbi_PER_DTE_OF_BRTH    ,'DD/MM/YYYY'));
3939    WrtHrTrc('   dbi_BP_TX_RCV:                 '||        dbi_BP_TX_RCV                        );
3940    WrtHrTrc('   dbi_PAY_PROC_PRD_DTE_PD:       '||to_char(dbi_PAY_PROC_PRD_DTE_PD,'DD/MM/YYYY'));
3941    WrtHrTrc('   dbi_PER_AGE:                   '||to_char(dbi_PER_AGE                         ));
3943    WrtHrTrc('   dbi_SEA_WRK_DYS_WRK:           '||to_char(dbi_SEA_WRK_DYS_WRK                 ));
3944    WrtHrTrc('   dbi_SES_DTE:                   '||to_char(dbi_SES_DTE            ,'DD/MM/YYYY'));
3945    WrtHrTrc('   dbi_TX_DIR_NUM:                '||        dbi_TX_DIR_NUM                       );
3946    WrtHrTrc('   dbi_TX_DIR_VAL:                '||to_char(dbi_TX_DIR_VAL                      ));
3947    WrtHrTrc('   dbi_TX_STA:                    '||        dbi_TX_STA                           );
3948    WrtHrTrc('   dbi_ZA_ACT_END_DTE:            '||to_char(dbi_ZA_ACT_END_DTE     ,'DD/MM/YYYY'));
3949    WrtHrTrc('   dbi_ZA_ACT_STRT_DTE:           '||to_char(dbi_ZA_ACT_STRT_DTE    ,'DD/MM/YYYY'));
3950    WrtHrTrc('   dbi_ZA_ASG_TX_RTR_PRD:         '||        dbi_ZA_ASG_TX_RTR_PRD                );
3951    WrtHrTrc('   dbi_ZA_ASG_TAX_RTR_RSLTS:      '||        dbi_ZA_ASG_TAX_RTR_RSLTS              );
3952    WrtHrTrc('   dbi_ZA_ASG_TX_YR:              '||to_char(dbi_ZA_ASG_TX_YR                    ));
3953    WrtHrTrc('   dbi_ZA_ASG_TX_YR_END:          '||to_char(dbi_ZA_ASG_TX_YR_END   ,'DD/MM/YYYY'));
3954    WrtHrTrc('   dbi_ZA_ASG_TX_YR_STRT:         '||to_char(dbi_ZA_ASG_TX_YR_STRT  ,'DD/MM/YYYY'));
3955    WrtHrTrc('   dbi_ZA_CUR_PRD_END_DTE:        '||to_char(dbi_ZA_CUR_PRD_END_DTE ,'DD/MM/YYYY'));
3956    WrtHrTrc('   dbi_ZA_CUR_PRD_STRT_DTE:       '||to_char(dbi_ZA_CUR_PRD_STRT_DTE,'DD/MM/YYYY'));
3957    WrtHrTrc('   dbi_ZA_DYS_IN_YR:              '||to_char(dbi_ZA_DYS_IN_YR                    ));
3958    WrtHrTrc('   dbi_ZA_PAY_PRDS_LFT:           '||to_char(dbi_ZA_PAY_PRDS_LFT                 ));
3959    WrtHrTrc('   dbi_ZA_PAY_PRDS_PER_YR:        '||to_char(dbi_ZA_PAY_PRDS_PER_YR              ));
3960    WrtHrTrc('   dbi_ZA_TX_YR_END:              '||to_char(dbi_ZA_TX_YR_END       ,'DD/MM/YYYY'));
3961    WrtHrTrc('   dbi_ZA_TX_YR_STRT:             '||to_char(dbi_ZA_TX_YR_STRT      ,'DD/MM/YYYY'));
3962    WrtHrTrc('   dbi_ZA_LS_DIR_NUM:             '||        dbi_ZA_LS_DIR_NUM                    );
3963    WrtHrTrc('   dbi_ZA_LS_DIR_VAL:             '||to_char(dbi_ZA_LS_DIR_VAL                   ));
3964    WrtHrTrc('-------------------------------------------------------------------------------');
3965    WrtHrTrc('-- Balances');
3966    WrtHrTrc('-------------------------------------------------------------------------------');
3967    WrtHrTrc('   bal_ANN_ARR_PF_CMTD:           '||to_char(bal_ANN_ARR_PF_CMTD          ));
3968    WrtHrTrc('   bal_ANN_ARR_PF_CYTD:           '||to_char(bal_ANN_ARR_PF_CYTD          ));
3969    WrtHrTrc('   bal_ANN_ARR_PF_RUN:            '||to_char(bal_ANN_ARR_PF_RUN           ));
3970    WrtHrTrc('   bal_ANN_ARR_PF_PTD:            '||to_char(bal_ANN_ARR_PF_PTD           ));
3971    WrtHrTrc('   bal_ANN_ARR_PF_YTD:            '||to_char(bal_ANN_ARR_PF_YTD           ));
3972    WrtHrTrc('   bal_ANN_ARR_RA_CMTD:           '||to_char(bal_ANN_ARR_RA_CMTD          ));
3973    WrtHrTrc('   bal_ANN_ARR_RA_CYTD:           '||to_char(bal_ANN_ARR_RA_CYTD          ));
3974    WrtHrTrc('   bal_ANN_ARR_RA_RUN:            '||to_char(bal_ANN_ARR_RA_RUN           ));
3975    WrtHrTrc('   bal_ANN_ARR_RA_PTD:            '||to_char(bal_ANN_ARR_RA_PTD           ));
3976    WrtHrTrc('   bal_ANN_ARR_RA_YTD:            '||to_char(bal_ANN_ARR_RA_YTD           ));
3977    WrtHrTrc('   bal_ANN_EE_INC_PRO_POL_CMTD:   '||to_char(bal_ANN_EE_INC_PRO_POL_CMTD  ));
3978    WrtHrTrc('   bal_ANN_EE_INC_PRO_POL_CYTD:   '||to_char(bal_ANN_EE_INC_PRO_POL_CYTD  ));
3979    WrtHrTrc('   bal_ANN_EE_INC_PRO_POL_RUN:    '||to_char(bal_ANN_EE_INC_PRO_POL_RUN   ));
3980    WrtHrTrc('   bal_ANN_EE_INC_PRO_POL_PTD:    '||to_char(bal_ANN_EE_INC_PRO_POL_PTD   ));
3981    WrtHrTrc('   bal_ANN_EE_INC_PRO_POL_YTD:    '||to_char(bal_ANN_EE_INC_PRO_POL_YTD   ));
3982    WrtHrTrc('   bal_ANN_MED_CNTRB_ABM_CMTD:    '||to_char(bal_ANN_MED_CNTRB_ABM_CMTD   ));
3983    WrtHrTrc('   bal_ANN_MED_CNTRB_ABM_CYTD:    '||to_char(bal_ANN_MED_CNTRB_ABM_CYTD   ));
3984    WrtHrTrc('   bal_ANN_MED_CNTRB_ABM_RUN:     '||to_char(bal_ANN_MED_CNTRB_ABM_RUN    ));
3985    WrtHrTrc('   bal_ANN_MED_CNTRB_ABM_PTD:     '||to_char(bal_ANN_MED_CNTRB_ABM_PTD    ));
3986    WrtHrTrc('   bal_ANN_MED_CNTRB_ABM_YTD:     '||to_char(bal_ANN_MED_CNTRB_ABM_YTD    ));
3987    WrtHrTrc('   bal_ANN_PF_CMTD:               '||to_char(bal_ANN_PF_CMTD              ));
3988    WrtHrTrc('   bal_ANN_PF_CYTD:               '||to_char(bal_ANN_PF_CYTD              ));
3989    WrtHrTrc('   bal_ANN_PF_RUN:                '||to_char(bal_ANN_PF_RUN               ));
3990    WrtHrTrc('   bal_ANN_PF_PTD:                '||to_char(bal_ANN_PF_PTD               ));
3991    WrtHrTrc('   bal_ANN_PF_YTD:                '||to_char(bal_ANN_PF_YTD               ));
3992    WrtHrTrc('   bal_ANN_RA_CMTD:               '||to_char(bal_ANN_RA_CMTD              ));
3993    WrtHrTrc('   bal_ANN_RA_CYTD:               '||to_char(bal_ANN_RA_CYTD              ));
3994    WrtHrTrc('   bal_ANN_RA_RUN:                '||to_char(bal_ANN_RA_RUN               ));
3995    WrtHrTrc('   bal_ANN_RA_PTD:                '||to_char(bal_ANN_RA_PTD               ));
3996    WrtHrTrc('   bal_ANN_RA_YTD:                '||to_char(bal_ANN_RA_YTD               ));
3997    WrtHrTrc('   bal_ARR_PF_CMTD:               '||to_char(bal_ARR_PF_CMTD              ));
3998    WrtHrTrc('   bal_ARR_PF_CYTD:               '||to_char(bal_ARR_PF_CYTD              ));
3999    WrtHrTrc('   bal_ARR_PF_PTD:                '||to_char(bal_ARR_PF_PTD               ));
4000    WrtHrTrc('   bal_ARR_PF_YTD:                '||to_char(bal_ARR_PF_YTD               ));
4004    WrtHrTrc('   bal_ARR_RA_YTD:                '||to_char(bal_ARR_RA_YTD               ));
4001    WrtHrTrc('   bal_ARR_RA_CMTD:               '||to_char(bal_ARR_RA_CMTD              ));
4002    WrtHrTrc('   bal_ARR_RA_CYTD:               '||to_char(bal_ARR_RA_CYTD              ));
4003    WrtHrTrc('   bal_ARR_RA_PTD:                '||to_char(bal_ARR_RA_PTD               ));
4005    WrtHrTrc('   bal_BP_CMTD:                   '||to_char(bal_BP_CMTD                  ));
4006    WrtHrTrc('   bal_BP_PTD:                    '||to_char(bal_BP_PTD                   ));
4007    WrtHrTrc('   bal_BP_YTD:                    '||to_char(bal_BP_YTD                   ));
4008    WrtHrTrc('   bal_CUR_PF_CMTD:               '||to_char(bal_CUR_PF_CMTD              ));
4009    WrtHrTrc('   bal_CUR_PF_CYTD:               '||to_char(bal_CUR_PF_CYTD              ));
4010    WrtHrTrc('   bal_CUR_PF_RUN:                '||to_char(bal_CUR_PF_RUN               ));
4011    WrtHrTrc('   bal_CUR_PF_PTD:                '||to_char(bal_CUR_PF_PTD               ));
4012    WrtHrTrc('   bal_CUR_PF_YTD:                '||to_char(bal_CUR_PF_YTD               ));
4013    WrtHrTrc('   bal_CUR_RA_CMTD:               '||to_char(bal_CUR_RA_CMTD              ));
4014    WrtHrTrc('   bal_CUR_RA_CYTD:               '||to_char(bal_CUR_RA_CYTD              ));
4015    WrtHrTrc('   bal_CUR_RA_RUN:                '||to_char(bal_CUR_RA_RUN               ));
4016    WrtHrTrc('   bal_CUR_RA_PTD:                '||to_char(bal_CUR_RA_PTD               ));
4017    WrtHrTrc('   bal_CUR_RA_YTD:                '||to_char(bal_CUR_RA_YTD               ));
4018    WrtHrTrc('   bal_DIR_DMD_RMN_ITD:           '||to_char(bal_DIR_DMD_RMN_ITD          ));
4019    WrtHrTrc('   bal_EE_INC_PRO_POL_CMTD:       '||to_char(bal_EE_INC_PRO_POL_CMTD      ));
4020    WrtHrTrc('   bal_EE_INC_PRO_POL_CYTD:       '||to_char(bal_EE_INC_PRO_POL_CYTD      ));
4021    WrtHrTrc('   bal_EE_INC_PRO_POL_RUN:        '||to_char(bal_EE_INC_PRO_POL_RUN       ));
4022    WrtHrTrc('   bal_EE_INC_PRO_POL_PTD:        '||to_char(bal_EE_INC_PRO_POL_PTD       ));
4023    WrtHrTrc('   bal_EE_INC_PRO_POL_YTD:        '||to_char(bal_EE_INC_PRO_POL_YTD       ));
4024    WrtHrTrc('   bal_EXC_ARR_PEN_ITD:           '||to_char(bal_EXC_ARR_PEN_ITD          ));
4025    WrtHrTrc('   bal_EXC_ARR_PEN_PTD:           '||to_char(bal_EXC_ARR_PEN_PTD          ));
4026    WrtHrTrc('   bal_EXC_ARR_PEN_YTD:           '||to_char(bal_EXC_ARR_PEN_YTD          ));
4027    WrtHrTrc('   bal_EXC_ARR_RA_ITD:            '||to_char(bal_EXC_ARR_RA_ITD           ));
4028    WrtHrTrc('   bal_EXC_ARR_RA_PTD:            '||to_char(bal_EXC_ARR_RA_PTD           ));
4029    WrtHrTrc('   bal_EXC_ARR_RA_YTD:            '||to_char(bal_EXC_ARR_RA_YTD           ));
4030    WrtHrTrc('   bal_MED_CONTR_CMTD:            '||to_char(bal_MED_CONTR_CMTD           ));
4031    WrtHrTrc('   bal_MED_CONTR_CYTD:            '||to_char(bal_MED_CONTR_CYTD           ));
4032    WrtHrTrc('   bal_MED_CONTR_RUN:             '||to_char(bal_MED_CONTR_RUN            ));
4033    WrtHrTrc('   bal_MED_CONTR_PTD:             '||to_char(bal_MED_CONTR_PTD            ));
4034    WrtHrTrc('   bal_MED_CONTR_YTD:             '||to_char(bal_MED_CONTR_YTD            ));
4035    WrtHrTrc('   bal_MED_CNTRB_ABM_CMTD:        '||to_char(bal_MED_CNTRB_ABM_CMTD       ));
4036    WrtHrTrc('   bal_MED_CNTRB_ABM_CYTD:        '||to_char(bal_MED_CNTRB_ABM_CYTD       ));
4037    WrtHrTrc('   bal_MED_CNTRB_ABM_RUN:         '||to_char(bal_MED_CNTRB_ABM_RUN        ));
4038    WrtHrTrc('   bal_MED_CNTRB_ABM_PTD:         '||to_char(bal_MED_CNTRB_ABM_PTD        ));
4039    WrtHrTrc('   bal_MED_CNTRB_ABM_YTD:         '||to_char(bal_MED_CNTRB_ABM_YTD        ));
4040    WrtHrTrc('   bal_NET_PAY_RUN:               '||to_char(bal_NET_PAY_RUN              ));
4041    WrtHrTrc('   bal_NET_TXB_INC_CMTD:          '||to_char(bal_NET_TXB_INC_CMTD         ));
4042    WrtHrTrc('   bal_PAYE_YTD:                  '||to_char(bal_PAYE_YTD                 ));
4043    WrtHrTrc('   bal_SITE_YTD:                  '||to_char(bal_SITE_YTD                 ));
4044    WrtHrTrc('   bal_TAX_YTD:                   '||to_char(bal_TAX_YTD                  ));
4045    WrtHrTrc('   bal_TX_ON_AB_PTD:              '||to_char(bal_TX_ON_AB_PTD             ));
4046    WrtHrTrc('   bal_TX_ON_AB_YTD:              '||to_char(bal_TX_ON_AB_YTD             ));
4047    WrtHrTrc('   bal_TX_ON_AP_PTD:              '||to_char(bal_TX_ON_AP_PTD             ));
4048    WrtHrTrc('   bal_TX_ON_AP_YTD:              '||to_char(bal_TX_ON_AP_YTD             ));
4049    WrtHrTrc('   bal_TX_ON_BP_PTD:              '||to_char(bal_TX_ON_BP_PTD             ));
4050    WrtHrTrc('   bal_TX_ON_BP_YTD:              '||to_char(bal_TX_ON_BP_YTD             ));
4051    WrtHrTrc('   bal_TX_ON_TA_PTD:              '||to_char(bal_TX_ON_TA_PTD             ));
4052    WrtHrTrc('   bal_TX_ON_TA_YTD:              '||to_char(bal_TX_ON_TA_YTD             ));
4053    WrtHrTrc('   bal_TX_ON_DR_PTD:              '||to_char(bal_TX_ON_DR_PTD             ));
4054    WrtHrTrc('   bal_TX_ON_DR_YTD:              '||to_char(bal_TX_ON_DR_YTD             ));
4055    WrtHrTrc('   bal_TX_ON_FB_PTD:              '||to_char(bal_TX_ON_FB_PTD             ));
4056    WrtHrTrc('   bal_TX_ON_FB_YTD:              '||to_char(bal_TX_ON_FB_YTD             ));
4057    WrtHrTrc('   bal_TX_ON_NI_PTD:              '||to_char(bal_TX_ON_NI_PTD             ));
4058    WrtHrTrc('   bal_TX_ON_NI_YTD:              '||to_char(bal_TX_ON_NI_YTD             ));
4059    WrtHrTrc('   bal_TX_ON_PO_PTD:              '||to_char(bal_TX_ON_PO_PTD             ));
4060    WrtHrTrc('   bal_TX_ON_PO_YTD:              '||to_char(bal_TX_ON_PO_YTD             ));
4061    WrtHrTrc('   bal_TX_ON_LS_PTD:              '||to_char(bal_TX_ON_LS_PTD             ));
4062    WrtHrTrc('   bal_TOT_INC_PTD:               '||to_char(bal_TOT_INC_PTD              ));
4063    WrtHrTrc('   bal_TOT_INC_YTD:               '||to_char(bal_TOT_INC_YTD              ));
4067    WrtHrTrc('   bal_TOT_NRFI_AN_INC_PTD:       '||to_char(bal_TOT_NRFI_AN_INC_PTD      ));
4064    WrtHrTrc('   bal_TOT_NRFI_AN_INC_CMTD:      '||to_char(bal_TOT_NRFI_AN_INC_CMTD     ));
4065    WrtHrTrc('   bal_TOT_NRFI_AN_INC_CYTD:      '||to_char(bal_TOT_NRFI_AN_INC_CYTD     ));
4066    WrtHrTrc('   bal_TOT_NRFI_AN_INC_RUN:       '||to_char(bal_TOT_NRFI_AN_INC_RUN      ));
4068    WrtHrTrc('   bal_TOT_NRFI_AN_INC_YTD:       '||to_char(bal_TOT_NRFI_AN_INC_YTD      ));
4069    WrtHrTrc('   bal_TOT_NRFI_INC_CMTD:         '||to_char(bal_TOT_NRFI_INC_CMTD        ));
4070    WrtHrTrc('   bal_TOT_NRFI_INC_CYTD:         '||to_char(bal_TOT_NRFI_INC_CYTD        ));
4071    WrtHrTrc('   bal_TOT_NRFI_INC_RUN:          '||to_char(bal_TOT_NRFI_INC_RUN         ));
4072    WrtHrTrc('   bal_TOT_NRFI_INC_PTD:          '||to_char(bal_TOT_NRFI_INC_PTD         ));
4073    WrtHrTrc('   bal_TOT_NRFI_INC_YTD:          '||to_char(bal_TOT_NRFI_INC_YTD         ));
4074    WrtHrTrc('   bal_TOT_RFI_AN_INC_CMTD:       '||to_char(bal_TOT_RFI_AN_INC_CMTD      ));
4075    WrtHrTrc('   bal_TOT_RFI_AN_INC_CYTD:       '||to_char(bal_TOT_RFI_AN_INC_CYTD      ));
4076    WrtHrTrc('   bal_TOT_RFI_AN_INC_RUN:        '||to_char(bal_TOT_RFI_AN_INC_RUN       ));
4077    WrtHrTrc('   bal_TOT_RFI_AN_INC_PTD:        '||to_char(bal_TOT_RFI_AN_INC_PTD       ));
4078    WrtHrTrc('   bal_TOT_RFI_AN_INC_YTD:        '||to_char(bal_TOT_RFI_AN_INC_YTD       ));
4079    WrtHrTrc('   bal_TOT_RFI_INC_CMTD:          '||to_char(bal_TOT_RFI_INC_CMTD         ));
4080    WrtHrTrc('   bal_TOT_RFI_INC_CYTD:          '||to_char(bal_TOT_RFI_INC_CYTD         ));
4081    WrtHrTrc('   bal_TOT_RFI_INC_RUN:           '||to_char(bal_TOT_RFI_INC_RUN          ));
4082    WrtHrTrc('   bal_TOT_RFI_INC_PTD:           '||to_char(bal_TOT_RFI_INC_PTD          ));
4083    WrtHrTrc('   bal_TOT_RFI_INC_YTD:           '||to_char(bal_TOT_RFI_INC_YTD          ));
4084    WrtHrTrc('   bal_TOT_SEA_WRK_DYS_WRK_YTD:   '||to_char(bal_TOT_SEA_WRK_DYS_WRK_YTD  ));
4085    WrtHrTrc('   bal_TOT_SKL_ANN_INC_CMTD:      '||to_char(bal_TOT_SKL_ANN_INC_CMTD     ));
4086    WrtHrTrc('   bal_TOT_SKL_INC_CMTD:          '||to_char(bal_TOT_SKL_INC_CMTD         ));
4087    WrtHrTrc('   bal_TOT_TXB_INC_ITD:           '||to_char(bal_TOT_TXB_INC_ITD          ));
4088    WrtHrTrc('   bal_TOT_TXB_AB_CMTD:           '||to_char(bal_TOT_TXB_AB_CMTD          ));
4089    WrtHrTrc('   bal_TOT_TXB_AB_RUN:            '||to_char(bal_TOT_TXB_AB_RUN           ));
4090    WrtHrTrc('   bal_TOT_TXB_AB_PTD:            '||to_char(bal_TOT_TXB_AB_PTD           ));
4091    WrtHrTrc('   bal_TOT_TXB_AB_YTD:            '||to_char(bal_TOT_TXB_AB_YTD           ));
4092    WrtHrTrc('   bal_TOT_TXB_AP_CMTD:           '||to_char(bal_TOT_TXB_AP_CMTD          ));
4093    WrtHrTrc('   bal_TOT_TXB_AP_RUN:            '||to_char(bal_TOT_TXB_AP_RUN           ));
4094    WrtHrTrc('   bal_TOT_TXB_AP_PTD:            '||to_char(bal_TOT_TXB_AP_PTD           ));
4095    WrtHrTrc('   bal_TOT_TXB_AP_YTD:            '||to_char(bal_TOT_TXB_AP_YTD           ));
4096    WrtHrTrc('   bal_TOT_TXB_FB_CMTD:           '||to_char(bal_TOT_TXB_FB_CMTD          ));
4097    WrtHrTrc('   bal_TOT_TXB_FB_CYTD:           '||to_char(bal_TOT_TXB_FB_CYTD          ));
4098    WrtHrTrc('   bal_TOT_TXB_FB_RUN:            '||to_char(bal_TOT_TXB_FB_RUN           ));
4099    WrtHrTrc('   bal_TOT_TXB_FB_PTD:            '||to_char(bal_TOT_TXB_FB_PTD           ));
4100    WrtHrTrc('   bal_TOT_TXB_FB_YTD:            '||to_char(bal_TOT_TXB_FB_YTD           ));
4101    WrtHrTrc('   bal_TOT_TXB_NI_CMTD:           '||to_char(bal_TOT_TXB_NI_CMTD          ));
4102    WrtHrTrc('   bal_TOT_TXB_NI_CYTD:           '||to_char(bal_TOT_TXB_NI_CYTD          ));
4103    WrtHrTrc('   bal_TOT_TXB_NI_RUN:            '||to_char(bal_TOT_TXB_NI_RUN           ));
4104    WrtHrTrc('   bal_TOT_TXB_NI_PTD:            '||to_char(bal_TOT_TXB_NI_PTD           ));
4105    WrtHrTrc('   bal_TOT_TXB_NI_YTD:            '||to_char(bal_TOT_TXB_NI_YTD           ));
4106    WrtHrTrc('   bal_TOT_TXB_PO_CMTD:           '||to_char(bal_TOT_TXB_PO_CMTD          ));
4107    WrtHrTrc('   bal_TOT_TXB_PO_PTD:            '||to_char(bal_TOT_TXB_PO_PTD           ));
4108    WrtHrTrc('   bal_TOT_TXB_PO_YTD:            '||to_char(bal_TOT_TXB_PO_YTD           ));
4109    WrtHrTrc('   bal_TOT_TXB_TA_CMTD:           '||to_char(bal_TOT_TXB_TA_CMTD          ));
4110    WrtHrTrc('   bal_TOT_TXB_TA_CYTD:           '||to_char(bal_TOT_TXB_TA_CYTD          ));
4111    WrtHrTrc('   bal_TOT_TXB_TA_PTD:            '||to_char(bal_TOT_TXB_TA_PTD           ));
4112    WrtHrTrc('   bal_TOT_TXB_TA_YTD:            '||to_char(bal_TOT_TXB_TA_YTD           ));
4113 
4114    hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',1);
4115 
4116 -- Initialise Package Globals
4117 -- Contexts
4118    con_ASG_ACT_ID := ASSIGNMENT_ACTION_ID;
4119    con_ASG_ID     := ASSIGNMENT_ID;
4120    con_PRL_ACT_ID := PAYROLL_ACTION_ID;
4121    con_PRL_ID     := PAYROLL_ID;
4122 
4123    hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',2);
4124 
4125 -- Tax Override Validation
4126 --
4127    /*
4128    V = Amount
4129    P = Percentage
4130    S = Force Site Calculation
4131    */
4132 
4133 --  Tax Status Validation
4134 --
4135    /*
4136    A = Normal
4137    B = Provisional
4138    C = Directive Amount
4139    D = Directive Percentage
4140    E = Close Corporation
4141    F = Temporary Worker/Student
4142    G = Seasonal Worker
4143    H = Zero Tax
4144    J = Personal Service Company
4145    K = Personal Service Trust
4146    L = Labour Broker
4147    M = Private Director
4148    N = Private Director with Directive Amount
4149    P = Private Director with Directive Percentage
4150    Q = Private Director Zero Tax
4151    */
4152    hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',3);
4153 
4154 -- C = Directive Amount
4155 -- N = Private Director with Directive Amount
4156 --
4157    IF dbi_TX_STA IN ('C','N') THEN
4158       IF trc_OvrTxCalc AND (trc_OvrTyp = 'S' OR trc_OvrTyp = 'P') THEN
4159          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',4);
4160          IF xpt_Msg = 'No Error' THEN
4161             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',5);
4162             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_C';
4163          END IF;
4164          RAISE xpt_E;
4165          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',6);
4166       ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4167          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',7);
4168          trc_CalTyp := 'OvrCalc';
4169          trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4170       -- Check Directive Number First
4171       ELSIF dbi_TX_DIR_NUM = 'NULL' THEN
4172          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',8);
4173          IF xpt_Msg = 'No Error' THEN
4174             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',9);
4175             xpt_Msg := 'PY_ZA_TX_DIR_NUM';
4176          END IF;
4177          RAISE xpt_E;
4178       -- Check that directive value is filled in
4179       ELSIF dbi_TX_DIR_VAL = -1 THEN
4180          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',10);
4181          IF xpt_Msg = 'No Error' THEN
4182             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',11);
4183             xpt_Msg := 'PY_ZA_TX_DIR_MONT';
4184          END IF;
4185          RAISE xpt_E;
4189          -- Liability = entered value
4186       ELSE
4187          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',12);
4188          trc_CalTyp := 'NoCalc';
4190          trc_LibFpNI := dbi_TX_DIR_VAL;
4191          -- Standard NetPay Validation
4192          py_za_tx_utl_01032006.ValidateTaxOns;
4193       END IF;
4194 -- D = Directive Percentage
4195 -- P = Private Director wth Directive Percentage
4196 --
4197    ELSIF dbi_TX_STA IN ('D','P') THEN
4198       IF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
4199          IF xpt_Msg = 'No Error' THEN
4200             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',13);
4201             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_DEF';
4202          END IF;
4203          RAISE xpt_E;
4204          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',14);
4205       ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4206          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',15);
4207          trc_CalTyp := 'OvrCalc';
4208          trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4209       ELSE
4210          IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
4211             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',16);
4212             trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
4213             -- Percentage taken into account in py_za_tx_utl_01032006.TaxLiability
4214          END IF;
4215          -- Check Directive Number First
4216          IF dbi_TX_DIR_NUM = 'NULL' THEN
4217             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',17);
4218             IF xpt_Msg = 'No Error' THEN
4219                hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',18);
4220                xpt_Msg := 'PY_ZA_TX_DIR_NUM';
4221             END IF;
4222             RAISE xpt_E;
4223          -- Check that directive value is filled in
4224          ELSIF dbi_TX_DIR_VAL = -1 THEN
4225             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',19);
4226             IF xpt_Msg = 'No Error' THEN
4227                hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',20);
4228                xpt_Msg := 'PY_ZA_TX_DIR_PERC';
4229             END IF;
4230             RAISE xpt_E;
4231          ELSE
4232             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',21);
4233             DirCalc;
4234          END IF;
4235       END IF;
4236 -- E = Close Corporation
4237 -- F = Temporary Worker/Student
4238 -- J = Personal Service Company
4239 -- K = Personal Service Trust
4240 -- L = Labour Broker
4241 --
4242    ELSIF dbi_TX_STA IN ('E','F','J','K','L') THEN
4243       IF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
4244          IF xpt_Msg = 'No Error' THEN
4245             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',22);
4246             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_DEF';
4247          END IF;
4248          RAISE xpt_E;
4249          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',23);
4250       ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4251          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',24);
4252          trc_CalTyp := 'OvrCalc';
4253          trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4254       ELSE
4255          IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
4256             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',25);
4257             trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
4258             -- Percentage taken into account in py_za_tx_utl_01032006.TaxLiability
4259          END IF;
4260          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',26);
4261          -- Simply Execute the Directive Calculation
4262          DirCalc;
4263       END IF;
4264 -- G = Seasonal Worker
4265 --
4266    ELSIF dbi_TX_STA = 'G' THEN
4267       IF trc_OvrTxCalc AND (trc_OvrTyp = 'S' OR trc_OvrTyp = 'P') THEN
4268          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',27);
4269          IF xpt_Msg = 'No Error' THEN
4270             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',28);
4271             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_G';
4272          END IF;
4273          RAISE xpt_E;
4274          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',29);
4275       -- Check that seasonal worker days worked is filled in
4276       ELSIF dbi_SEA_WRK_DYS_WRK = 0 THEN
4277          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',30);
4278          IF xpt_Msg = 'No Error' THEN
4279             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',31);
4280             xpt_Msg := 'PY_ZA_TX_SEA_WRK_DYS';
4281          END IF;
4282          RAISE xpt_E;
4283       ELSE
4284          IF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4285             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',32);
4286             trc_CalTyp := 'OvrCalc';
4287             trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4288             py_za_tx_utl_01032006.SetRebates;
4289          ELSE
4290             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',33);
4291             SeaCalc;
4292          END IF;
4293       END IF;
4294 -- A = Normal
4295 -- B = Provisional
4296 -- M = Private Director
4297 --
4298    ELSIF dbi_TX_STA IN ('A','B','M') THEN
4299       IF dbi_TX_STA <> 'M' THEN
4300          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',34);
4301          -- Deemed Remuneration only applicable to 'M'
4302          bal_DIR_DMD_RMN_ITD := 0;
4303       END IF;
4304 
4305       IF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4306          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',35);
4307          trc_CalTyp := 'OvrCalc';
4311       ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
4308          trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4309          py_za_tx_utl_01032006.SetRebates;
4310          trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032006.DaysWorked;
4312          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',36);
4313          trc_CalTyp := 'OvrCalc';
4314          trc_OvrWrn := 'WARNING: Tax Override - Forced Site Calculation';
4315          -- Force the Site Calculation
4316          SitCalc;
4317          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',37);
4318       ELSE
4319          IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
4320             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',38);
4321             trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
4322             -- Percentage taken into account in py_za_tx_utl_01032006.TaxLiability
4323          END IF;
4324 
4325          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',39);
4326          IF py_za_tx_utl_01032006.LatePayPeriod THEN
4327             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',40);
4328             LteCalc;
4329          -- Is this a SITE Period?
4330          ELSIF py_za_tx_utl_01032006.EmpTermPrePeriod THEN
4331             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',41);
4332             SitCalc;
4333          ELSIF py_za_tx_utl_01032006.LstPeriod OR py_za_tx_utl_01032006.EmpTermInPeriod THEN
4334             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',42);
4335             IF py_za_tx_utl_01032006.PreErnPeriod THEN
4336                hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',43);
4337                YtdCalc;
4338             ELSE
4339                hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',44);
4340                SitCalc;
4341             END IF;
4342          ElSE
4343             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',45);
4344             -- The employee has NOT been terminated!
4345             IF py_za_tx_utl_01032006.PreErnPeriod THEN
4346                hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',46);
4347                YtdCalc;
4348            -- Bug 4346955 Bug 5148830
4349           /*  ELSIF dbi_ZA_ASG_TX_RTR_PRD = 'Y' THEN
4350                hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',47);
4351                IF dbi_ZA_ASG_TAX_RTR_RSLTS = 'Y' THEN
4352                   hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',48);
4353                   SitCalc;
4354                ELSIF py_za_tx_utl_01032006.NegPtd THEN
4355                   hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',49);
4356                   SitCalc;
4357                ELSE
4358                   hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',50);
4359                   NorCalc;
4360                END IF; */
4361             ELSIF py_za_tx_utl_01032006.NegPtd THEN
4362                hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',51);
4363                SitCalc;
4364             ELSE
4365                hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',52);
4366                NorCalc;
4367             END IF;
4368          END IF;
4369       END IF;
4370 -- H = Zero Tax
4371 -- Q = Private Director Zero Tax
4372 --
4373    ELSIF dbi_TX_STA IN ('H','Q') THEN
4374       IF trc_OvrTxCalc THEN
4375          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',53);
4376          IF xpt_Msg = 'No Error' THEN
4377             hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',54);
4378             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_H';
4379          END IF;
4380          RAISE xpt_E;
4381       ELSE
4382          hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',55);
4383          trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
4384          trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
4385          trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
4386          trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
4387          trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
4388          trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
4389          trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
4390       END IF;
4391    ELSE
4392       hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',56);
4393       hr_utility.set_message(801, 'ERROR: Invalid Tax Status');
4394       hr_utility.raise_error;
4395    END IF;
4396 
4397    hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',57);
4398 
4399 -- Post Calculation Steps
4400 --
4401    py_za_tx_utl_01032006.SitPaySplit;
4402 
4403    hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',58);
4404 
4405 -- Execute the Arrear Processing
4406 --
4407    IF py_za_tx_utl_01032006.SitePeriod THEN
4408       hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',59);
4409       py_za_tx_utl_01032006.ArrearExcess;
4410    END IF;
4411 
4412    hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',60);
4413 
4414 -- Calculate Net Taxable Income
4415 --
4416    NetTxbIncCalc;
4417 
4418    hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',61);
4419 --
4420 -- Tax on Lump Sums
4421 --
4422    -- If tax on lump sums has already been calculated
4423    -- do not return the values again by resetting the
4424    -- dbi's to their default values
4425    --
4426    IF bal_TX_ON_LS_PTD <> 0 THEN
4427       dbi_ZA_LS_DIR_NUM := 'To Be Advised';
4428       dbi_ZA_LS_DIR_VAL := -1;
4429    END IF;
4430 -- Setup the Out Parameters
4431 --
4432    -- Messages
4433    p_LibWrn := trc_LibWrn;   -- Liability Warning
4434    p_OvrWrn := trc_OvrWrn;   -- Override Warning
4435 
4436    -- Pay Values
4440                    + trc_LibFpBP
4437    trc_PayValSD := ( trc_LibFpNI
4438                    + trc_LibFpFB
4439                    + trc_LibFpTA
4441                    + trc_LibFpAB
4442                    + trc_LibFpAP
4443                    + trc_LibFpPO
4444                    );
4445    trc_PayValEC := trc_LibFpDR;
4446 
4447    hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',62);
4448 
4449    -- Tax On's
4450    p_LibFpDR  := trc_LibFpDR;
4451    p_LibFpNI  := trc_LibFpNI;
4452    p_LibFpFB  := trc_LibFpFB;
4453    p_LibFpTA  := trc_LibFpTA;
4454    p_LibFpBP  := trc_LibFpBP;
4455    p_LibFpAB  := trc_LibFpAB;
4456    p_LibFpAP  := trc_LibFpAP;
4457    p_LibFpPO  := trc_LibFpPO;
4458    p_PayValSD := trc_PayValSD;
4459    p_PayValEC := trc_PayValEC;
4460 
4461    hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',63);
4462 
4463    -- Indicators, Splits and Updates
4464    p_PayeVal              := trc_PayeVal;
4465    p_SiteVal              := trc_SiteVal;
4466    p_It3Ind               := trc_It3Ind;
4467    p_PfUpdFig             := trc_PfUpdFig;
4468    p_RaUpdFig             := trc_RaUpdFig;
4469    p_OUpdFig              := trc_OUpdFig;
4470    p_NtiUpdFig            := trc_NtiUpdFig;
4471 
4472    hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',64);
4473 
4474    p_LSDirNum  := dbi_ZA_LS_DIR_NUM;
4475    p_LSDirVal  := dbi_ZA_LS_DIR_VAL;
4476 
4477 -- Execute The Tax Trace
4478 --
4479    py_za_tx_utl_01032006.Trace;
4480 
4481    hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',65);
4482 
4483 -- Clear Globals
4484 --
4485    py_za_tx_utl_01032006.ClearGlobals;
4486 
4487    hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',66);
4488 
4489 -- End off Trace File
4490    WrtHrTrc('------------------------------------------------------------');
4491    WrtHrTrc('--                End of Tax Trace File                   --');
4492    WrtHrTrc('------------------------------------------------------------');
4493    WrtHrTrc('                             --                             ');
4494 
4495 -- Call hr_utility stop procedure
4496    py_za_tx_utl_01032006.StopHrTrace;
4497 
4498   --dbms_debug.debug_off;
4499 
4500    RETURN l_Dum;
4501 
4502 EXCEPTION
4503    WHEN xpt_FxdPrc THEN
4504       hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',67);
4505       WrtHrTrc('Sql error msg: Fixed Percentage was not entered');
4506       py_za_tx_utl_01032006.StopHrTrace;
4507       hr_utility.set_message(801, 'Fixed Percentage not entered');
4508       py_za_tx_utl_01032006.ClearGlobals;
4509       hr_utility.raise_error;
4510    WHEN xpt_E  THEN
4511       hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',68);
4512       WrtHrTrc('xpt_Msg: '||xpt_Msg);
4513       py_za_tx_utl_01032006.StopHrTrace;
4514       hr_utility.set_message(801, xpt_Msg);
4515       py_za_tx_utl_01032006.ClearGlobals;
4516       hr_utility.raise_error;
4517    WHEN OTHERS THEN
4518       hr_utility.set_location('py_za_tx_01032006.ZaTx_01032006',69);
4519       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
4520       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
4521       py_za_tx_utl_01032006.StopHrTrace;
4522       hr_utility.set_message(801, 'ZaTx_01032006: '||TO_CHAR(SQLCODE));
4523       py_za_tx_utl_01032006.ClearGlobals;
4524       hr_utility.raise_error;
4525 END ZaTx_01032006;
4526 
4527 END PY_ZA_TX_01032006;
4528