DBA Data[Home] [Help]

PACKAGE BODY: APPS.PY_ZA_TX_01032011

Source


1 PACKAGE BODY PY_ZA_TX_01032011 AS
2 /* $Header: pyzat012.pkb 120.3 2011/06/24 12:45:24 abdash 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_01032011.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_01032011
19       ZaTxGlb_01032011
20       ZaTxDbi_01032011
21       ZaTxBal1_01032011
22       ZaTxBal2_01032011
23       ZaTxBal3_01032011
24       ZaTx_01032011
25 
26    PRIVATE FUNCTIONS
27       <none>
28 
29 
30    PRIVATE PROCEDURES
31       WrtHrTrc
32          Wrapper procedure for py_za_tx_utl_01032011.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    R Babla    14/03/2008 115.0       8406456  Copied from pyzat008.pkb ver115.2
68                                               Changes done in Tax calculation
69                                               for code 4030.
70    R Babla    10/06/2009 115.1       8512751  Added a procedure NetPayeTxbIncCalc
71                                               which calculates Net PAYE Taxable Income
72                                               used for EMP201
73    P Arusia   17/7/2009  115.2       8691928  a) Removed newlines between various
74                                               operands of the expression
75                                               b) Changed the way of raising exception
76                                               else it would have got overwritten in
77                                               the OTHERS block
78    R Babla    28/7/2009  115.3       8526698  Changes done for Net to Gross processing.
79                                               NTG processing will occur after tax on other income
80                                               is calculated to ensure that tax on this tax free earnings
81                                               that is paid by the employer doesnt affect the tax paid by employee
82                                               on other incomes.
83    R Babla    20/8/2009  115.4       8824018  Net Taxable Income calculation modified for separate abatements for
84                                               NTG earnings.
85                                               New parameters passed to function ZaTxBal5_01032011
86    R Babla    01/09/2009 115.6       8844712  Procedure LteCalc re-written for Late Payments and new global passed
87                                               for the late payment tax percentage
88    R Babla    01/09/2009 115.7       9369895  Changes in the abatement calculation for Package structure employees
89    R Babla    26/02/2010 115.8       9397464  Removed reference of dbi_ZA_ASG_TX_YR%
90    R Babla    10/03/2009 115.9       9438325  Modified SitCalc to not override the value of trc_LibFpAPOvr while
91                                               calculating tax for Annual Bonus
92    NCHINNAM   03/11/2010   115.12    10245740 Non Cumilative tax method enhancement changes.
93    NCHINNAM   24/02/2011 115.1       11806660 2011/12 Tax Year End Legislative Changes.
94    NCHINNAM   17/03/2011 115.2       11879331 Fixed the issue.
95    ABDASH     24/06/2011 115.3       12351345 SOUTH AFRICA LEGISTATIVE - LUMP SUM TAX BALANCE
96 */
97 
98 -------------------------------------------------------------------------------
99 --                               PACKAGE BODY                                --
100 -------------------------------------------------------------------------------
101 
102 -------------------------------------------------------------------------------
103 -- WrtHrTrc
104 -- Wrapper for py_za_tx_utl_01032011.WriteHrTrace
105 -------------------------------------------------------------------------------
106 PROCEDURE WrtHrTrc(
107    p_Buf IN VARCHAR2
108    )
109 AS
110 
111 BEGIN
112    py_za_tx_utl_01032011.WriteHrTrace(p_Buf);
113 END WrtHrTrc;
114 
115 
116 -------------------------------------------------------------------------------
117 -- EMP201
118 -- NetPayeTxbIncCalc
119 -- Calculates the net Paye taxable income value for the calendar month
120 -------------------------------------------------------------------------------
121 PROCEDURE NetPayeTxbIncCalc (nti_PerTotAbm BALANCE
122                            , nti_AnnTotAbm BALANCE
123                            , nti_AnnTotNTGAbm BALANCE
124                            , nti_SitFactor NUMBER) AS
125 
126    -- Variable Declaration
127    nti_PerTypInc2           BALANCE default 0 ;
128    nti_PerTypErn2           BALANCE default 0 ;
129    nti_AnnTypErn2           BALANCE default 0 ;
130    nti_TxbPerTypInc2        BALANCE default 0 ;
131    nti_TxbAnnTypInc2        BALANCE default 0 ;
132    nti_NetPerTxbInc2        BALANCE default 0 ;
133    nti_NetAnnTxbInc2        BALANCE default 0 ;
134    nti_TxbAnnTypNTGInc2     BALANCE default 0 ;
135    nti_NetAnnTxbNTGInc2     BALANCE default 0 ;
136    nti_AnnTypNTGErn2        BALANCE default 0 ;
137 
138 BEGIN
139 
140    hr_utility.set_location('py_za_tx_01032011.NetPayeTxbIncCalc',1);
141    nti_PerTypInc2 := bal_GROSS_REMUNERATION_CMTD - bal_ANN_PAYMENTS_CMTD ;
142 
143 -- Annualise by the Site Factor the Period Type Income
144 --
145    nti_PerTypErn2 := nti_PerTypInc2 * nti_SitFactor;
146 
147    hr_utility.set_location('py_za_tx_01032011.NetPayeTxbIncCalc',2);
148 
149 -- Sum Annual Type Income Calendar Month to Date Balances
150 --
151    nti_AnnTypErn2 := nti_PerTypErn2 + bal_ANN_PAYMENTS_CMTD - bal_TOT_TXB_EE_DBT_NTG_CMTD;
152 
153    hr_utility.set_location('py_za_tx_01032011.NetPayeTxbIncCalc',3);
154 
155 -- Sum Annual Type NTG Income Calendar Month to Date Balances
156 --
157    nti_AnnTypNTGErn2 := nti_AnnTypErn2 +  bal_TOT_TXB_EE_DBT_NTG_CMTD;
158 
159    hr_utility.set_location('py_za_tx_01032011.NetPayeTxbIncCalc',4);
160 
161 
162 -- Calculate New O Figures
163 --
164    nti_TxbPerTypInc2 := nti_PerTypErn2 - nti_PerTotAbm ;
165    nti_TxbAnnTypInc2 := nti_AnnTypErn2 - nti_AnnTotAbm;
166    nti_TxbAnnTypNTGInc2 := nti_AnnTypNTGErn2 - nti_AnnTotNTGAbm;
167 
168 
169    hr_utility.set_location('py_za_tx_01032011.NetPayeTxbIncCalc',5);
170 -- Deannualise Period O Figure
171 --
172    nti_NetPerTxbInc2 := nti_TxbPerTypInc2 / nti_SitFactor;
173 
174 -- Calculate the Net Taxable Annual Type Income
175 --
176    nti_NetAnnTxbInc2 := nti_TxbAnnTypInc2 - nti_TxbPerTypInc2;
177    hr_utility.set_location('py_za_tx_01032011.NetPayeTxbIncCalc',6);
178 
179 -- Calculate the Net Taxable NTG Annual Type Income
180 --
181    nti_NetAnnTxbNTGInc2 := nti_TxbAnnTypNTGInc2 - (nti_NetAnnTxbInc2 + nti_TxbPerTypInc2);
182    hr_utility.set_location('py_za_tx_01032011.NetPayeTxbIncCalc',7);
183 
184 -- Calculate New Net Taxable Income Balance
185 --
186    trc_NPtiUpdFig := (nti_NetPerTxbInc2 + nti_NetAnnTxbInc2 + nti_NetAnnTxbNTGInc2) - bal_NET_PAYE_TXB_INC_CMTD;
187 
188    WrtHrTrc('nti_SitFactor:            '||to_char(nti_SitFactor));
189    WrtHrTrc('nti_PerTotAbm:            '||to_char(nti_PerTotAbm));
190    WrtHrTrc('nti_AnnTotAbm:            '||to_char(nti_AnnTotAbm));
191    WrtHrTrc('nti_AnnTotNTGAbm:         '||to_char(nti_AnnTotNTGAbm));
192    WrtHrTrc('nti_PerTypErn2:           '||to_char(nti_PerTypErn2));
193    WrtHrTrc('nti_AnnTypErn2:           '||to_char(nti_AnnTypErn2));
194    WrtHrTrc('nti_TxbPerTypInc2:        '||to_char(nti_TxbPerTypInc2));
195    WrtHrTrc('nti_NetPerTxbInc2:        '||to_char(nti_NetPerTxbInc2));
196    WrtHrTrc('nti_TxbAnnTypInc2:        '||to_char(nti_TxbAnnTypInc2));
197    WrtHrTrc('nti_AnnTypNTGErn2:        '||to_char(nti_AnnTypNTGErn2));
198    WrtHrTrc('nti_TxbAnnTypNTGInc2:     '||to_char(nti_TxbAnnTypNTGInc2));
199    WrtHrTrc('nti_NetAnnTxbNTGInc2:     '||to_char(nti_NetAnnTxbNTGInc2));
200    WrtHrTrc('trc_NPtiUpdFig:           '||to_char(trc_NPtiUpdFig));
201 
202 END ;
203 
204 
205 
206 -------------------------------------------------------------------------------
207 -- NetTxbIncCalc
208 -- Calculates the net taxable income value for the calendar month
209 -------------------------------------------------------------------------------
210 PROCEDURE NetTxbIncCalc AS
211 
212    -- Variable Declaration
213    nti_CurMthStrtDte        DATE;
214    nti_CurMthEndDte         DATE;
215    nti_SitFactor            NUMBER;
216    nti_PerTypInc            BALANCE DEFAULT 0;
217    nti_PerTypErn            BALANCE DEFAULT 0;
218    nti_AnnTypErn            BALANCE DEFAULT 0;
219    nti_PerPenFnd            BALANCE DEFAULT 0;
220    nti_PerRfiCon            BALANCE DEFAULT 0;
221    nti_PerPenFndMax         BALANCE DEFAULT 0;
222    nti_PerPenFndAbm         BALANCE DEFAULT 0;
223    nti_AnnPenFnd            BALANCE DEFAULT 0;
224    nti_AnnRfiCon            BALANCE DEFAULT 0;
225    nti_AnnPenFndMax         BALANCE DEFAULT 0;
226    nti_AnnPenFndAbm         BALANCE DEFAULT 0;
227    nti_PerArrPenFnd         BALANCE DEFAULT 0;
228    nti_PerArrPenFndAbm      BALANCE DEFAULT 0;
229    nti_PerRetAnu            BALANCE DEFAULT 0;
230    nti_PerNrfiCon           BALANCE DEFAULT 0;
231    nti_PerRetAnuMax         BALANCE DEFAULT 0;
232    nti_PerRetAnuAbm         BALANCE DEFAULT 0;
233    nti_PerArrRetAnu         BALANCE DEFAULT 0;
234    nti_PerArrRetAnuAbm      BALANCE DEFAULT 0;
235    nti_AnnArrPenFnd         BALANCE DEFAULT 0;
236    nti_AnnArrPenFndAbm      BALANCE DEFAULT 0;
237    nti_AnnRetAnu            BALANCE DEFAULT 0;
238    nti_AnnNrfiCon           BALANCE DEFAULT 0;
239    nti_AnnRetAnuMax         BALANCE DEFAULT 0;
240    nti_AnnRetAnuAbm         BALANCE DEFAULT 0;
241    nti_AnnArrRetAnu         BALANCE DEFAULT 0;
242    nti_AnnArrRetAnuAbm      BALANCE DEFAULT 0;
243    nti_PerMedAidAbm         BALANCE DEFAULT 0;
244    nti_AnnMedAidAbm         BALANCE DEFAULT 0;
245    nti_PerTotAbm            BALANCE DEFAULT 0;
246    nti_AnnTotAbm            BALANCE DEFAULT 0;
247    nti_TxbPerTypInc         BALANCE DEFAULT 0;
248    nti_TxbAnnTypInc         BALANCE DEFAULT 0;
249    nti_NetPerTxbInc         BALANCE DEFAULT 0;
250    nti_NetAnnTxbInc         BALANCE DEFAULT 0;
251    l_65Year                 DATE;
252    -- Income Protection Policy
253    nti_PerIncProPolAbm      BALANCE DEFAULT 0;
254    nti_AnnIncProPolAbm      BALANCE DEFAULT 0;
255    --TYS2010
256    nti_PerDonAmt            BALANCE DEFAULT 0;
257    nti_AnnDonAmt            BALANCE DEFAULT 0;
258    nti_TxbPerTypIncWoDon    BALANCE DEFAULT 0;
259    nti_TxbAnnTypIncWoDon    BALANCE DEFAULT 0;
260    --NTG
261    nti_AnnTypNTGErn         BALANCE DEFAULT 0;
262    nti_NetAnnTxbNTGInc      BALANCE DEFAULT 0;
263    nti_AnnRfiEEDbtNTGCon    BALANCE DEFAULT 0;
264    nti_AnnNrfiEEDbtNTGCon   BALANCE DEFAULT 0;
265    nti_AnnPenFndNTGMax      BALANCE DEFAULT 0;
266    nti_AnnPenFndNTGAbm      BALANCE DEFAULT 0;
267    nti_AnnRetAnuNTGMax      BALANCE DEFAULT 0;
268    nti_AnnRetAnuNTGAbm      BALANCE DEFAULT 0;
269    nti_AnnTotNTGAbm         BALANCE DEFAULT 0;
270    nti_TxbAnnTypNTGIncWoDon BALANCE DEFAULT 0;
271    nti_TxbAnnTypNTGInc      BALANCE DEFAULT 0;
272 
273    --Bug 9369895
274    nti_TotTxbIncPkgYtd     BALANCE DEFAULT 0;
275    nti_TotTxbIncEEDbtPkgYtd BALANCE DEFAULT 0;
276    nti_TotTxbNIYtd         BALANCE DEFAULT 0;
277    nti_TotTxbFBYtd         BALANCE DEFAULT 0;
278    nti_TotTxbTAYtd         BALANCE DEFAULT 0;
279    nti_TotTxbPOYtd         BALANCE DEFAULT 0;
280 
281    /*
282    -- Total Non Taxable Travel Allowance
283    trc_TOT_NON_TXB_TA_CMTD  BALANCE DEFAULT 0;
284    -- Total Non Taxable Public Office
285    trc_TOT_NON_TXB_PO_CMTD  BALANCE DEFAULT 0;
286 */
287 BEGIN
288    hr_utility.set_location('py_za_tx_01032011.NetTxbIncCalc',1);
289 -- Calculate the Current Effective Calendar Month to Date Start Date
290 --
291    SELECT trunc(dbi_SES_DTE,'Month')
292      INTO nti_CurMthStrtDte
293      FROM dual;
294    hr_utility.set_location('py_za_tx_01032011.NetTxbIncCalc',2);
295 
296 -- Calculate the Current Effective Calendar Month to Date End Date
297 --
298    SELECT last_day(dbi_SES_DTE)
299      INTO nti_CurMthEndDte
300      FROM dual;
301    hr_utility.set_location('py_za_tx_01032011.NetTxbIncCalc',3);
302 
303 -- Calculate Site Factor
304 --
305    -- Based on the number of days in the calendar year over days in the calendar month
306    nti_SitFactor := dbi_ZA_DYS_IN_YR / (nti_CurMthEndDte - nti_CurMthStrtDte + 1);
307 
308    hr_utility.set_location('py_za_tx_01032011.NetTxbIncCalc',4);
309 
310    WrtHrTrc('nti_CurMthEndDte:  '||to_char(nti_CurMthEndDte,'DD/MM/YYYY'));
311    WrtHrTrc('nti_CurMthStrtDte: '||to_char(nti_CurMthStrtDte,'DD/MM/YYYY'));
312 
313 -- Calculate the Taxable Portion of the Not-Fully Taxable Income Balances
314 /* commented to revert the changes
315 -- For bug 6640212
316    trc_TOT_NON_TXB_TA_CMTD  := bal_TOT_TXB_TA_CMTD * ( 100 - glb_ZA_TRV_ALL_TX_PRC ) / 100;
317 
318    trc_TOT_NON_TXB_PO_CMTD  := bal_TOT_TXB_PO_CMTD * ( 100 - glb_ZA_PBL_TX_PRC ) / 100;
319 
320    WrtHrTrc('trc_TOT_NON_TXB_TA_CMTD: '||trc_TOT_NON_TXB_TA_CMTD);
321    WrtHrTrc('trc_TOT_NON_TXB_PO_CMTD: '||trc_TOT_NON_TXB_PO_CMTD);
322 
323    nti_PerTypInc := bal_TOT_SKL_INC_CMTD - trc_TOT_NON_TXB_TA_CMTD - trc_TOT_NON_TXB_PO_CMTD;
324 
325 */
326 
327    -- Fix for bug#10372926.
328    --bal_TOT_TXB_TA_CMTD  := bal_TOT_TXB_TA_CMTD * glb_ZA_TRV_ALL_TX_PRC / 100;
329 
330    bal_TOT_TXB_PO_CMTD  := bal_TOT_TXB_PO_CMTD * glb_ZA_PBL_TX_PRC / 100;
331 
332 -- Sum Period Type Income Calendar Month to Date Balances
333 --
334    nti_PerTypInc := bal_TOT_SKL_INC_CMTD;
335 -- Annualise by the Site Factor the Period Type Income
336 --
337    nti_PerTypErn := nti_PerTypInc * nti_SitFactor;
338 -- Sum Annual Type Income Calendar Month to Date Balances
339 --
340    nti_AnnTypErn := nti_PerTypErn + bal_TOT_SKL_ANN_INC_CMTD;
341 
342 -- NTG
343 -- Sum Annual Type NTG Calendar Month to Date Balances
344    nti_AnnTypNTGErn := nti_AnnTypErn + bal_TOT_SKL_ANN_INC_NTG_CMTD;
345 -----------------------------
346 -- Calculate Abatement Values
347 -----------------------------
348    -- Calculate the assignments 65 Year Date
349    l_65Year := add_months(py_za_tx_01032011.dbi_PER_DTE_OF_BRTH,780);
350 
351    -------------------------
352    -- Pension Fund Abatement
353    -------------------------
354       ---------------------
355       -- Period Calculation
356       ---------------------
357          -- Annualise Period Pension Fund Contribution
358          nti_PerPenFnd := bal_CUR_PF_CMTD * nti_SitFactor;
359          -- Annualise Period Rfiable Contributions
360          nti_PerRfiCon := bal_TOT_RFI_INC_CMTD * nti_SitFactor;
361       ---------------------
362       -- Annual Calculation
363       ---------------------
364          -- Annual Pension Fund Contribution
365          nti_AnnPenFnd := nti_PerPenFnd + bal_ANN_PF_CMTD;
366          -- Annual Rfi Contribution
367          nti_AnnRfiCon := nti_PerRfiCon + bal_TOT_RFI_AN_INC_CMTD;
368 
369       -----------------------------
370       -- NTG Annual RFI Calculation
371       ------------------------------
372          -- Annual NTG Rfi Contribution
373          nti_AnnRfiEEDbtNTGCon := nti_AnnRfiCon + bal_TOT_RFI_EE_DBT_NTG_CMTD;
374 
375       --------------------------------
376       -- Arrear Pension Fund Abatement
377       --------------------------------
378          hr_utility.set_location('py_za_tx_01032011.NetTxbIncCalc',19);
379          -------------
380          -- Excess ITD
381          -------------
382          nti_PerArrPenFnd := bal_EXC_ARR_PEN_ITD;
383          ------------------------------------
384          -- Current/Annual based on frequency
385          ------------------------------------
386          nti_PerArrPenFnd :=
387             nti_PerArrPenFnd + ( bal_ARR_PF_CMTD * nti_SitFactor);
388           ---------
389           -- Annual
390           ---------
391           nti_AnnArrPenFnd := nti_PerArrPenFnd + bal_ANN_ARR_PF_CMTD;
392 
393       -------------------------------
394       -- Retirement Annuity Abatement
395       -------------------------------
396          hr_utility.set_location('py_za_tx_01032011.NetTxbIncCalc',20);
397          -------------
398          -- Current RA
399          -------------
400          -- Calculate RA Contribution
401          nti_PerRetAnu := bal_CUR_RA_CMTD * nti_SitFactor;
402          ---------------------
403          -- Current NRFI Contr
404          ---------------------
405          IF bal_CUR_PF_CMTD + bal_ANN_PF_CMTD = 0 THEN
406             hr_utility.set_location('py_za_tx_01032011.NetTxbIncCalc',21);
407             nti_PerNrfiCon := (
408                                 bal_TOT_RFI_INC_CMTD + bal_TOT_NRFI_INC_CMTD
409                               )
410                               * nti_SitFactor;
411          ELSE
412             hr_utility.set_location('py_za_tx_01032011.NetTxbIncCalc',22);
413             nti_PerNrfiCon := bal_TOT_NRFI_INC_CMTD * nti_SitFactor;
414          END IF;
415          ------------
416          -- Annual RA
417          ------------
418          nti_AnnRetAnu := nti_PerRetAnu + bal_ANN_RA_CMTD;
419 
420          IF bal_CUR_PF_CMTD + bal_ANN_PF_CMTD = 0 THEN
421             hr_utility.set_location('py_za_tx_01032011.NetTxbIncCalc',23);
422 
423             nti_AnnNrfiCon := nti_PerNrfiCon
424                             + bal_TOT_NRFI_AN_INC_CMTD
425                             + bal_TOT_RFI_AN_INC_CMTD;
426          ELSE
427             hr_utility.set_location('py_za_tx_01032011.NetTxbIncCalc',24);
428             nti_AnnNrfiCon := nti_PerNrfiCon + bal_TOT_NRFI_AN_INC_CMTD;
429          END IF;
430 
431         ------------------------------
432         --Annual NRFI NTG Contribution
433         ------------------------------
434          IF bal_CUR_PF_CMTD + bal_ANN_PF_CMTD = 0 THEN
435             hr_utility.set_location('py_za_tx_01032011.NetTxbIncCalc',23);
436 
437             nti_AnnNrfiEEDbtNTGCon := nti_AnnNrfiCon
438                             + bal_TOT_NRFI_EE_DBT_NTG_CMTD
439                             + bal_TOT_RFI_EE_DBT_NTG_CMTD;
440          ELSE
441             hr_utility.set_location('py_za_tx_01032011.NetTxbIncCalc',24);
442             nti_AnnNrfiEEDbtNTGCon := nti_AnnNrfiCon + bal_TOT_NRFI_EE_DBT_NTG_CMTD;
443          END IF;
444 
445       --------------------------------------
446       -- Arrear Retirement Annuity Abatement
447       --------------------------------------
448          hr_utility.set_location('py_za_tx_01032011.NetTxbIncCalc',25);
449          -------------
450          -- Excess ITD
451          -------------
452          nti_PerArrRetAnu := bal_EXC_ARR_RA_ITD;
453          ------------------------------------
454          -- Current/Annual based on frequency
455          ------------------------------------
456          nti_PerArrRetAnu :=   nti_PerArrRetAnu
457                            + ( bal_ARR_RA_CMTD
458                              * nti_SitFactor
459                              );
460          ---------
461          -- Annual
462          ---------
463          nti_AnnArrRetAnu := nti_PerArrRetAnu
464                            + nti_AnnArrRetAnu
465                            + bal_ANN_ARR_RA_CMTD;
466 
467    ------------------------
468    -- Medical Aid Abatement
469    ------------------------
470       -- If the person is not yet 65 this tax year
471       -- IF l_65Year > dbi_ZA_ASG_TX_YR_END THEN
472       IF l_65Year > dbi_ZA_TX_YR_END THEN
473 
474          ----------
475          -- Current
476          ----------
477          nti_PerMedAidAbm :=
478             bal_MED_CNTRB_ABM_CMTD
479           * nti_SitFactor;
480          ---------
481          -- Annual
482          ---------
483          nti_AnnMedAidAbm :=
484             nti_PerMedAidAbm
485           + bal_ANN_MED_CNTRB_ABM_CMTD;
486       ELSE
487       -- if the person is over 65
488          ----------
489          -- Current
490          ----------
491          nti_PerMedAidAbm :=
492             bal_MED_CONTR_CMTD
493           * nti_SitFactor;
494          ---------
495          -- Annual
496          ---------
497          nti_AnnMedAidAbm := nti_PerMedAidAbm;
498       END IF;
499 
500    ---------------------------
501    -- Income Protection Policy
502    ---------------------------
503       ---------------------
504       -- Period Calculation
505       ---------------------
506       -- Annualise Income Protection Policy Contributions
507       nti_PerIncProPolAbm := bal_EE_INC_PRO_POL_CMTD * nti_SitFactor;
508 
509       hr_utility.set_location('py_za_tx_01032011.NetTxbIncCalc',26);
510 
511       ---------------------
512       -- Annual Calculation
513       ---------------------
514       -- Annual Income Protection Policy Contributions
515       nti_AnnIncProPolAbm :=
516          nti_PerIncProPolAbm
517        + bal_ANN_EE_INC_PRO_POL_CMTD;
518 
519    --TYE 2010
520    ---------------------------
521    -- Donation made by EE pd by ER
522    ---------------------------
523       ---------------------
524       -- Period Calculation
525       ---------------------
526       -- Annualise Donation Amount
527       nti_PerDonAmt := bal_DONAT_MD_EE_CMTD * nti_SitFactor;
528 
529       hr_utility.set_location('py_za_tx_01032011.NetTxbIncCalc',27);
530 
531       ---------------------
532       -- Annual Calculation
533       ---------------------
534       -- Annual Donation
535       nti_AnnDonAmt := nti_PerDonAmt + bal_ANN_DONAT_MD_EE_CMTD;
536 
537       --Bug 9369895
538       if trc_PenBasis = 1 then --Fixed Percentage of Total Package
539             nti_TotTxbNIYtd :=  bal_TOT_TXB_NI_CMTD * nti_SitFactor;
540 
541             nti_TotTxbFBYtd :=  bal_TOT_TXB_FB_CMTD * nti_SitFactor;
542 
543             nti_TotTxbTAYtd :=  bal_TOT_TXB_TA_CMTD * nti_SitFactor;
544 
545             nti_TotTxbPOYtd :=  bal_TOT_TXB_PO_CMTD * nti_SitFactor;
546 
547             nti_TotTxbIncPkgYtd :=   (  nti_TotTxbNIYtd + nti_TotTxbFBYtd
548                                       + nti_TotTxbTAYtd + nti_TotTxbPOYtd
549                                       + bal_TOT_TXB_AB_CMTD
550                                       + bal_TOT_TXB_AP_CMTD
551                                       + bal_TOT_TXB_AP_NTG_CMTD );
552 
553             nti_TotTxbIncEEDbtPkgYtd := ( nti_TotTxbIncPkgYtd
554                                       + bal_TOT_TXB_EE_DBT_NTG_CMTD );
555 
556       end if;
557 
558    ----------------------------------------------------------------------------
559    --                        CALCULATE THE ABATEMENTS                        --
560    ----------------------------------------------------------------------------
561    -------------------------
562    -- Pension Fund Abatement
563    -------------------------
564 
565       if trc_PenBasis = 2 then --Percentage of Specific Income
566               ---------------------
567               -- Period Calculation
568               ---------------------
569               -- Calculate the Pension Fund Maximum
570               nti_PerPenFndMax := GREATEST( glb_ZA_PF_AN_MX_ABT
571                                           , glb_ZA_PF_MX_PRC / 100 * nti_PerRfiCon
572                                           );
573               -- Calculate Period Pension Fund Abatement
574               nti_PerPenFndAbm := LEAST(nti_PerPenFnd, nti_PerPenFndMax);
575               ---------------------
576               -- Annual Calculation
577               ---------------------
578               -- Calculate the Pension Fund Maximum
579               nti_AnnPenFndMax := GREATEST( glb_ZA_PF_AN_MX_ABT
580                                           , glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiCon
581                                           );
582 
583               -- Calculate Annual Pension Fund Abatement
584               nti_AnnPenFndAbm := LEAST(nti_AnnPenFnd, nti_AnnPenFndMax);
585               ----------------------------------------------
586               -- Annual NTG EE Debt Pension Fund Calculation
587               -----------------------------------------------
588               -- Calculate the Pension Fund Maximum for Net to Gross Pymt of EE Debt
589               nti_AnnPenFndNTGMax := GREATEST( glb_ZA_PF_AN_MX_ABT
590                                              , glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiEEDbtNTGCon
591                                               );
592 
593               -- Calculate Annual Pension Fund Abatement for Net to Gross Pymt of EE Debt
594               nti_AnnPenFndNTGAbm := LEAST(nti_AnnPenFnd, nti_AnnPenFndNTGMax);
595 
596       else
597               ---------------------
598               -- Annual Calculation
599               ---------------------
600               -- Calculate Annual Pension Fund Abatement
601               nti_AnnPenFndAbm := LEAST( nti_AnnPenFnd, glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiCon
602                                        , glb_ZA_PF_MX_PRC / 100 * nti_TotTxbIncPkgYtd);
603 
604               ---------------------
605               -- Periodic Calculation
606               ---------------------
607               nti_PerPenFndAbm := nti_AnnPenFndAbm;
608               ----------------------------------------------
609               -- Annual NTG EE Debt Pension Fund Calculation
610               -----------------------------------------------
611               -- Calculate the Pension Fund Maximum for Net to Gross Pymt of EE Debt
612               nti_AnnPenFndNTGMax := GREATEST( glb_ZA_PF_AN_MX_ABT
613                                              , glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiEEDbtNTGCon
614                                               );
615 
616               -- Calculate Annual Pension Fund Abatement for Net to Gross Pymt of EE Debt
617               nti_AnnPenFndNTGAbm := LEAST( nti_AnnPenFnd, glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiEEDbtNTGCon
618                                            ,glb_ZA_PF_MX_PRC / 100 * nti_TotTxbIncEEDbtPkgYtd );
619 
620       end if;
621 
622    --------------------------------
623    -- Arrear Pension Fund Abatement
624    --------------------------------
625       ---------------------
626       -- Period Calculation
627       ---------------------
628       nti_PerArrPenFndAbm := LEAST(nti_PerArrPenFnd, glb_ZA_ARR_PF_AN_MX_ABT);
629       ---------------------
630       -- Annual Calculation
631       ---------------------
632       nti_AnnArrPenFndAbm := LEAST(nti_AnnArrPenFnd, glb_ZA_ARR_PF_AN_MX_ABT);
633    ---------------------------------
634    -- Retirement Annnnuity Abatement
635    ---------------------------------
636       ---------------------
637       -- Period Calculation
638       ---------------------
639       -- Calculate the Retirement Annuity Maximum
640       nti_PerRetAnuMax := GREATEST( glb_ZA_PF_AN_MX_ABT
641                                   , glb_ZA_RA_AN_MX_ABT - nti_PerPenFndAbm
642                                   , glb_ZA_RA_MX_PRC / 100 * nti_PerNrfiCon
643                                   );
644 
645       -- Calculate Retirement Annuity Abatement
646       nti_PerRetAnuAbm := LEAST(nti_PerRetAnu, nti_PerRetAnuMax);
647       ---------------------
648       -- Annual Calculation
649       ---------------------
650       nti_AnnRetAnuMax := GREATEST( glb_ZA_PF_AN_MX_ABT
651                                   , glb_ZA_RA_AN_MX_ABT - nti_AnnPenFndAbm
652                                   , glb_ZA_RA_MX_PRC / 100 * nti_AnnNrfiCon
653                                   );
654 
655       -- Calculate Retirement Annuity Abatement
656       nti_AnnRetAnuAbm := LEAST(nti_AnnRetAnu, nti_AnnRetAnuMax);
657 
658       -----------------------------------------------------
659       -- Annual NTG EE Debt Retirement Annuity Calculation
660       -----------------------------------------------------
661       -- Calculate the Retirement Annuity Maximum for Net to Gross Pymt of EE Debt
662       nti_AnnRetAnuNTGMax := GREATEST( glb_ZA_PF_AN_MX_ABT
663                                      , glb_ZA_RA_AN_MX_ABT - nti_AnnPenFndAbm
664                                      , glb_ZA_RA_MX_PRC / 100 * nti_AnnNrfiEEDbtNTGCon
665                                      );
666 
667       -- Calculate the Retirement Annuity Abatement for Net to Gross Pymt of EE Debt
668       nti_AnnRetAnuNTGAbm := LEAST(nti_AnnRetAnu, nti_AnnRetAnuNTGMax);
669 
670 
671    --------------------------------------
672    -- Arrear Retirement Annuity Abatement
673    --------------------------------------
674       ---------------------
675       -- Period Calculation
676       ---------------------
677       nti_PerArrRetAnuAbm := LEAST(nti_PerArrRetAnu, glb_ZA_ARR_RA_AN_MX_ABT);
678       ---------------------
679       -- Annual Calculation
680       ---------------------
681       nti_AnnArrRetAnuAbm := LEAST(nti_AnnArrRetAnu, glb_ZA_ARR_RA_AN_MX_ABT);
682 
683       hr_utility.set_location('py_za_tx_01032011.NetTxbIncCalc',27);
684 
685    -------------------
686    -- Total Abatements
687    -------------------
688       -- Period Total Abatement
689       nti_PerTotAbm := ( nti_PerPenFndAbm
690                        + nti_PerArrPenFndAbm
691                        + nti_PerRetAnuAbm
692                        + nti_PerArrRetAnuAbm
693                        + nti_PerMedAidAbm
694                        + nti_PerIncProPolAbm
695                        );
696       -- Annual Total Abatements
697       nti_AnnTotAbm := ( nti_AnnPenFndAbm
698                        + nti_AnnArrPenFndAbm
699                        + nti_AnnRetAnuAbm
700                        + nti_AnnArrRetAnuAbm
701                        + nti_AnnMedAidAbm
702                        + nti_AnnIncProPolAbm
703                        );
704       -- Annual NTG Total Abatements
705       nti_AnnTotNTGAbm := ( nti_AnnPenFndNTGAbm
706                        + nti_AnnArrPenFndAbm
707                        + nti_AnnRetAnuNTGAbm
708                        + nti_AnnArrRetAnuAbm
709                        + nti_AnnMedAidAbm
710                        + nti_AnnIncProPolAbm
711                        );
712 
713 
714 -- Calculate New O Figures
715 --
716    --TYS2010
717    --Suffixed the variable with WoDon to denote that donation amount is not deducted.
718    nti_TxbPerTypIncWoDon := nti_PerTypErn - nti_PerTotAbm;
719    nti_TxbPerTypInc      := nti_TxbPerTypIncWoDon - least(glb_ZA_ALLOW_DONATION_PERC*nti_TxbPerTypIncWoDon/100,nti_PerDonAmt);
720 
721    nti_TxbAnnTypIncWoDon := nti_AnnTypErn - nti_AnnTotAbm;
722    nti_TxbAnnTypInc      := nti_TxbAnnTypIncWoDon - least(glb_ZA_ALLOW_DONATION_PERC*nti_TxbAnnTypIncWoDon/100,nti_AnnDonAmt);
723 
724    --NTG
725    nti_TxbAnnTypNTGIncWoDon := nti_AnnTypNTGErn - nti_AnnTotNTGAbm;
726    nti_TxbAnnTypNTGInc      := nti_TxbAnnTypNTGIncWoDon - least(glb_ZA_ALLOW_DONATION_PERC*nti_TxbAnnTypNTGIncWoDon/100,nti_AnnDonAmt);
727 
728 
729 -- Deannualise Period O Figure
730 --
731    nti_NetPerTxbInc := nti_TxbPerTypInc / nti_SitFactor;
732 -- Calculate the Net Taxable Annual Type Income
733 --
734    nti_NetAnnTxbInc := nti_TxbAnnTypInc - nti_TxbPerTypInc;
735 -- Calculate the Net Taxable Annual Type NTG Income
736 --
737    if bal_TOT_SKL_ANN_INC_NTG_CMTD <> 0 then
738       nti_NetAnnTxbNTGInc := nti_TxbAnnTypNTGInc - (nti_NetAnnTxbInc + nti_TxbPerTypInc);
739    else
740       nti_NetAnnTxbNTGInc := 0;
741    end if;
742 
743 
744 -- Calculate New Net Taxable Income Balance
745 --
746    trc_NtiUpdFig := (nti_NetPerTxbInc + nti_NetAnnTxbInc + nti_NetAnnTxbNTGInc) - bal_NET_TXB_INC_CMTD;
747 
748 
749    WrtHrTrc('nti_SitFactor:            '||to_char(nti_SitFactor));
750    WrtHrTrc('nti_PerTypErn:            '||to_char(nti_PerTypErn));
751    WrtHrTrc('nti_AnnTypErn:            '||to_char(nti_AnnTypErn));
752    WrtHrTrc('nti_NetPerTxbInc:         '||to_char(nti_NetPerTxbInc));
753    WrtHrTrc('nti_NetAnnTxbInc:         '||to_char(nti_NetAnnTxbInc));
754    WrtHrTrc('bal_NET_TXB_INC_CMTD:     '||to_char(bal_NET_TXB_INC_CMTD));
755    WrtHrTrc('trc_NtiUpdFig:            '||to_char(trc_NtiUpdFig));
756    WrtHrTrc(' ');
757    WrtHrTrc('nti_PerTotAbm:            '||to_char(nti_PerTotAbm));
758    WrtHrTrc('nti_PerTotAbm consists of:');
759    WrtHrTrc('nti_PerPenFndAbm:         '||to_char(nti_PerPenFndAbm));
760    WrtHrTrc('nti_PerArrPenFndAbm:      '||to_char(nti_PerArrPenFndAbm));
761    WrtHrTrc('nti_PerRetAnuAbm:         '||to_char(nti_PerRetAnuAbm));
762    WrtHrTrc('nti_PerArrRetAnuAbm:      '||to_char(nti_PerArrRetAnuAbm));
763    WrtHrTrc('nti_PerMedAidAbm:         '||to_char(nti_PerMedAidAbm));
764    WrtHrTrc('nti_PerIncProPolAbm:      '||to_char(nti_PerIncProPolAbm));
765    WrtHrTrc(' ');
766    WrtHrTrc('nti_AnnTotAbm:            '||to_char(nti_AnnTotAbm));
767    WrtHrTrc('nti_AnnTotAbm consists of:');
768    WrtHrTrc('nti_AnnPenFndAbm:         '||to_char(nti_AnnPenFndAbm));
769    WrtHrTrc('nti_AnnArrPenFndAbm:      '||to_char(nti_AnnArrPenFndAbm));
770    WrtHrTrc('nti_AnnRetAnuAbm:         '||to_char(nti_AnnRetAnuAbm));
771    WrtHrTrc('nti_AnnArrRetAnuAbm:      '||to_char(nti_AnnArrRetAnuAbm));
772    WrtHrTrc('nti_AnnMedAidAbm:         '||to_char(nti_AnnMedAidAbm));
773    WrtHrTrc('nti_AnnIncProPolAbm:      '||to_char(nti_AnnIncProPolAbm));
774    WrtHrTrc('nti_PerDonAmt:            '||to_char(nti_PerDonAmt));
775    WrtHrTrc('nti_AnnDonAmt:            '||to_char(nti_AnnDonAmt));
776    WrtHrTrc(' ');
777    WrtHrTrc('nti_AnnTotNTGAbm:         '||to_char(nti_AnnTotNTGAbm));
778    WrtHrTrc('nti_AnnTotNTGAbm consists of:');
779    WrtHrTrc('nti_AnnPenFndNTGAbm:      '||to_char(nti_AnnPenFndNTGAbm));
780    WrtHrTrc('nti_AnnArrPenFndAbm:      '||to_char(nti_AnnArrPenFndAbm));
781    WrtHrTrc('nti_AnnRetAnuNTGAbm:      '||to_char(nti_AnnRetAnuNTGAbm));
782    WrtHrTrc('nti_AnnArrRetAnuAbm:      '||to_char(nti_AnnArrRetAnuAbm));
783    WrtHrTrc('nti_AnnMedAidAbm:         '||to_char(nti_AnnMedAidAbm));
784    WrtHrTrc('nti_AnnIncProPolAbm:      '||to_char(nti_AnnIncProPolAbm));
785    WrtHrTrc('nti_PerDonAmt:            '||to_char(nti_PerDonAmt));
786    WrtHrTrc('nti_AnnDonAmt:            '||to_char(nti_AnnDonAmt));
787    WrtHrTrc('nti_TotTxbIncPkgYtd       '||to_char(nti_TotTxbIncPkgYtd));
788    WrtHrTrc('nti_TotTxbIncEEDbtPkgYtd  '||to_char(nti_TotTxbIncEEDbtPkgYtd));
789    WrtHrTrc('nti_TotTxbNIYtd           '||to_char(nti_TotTxbNIYtd));
790    WrtHrTrc('nti_TotTxbFBYtd           '||to_char(nti_TotTxbFBYtd));
791    WrtHrTrc('nti_TotTxbTAYtd           '||to_char(nti_TotTxbTAYtd));
792    WrtHrTrc('nti_TotTxbPOYtd           '||to_char(nti_TotTxbPOYtd));
793 
794 
795    -- EMP201
796    -- Calculations for Net PAYE Taxable Income
797    NetPayeTxbIncCalc (nti_PerTotAbm, nti_AnnTotAbm, nti_AnnTotNTGAbm, nti_SitFactor);
798 
799 
800 EXCEPTION
801    WHEN OTHERS THEN
802       IF xpt_Msg = 'No Error' THEN
803          xpt_Msg := 'NetTxbIncCalc: '||TO_CHAR(SQLCODE);
804       END IF;
805        RAISE xpt_E;
806 END NetTxbIncCalc;
807 
808 -------------------------------------------------------------------------------
809 -- Tax Override Function
810 -------------------------------------------------------------------------------
811 FUNCTION ZaTxOvr_01032011(
812     p_OvrTyp IN VARCHAR2
813    ,p_TxOnNI IN NUMBER
814    ,p_TxOnAP IN NUMBER
815    ,p_TxPrc  IN NUMBER
816    )RETURN NUMBER
817 AS
818    l_Dum NUMBER := 1;
819 BEGIN
820    -- Set the Override Global
821    trc_OvrTxCalc := TRUE;
822 
823    -- Set Override Values
824    trc_OvrTyp  := p_OvrTyp;
825 
826    IF p_OvrTyp = 'V' THEN
827       trc_LibFpNI := p_TxOnNI;
828       trc_LibFpAP := p_TxOnAP;
829    ELSIF p_OvrTyp = 'P' THEN
830       trc_OvrPrc  := p_TxPrc;
831    END IF;
832    RETURN l_Dum;
833 
834 EXCEPTION
835    WHEN OTHERS THEN
836       hr_utility.set_message(801, 'ZaTxOvr_01032011: '||TO_CHAR(SQLCODE));
837       hr_utility.raise_error;
838 END ZaTxOvr_01032011;
839 
840 -------------------------------------------------------------------------------
841 --                    Main Tax Calculation Procedures                        --
842 -------------------------------------------------------------------------------
843 -------------------------------------------------------------------------------
844 -- LteCalc
845 -- This procedure is not called for Late Payments. This is replaced with LteCalc
846 -- provided below
847 -- for Bug 8844712
848 -------------------------------------------------------------------------------
849 /*
850 PROCEDURE LteCalc AS
851 
852    -- Variables
853    l_EndDate             DATE;
854    l_StrtDte             DATE;
855    l_65Year              DATE;
856    l_ZA_TX_YR_END        DATE;
857    l_ZA_ADL_TX_RBT       NUMBER;
858    l_ZA_PRI_TX_RBT       NUMBER;
859    l_ZA_PRI_TX_THRSHLD   NUMBER;
860    l_ZA_SC_TX_THRSHLD    NUMBER;
861 
862    l_Sl                  BOOLEAN;
863    l_Np                  BALANCE DEFAULT 0;
864 
865 
866    -- Private Functions
867    --
868       FUNCTION getBalVal
869          (p_BalNme IN pay_balance_types.balance_name%TYPE
870          ,p_EffDte   IN DATE
871          ) RETURN NUMBER
872       AS
873          -- Variables
874          l_BalVal BALANCE;
875          l_BalTypId pay_balance_types.balance_type_id%TYPE;
876          l_dimension pay_balance_dimensions.dimension_name%TYPE ;
877 
878       BEGIN
879          hr_utility.set_location('py_za_tx_01032011.LteCalc',1);
880          -- Get the Balance Type ID
881          SELECT pbt.balance_type_id
882            INTO l_BalTypId
883            FROM pay_balance_types pbt
884           WHERE pbt.balance_name = p_BalNme
885            AND  pbt.legislation_code = 'ZA';
886 
887          hr_utility.set_location('py_za_tx_01032011.LteCalc',2);
888 
889          -- Get the Balance Value
890          l_dimension := '_ASG_TAX_YTD';
891          l_BalVal := py_za_bal.get_balance_value
892                                       ( con_ASG_ID
893                                       , l_BalTypId
894                                       , l_dimension
895                                       , p_EffDte
896                                       );
897          RETURN l_BalVal;
898       END getBalVal;
899 
900       FUNCTION getBalVal2
901          (p_BalNme IN pay_balance_types.balance_name%TYPE
902          ,p_EffDte   IN DATE
903          ) RETURN NUMBER
904       AS
905          -- Variables
906          l_BalVal BALANCE;
907          l_BalTypId pay_balance_types.balance_type_id%TYPE;
908          l_dimension pay_balance_dimensions.dimension_name%TYPE ;
909       BEGIN
910          hr_utility.set_location('py_za_tx_01032011.LteCalc',3);
911          -- Get the Balance Type ID
912          SELECT pbt.balance_type_id
913            INTO l_BalTypId
914            FROM pay_balance_types pbt
915           WHERE pbt.balance_name = p_BalNme;
916 
917          hr_utility.set_location('py_za_tx_01032011.LteCalc',4);
918 
919          -- Get the Balance Value
920          l_dimension := '_ASG_ITD';
921          l_BalVal := py_za_bal.get_balance_value
922                                        ( con_ASG_ID
923                                        , l_BalTypId
924                                        , l_dimension
925                                        , p_EffDte
926                                        );
927          RETURN l_BalVal;
928       END getBalVal2;
929 
930 BEGIN
931    hr_utility.set_location('py_za_tx_01032011.LteCalc',5);
932    -- Does the Assignment have an OFigure?
933    --
934    IF bal_TOT_TXB_INC_ITD <= 0 THEN
935       hr_utility.set_location('py_za_tx_01032011.LteCalc',6);
936       -- Calculate the 'O' Figure
937       -- Set the Global
938       trc_CalTyp := 'PstCalc';
939       -- Set the Site Factor to the value of the previous tax year
940       l_StrtDte := dbi_ZA_ASG_TX_YR_STRT;
941       l_EndDate := dbi_ZA_ASG_TX_YR_END;
942       hr_utility.set_location('py_za_tx_01032011.LteCalc',8);
943 
944       trc_SitFactor := (l_EndDate - l_StrtDte + 1) / py_za_tx_utl_01032011.DaysWorked;
945       hr_utility.set_location('py_za_tx_01032011.LteCalc',9);
946 
947       -- Populate Local Balance Variables
948       -- The PTD Globals are used as dummy to store the previous tax year's
949       -- Balance values
950 
951       bal_ANN_ARR_PF_PTD           := getBalVal('Annual Arrear Pension Fund',l_EndDate);
952       bal_ANN_ARR_RA_PTD           := getBalVal('Annual Arrear Retirement Annuity',l_EndDate);
953       bal_ANN_PF_PTD               := getBalVal('Annual Pension Fund',l_EndDate);
954       bal_ANN_RA_PTD               := getBalVal('Annual Retirement Annuity',l_EndDate);
955       bal_ARR_PF_PTD               := getBalVal('Arrear Pension Fund',l_EndDate);
956       bal_ARR_RA_PTD               := getBalVal('Arrear Retirement Annuity',l_EndDate);
957       bal_BP_PTD                   := getBalVal('Bonus Provision',l_EndDate);
958       bal_CUR_PF_PTD               := getBalVal('Current Pension Fund',l_EndDate);
959       bal_CUR_RA_PTD               := getBalVal('Current Retirement Annuity',l_EndDate);
960       bal_EXC_ARR_PEN_PTD          := getBalVal2('Excess Arrear Pension',l_EndDate);
961       bal_EXC_ARR_RA_PTD           := getBalVal2('Excess Arrear Retirement Annuity',l_EndDate);
962       bal_MED_CONTR_PTD            := getBalVal('Medical Aid Contribution',l_EndDate);
963       bal_MED_CNTRB_ABM_PTD        := getBalVal('Medical Contributions Abatement',l_EndDate);
964       bal_ANN_MED_CNTRB_ABM_PTD    := getBalVal('Annual Medical Contributions Abatement',l_EndDate);
965       bal_TOT_INC_PTD              := getBalVal('Total Income',l_EndDate);
966       bal_TOT_NRFI_AN_INC_PTD      := getBalVal('Total NRFIable Annual Income',l_EndDate);
967       bal_TOT_NRFI_INC_PTD         := getBalVal('Total NRFIable Income',l_EndDate);
968       bal_TOT_RFI_AN_INC_PTD       := getBalVal('Total RFIable Annual Income',l_EndDate);
969       bal_TOT_RFI_INC_PTD          := getBalVal('Total RFIable Income',l_EndDate);
970       bal_TOT_TXB_AB_PTD           := getBalVal('ZATax Total Taxable Annual Bonus',l_EndDate);
971       bal_TOT_TXB_AP_PTD           := getBalVal('ZATax Total Taxable Annual Payments',l_EndDate);
972       bal_TOT_TXB_FB_PTD           := getBalVal('ZATax Total Taxable Fringe Benefits',l_EndDate);
973       bal_TOT_TXB_NI_PTD           := getBalVal('ZATax Total Taxable Normal Income',l_EndDate);
974       bal_TOT_TXB_TA_PTD           := getBalVal('ZATax Total Taxable Travel Allowance',l_EndDate);
975       bal_TOT_TXB_PO_PTD           := getBalVal('ZATax Total Taxable Public Office Allowance',l_EndDate);
976       --NTG
977       bal_TOT_TXB_AP_NTG_PTD       := getBalVal('ZATax Total Taxable Annual Payments NTG',l_EndDate);
978       bal_TOT_TXB_EE_DBT_NTG_PTD   := getBalVal('ZATax Total Taxable Ann Pymnt of EE Debt NTG',l_EndDate);
979       --End NTG
980 
981       --TYS2010
982       bal_ANN_DONAT_MD_EE_PTD      := getBalVal('Annual Donations made by EE and paid by ER',l_EndDate);
983       bal_DONAT_MD_EE_PTD          := getBalVal('Donations made by EE and paid by ER',l_EndDate);
984 
985 
986       hr_utility.set_location('py_za_tx_01032011.LteCalc',10);
987 
988       -- Update Globals with Correct Taxable Values
989       Fix for bug#10372926
990       --py_za_tx_utl_01032011.TrvAll;
991 
992       -- Bug 8691928
993       -- removed newlines between various operands of the expression
994       bal_TOT_TXB_PO_PTD  := bal_TOT_TXB_PO_PTD * py_za_tx_utl_01032011.GlbVal('ZA_PUBL_TAX_PERC',l_EndDate) / 100;
995       hr_utility.set_location('py_za_tx_01032011.LteCalc',11);
996 
997       -- Rebates
998       py_za_tx_utl_01032011.SetRebates;
999       -- Abatements
1000       py_za_tx_utl_01032011.Abatements;
1001 
1002       hr_utility.set_location('py_za_tx_01032011.LteCalc',12);
1003 
1004       -- Base Earnings
1005       --
1006        trc_BseErn :=
1007          ( ( bal_TOT_TXB_NI_PTD
1008            + bal_TOT_TXB_FB_PTD
1009            + bal_TOT_TXB_TA_PTD
1010            + bal_TOT_TXB_PO_PTD
1011            + bal_BP_PTD
1012          )* trc_SitFactor
1013          )
1014          + bal_TOT_TXB_AB_PTD
1015          + bal_TOT_TXB_AP_PTD
1016          -- Added for NTG
1017          + bal_TOT_TXB_AP_NTG_PTD
1018          + bal_TOT_TXB_EE_DBT_NTG_PTD;
1019       -- Taxable Base Income
1020       --TYS2010
1021       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1022 /*
1023       trc_TxbBseIncWoDon := trc_BseErn - trc_AnnTotNTGAbm;
1024       trc_TxbBseInc :=trc_TxbBseIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbBseIncWoDon,trc_AnnDonAmt);
1025 
1026       -- Threshold Check
1027       IF trc_TxbBseInc >= trc_Threshold THEN
1028          hr_utility.set_location('py_za_tx_01032011.LteCalc',13);
1029       -- Tax Liability
1030          trc_TotLibBse := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbBseInc);
1031       ELSE
1032          hr_utility.set_location('py_za_tx_01032011.LteCalc',14);
1033          trc_TotLibBse := 0;
1034       END IF;
1035 
1036       -- Populate the O Figure
1037       trc_OUpdFig := trc_TxbBseInc - bal_TOT_TXB_INC_ITD;
1038 
1039       -- Base Income
1040       WrtHrTrc('trc_BseErn:    '||to_char(trc_BseErn));
1041       WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
1042       WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
1043 
1044    ELSE
1045       hr_utility.set_location('py_za_tx_01032011.LteCalc',15);
1046       -- Use the 'O' Figure as Base
1047       -- Set the Global
1048       trc_CalTyp := 'LteCalc';
1049 
1050       -- Get the assignment's previous tax year's
1051       -- threshold and rebate figures
1052       -- Employee Tax Year Start and End Dates
1053       l_EndDate  := dbi_ZA_ASG_TX_YR_END;
1054 
1055       hr_utility.set_location('py_za_tx_01032011.LteCalc',16);
1056 
1057       -- Global Values
1058       l_ZA_TX_YR_END        := l_EndDate;
1059       l_ZA_ADL_TX_RBT       := py_za_tx_utl_01032011.GlbVal('ZA_ADDITIONAL_TAX_REBATE',l_EndDate);
1060       l_ZA_PRI_TX_RBT       := py_za_tx_utl_01032011.GlbVal('ZA_PRIMARY_TAX_REBATE',l_EndDate);
1061       l_ZA_PRI_TX_THRSHLD   := py_za_tx_utl_01032011.GlbVal('ZA_PRIM_TAX_THRESHOLD',l_EndDate);
1062       l_ZA_SC_TX_THRSHLD    := py_za_tx_utl_01032011.GlbVal('ZA_SEC_TAX_THRESHOLD',l_EndDate);
1063 
1064       -- Calculate the assignments 65 Year Date
1065       l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
1066 
1067       IF l_65Year <= l_ZA_TX_YR_END THEN
1068          hr_utility.set_location('py_za_tx_01032011.LteCalc',17);
1069          -- give the extra abatement
1070          trc_Rebate    := l_ZA_PRI_TX_RBT + l_ZA_ADL_TX_RBT;
1071          trc_Threshold := l_ZA_SC_TX_THRSHLD;
1072       ELSE
1073          hr_utility.set_location('py_za_tx_01032011.LteCalc',18);
1074          -- not eligable for extra abatement
1075          trc_Rebate    := l_ZA_PRI_TX_RBT;
1076          trc_Threshold := l_ZA_PRI_TX_THRSHLD;
1077       END IF;
1078 
1079 
1080    -- Base Earnings
1081    --
1082       -- Take the OFigure as Taxable Base Income
1083       trc_TxbBseInc := bal_TOT_TXB_INC_ITD;
1084       -- Threshold Check
1085       IF trc_TxbBseInc >= trc_Threshold THEN
1086          hr_utility.set_location('py_za_tx_01032011.LteCalc',19);
1087          -- Tax Liability
1088          trc_TotLibBse := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbBseInc);
1089       ELSE
1090          hr_utility.set_location('py_za_tx_01032011.LteCalc',20);
1091          trc_TotLibBse := 0;
1092       END IF;
1093 
1094       -- Base Income
1095       WrtHrTrc('trc_BseErn:    '||to_char(trc_BseErn));
1096       WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
1097       WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
1098    END IF;
1099 
1100    -- Override the Global
1101    trc_CalTyp := 'LteCalc';
1102    -- Set the SitFactor back to 1
1103    trc_SitFactor := 1;
1104 
1105    hr_utility.set_location('py_za_tx_01032011.LteCalc',21);
1106 
1107    -- Rebates
1108    py_za_tx_utl_01032011.SetRebates;
1109    -- Abatements
1110    py_za_tx_utl_01032011.Abatements;
1111 
1112    hr_utility.set_location('py_za_tx_01032011.LteCalc',22);
1113 
1114    -- Update Global Balance Values with correct TAXABLE values
1115    Fix for bug#10372926
1116    --py_za_tx_utl_01032011.TrvAll;
1117 
1118    bal_TOT_TXB_PO_YTD  := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
1119 
1120 -- Normal Income
1121 --
1122    -- Ytd Normal Income
1123    trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
1124    -- Skip the calculation if there is No Income
1125    IF trc_NorIncYtd <> 0 THEN
1126       hr_utility.set_location('py_za_tx_01032011.LteCalc',23);
1127       -- Normal Earnings
1128       trc_NorErn := trc_NorIncYtd + trc_TxbBseInc;
1129       -- Taxable Normal Income
1130       --TYS2010
1131       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1132       trc_TxbNorIncWoDon := trc_NorErn - trc_PerTotAbm;
1133       trc_TxbNorInc :=trc_TxbNorIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbNorIncWoDon,trc_PerDonAmt);
1134 
1135       -- Threshold Check
1136       IF trc_TxbNorInc >= trc_Threshold THEN
1137          hr_utility.set_location('py_za_tx_01032011.LteCalc',24);
1138          -- Tax Liability
1139          trc_TotLibNI := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbNorInc);
1140          trc_LibFyNI  := trc_TotLibNI - least(trc_TotLibNI,trc_TotLibBse);
1141          trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibBse);
1142          trc_LibFpNI  := trc_LibFyNI - bal_TX_ON_NI_YTD;
1143       ELSE
1144          hr_utility.set_location('py_za_tx_01032011.LteCalc',25);
1145          -- Set Cascade Figures and Refund
1146          trc_TotLibNI   := 0;
1147          trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
1148          trc_LibFpNIOvr := TRUE;
1149       END IF;
1150    ELSE
1151       hr_utility.set_location('py_za_tx_01032011.LteCalc',26);
1152       -- Set Cascade Figures and Refund
1153       trc_NorErn     := trc_TxbBseInc;
1154       trc_TxbNorInc  := 0;
1155       trc_TotLibNI   := trc_TotLibBse;
1156       trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
1157       trc_LibFpNIOvr := TRUE;
1158    END IF;
1159 
1160 -- Fringe Benefits
1161 --
1162    trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
1163    -- Skip the calculation if there is No Income
1164    IF trc_FrnBenYtd <> 0 THEN
1165       hr_utility.set_location('py_za_tx_01032011.LteCalc',27);
1166       -- Fringe Benefit Earnings
1167       trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
1168       -- Taxable Fringe Income
1169       --TYS2010
1170       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1171       trc_TxbFrnIncWoDon := trc_FrnBenErn - trc_PerTotAbm;
1172       trc_TxbFrnInc :=trc_TxbFrnIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbFrnIncWoDon,trc_PerDonAmt);
1173 
1174       -- Threshold Check
1175       IF trc_TxbFrnInc >= trc_Threshold THEN
1176          hr_utility.set_location('py_za_tx_01032011.LteCalc',28);
1177          -- Tax Liability
1178          trc_TotLibFB := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbFrnInc);
1179          trc_LibFyFB  := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
1180          trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
1181          trc_LibFpFB  := trc_LibFyFB - bal_TX_ON_FB_YTD;
1182       ElSE
1183          hr_utility.set_location('py_za_tx_01032011.LteCalc',29);
1184          -- Set Cascade Figures and Refund
1185          trc_TotLibFB   := trc_TotLibNI;
1186          trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
1187          trc_LibFpFBOvr := TRUE;
1188       END IF;
1189    ELSE
1190       hr_utility.set_location('py_za_tx_01032011.LteCalc',30);
1191       -- Set Cascade Figures and Refund
1192       trc_FrnBenErn  := trc_NorErn;
1193       trc_TxbFrnInc  := trc_TxbNorInc;
1194       trc_TotLibFB   := trc_TotLibNI;
1195       trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
1196       trc_LibFpFBOvr := TRUE;
1197    END IF;
1198 
1199 -- Travel Allowance
1200 --
1201    -- Ytd Travel Allowance
1202    trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
1203    -- Skip the calculation if there is No Income
1204    IF trc_TrvAllYtd <> 0 THEN
1205       hr_utility.set_location('py_za_tx_01032011.LteCalc',31);
1206       -- Travel Earnings
1207       trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
1208       -- Taxable Travel Income
1209       --TYS2010
1210       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1211       trc_TxbTrvIncWoDon := trc_TrvAllErn - trc_PerTotAbm;
1212       trc_TxbTrvInc :=trc_TxbTrvIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbTrvIncWoDon,trc_PerDonAmt);
1213 
1214       -- Threshold Check
1215       IF trc_TxbTrvInc >= trc_Threshold THEN
1216          hr_utility.set_location('py_za_tx_01032011.LteCalc',32);
1217          -- Tax Liability
1218          trc_TotLibTA := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbTrvInc);
1219          trc_LibFyTA  := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
1220          trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
1221          trc_LibFpTA  := trc_LibFyTA - bal_TX_ON_TA_YTD;
1222       ELSE
1223          hr_utility.set_location('py_za_tx_01032011.LteCalc',33);
1224          -- Set Cascade Figures and Refund
1225          trc_TotLibTA   := trc_TotLibFB;
1226          trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
1227          trc_LibFpTAOvr := TRUE;
1228       END IF;
1229    ELSE
1230       hr_utility.set_location('py_za_tx_01032011.LteCalc',34);
1231       -- Set Cascade Figures and Refund
1232       trc_TrvAllErn  := trc_FrnBenErn;
1233       trc_TxbTrvInc  := trc_TxbFrnInc;
1234       trc_TotLibTA   := trc_TotLibFB;
1235       trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
1236       trc_LibFpTAOvr := TRUE;
1237    END IF;
1238 
1239 -- Annual Bonus
1240 --
1241    -- Ytd Annual Bonus
1242    trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
1243    -- Skip the calculation if there is No Income
1244    IF trc_AnnBonYtd <> 0 THEN
1245       hr_utility.set_location('py_za_tx_01032011.LteCalc',35);
1246       -- Annual Bonus Earnings
1247       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
1248       -- Taxable Annual Bonus Income
1249       --TYS2010
1250       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1251       trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
1252       trc_TxbAnnBonInc :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
1253 
1254       -- Threshold Check
1255       IF trc_TxbAnnBonInc >= trc_Threshold THEN
1256          hr_utility.set_location('py_za_tx_01032011.LteCalc',36);
1257          -- Tax Liability
1258          trc_TotLibAB := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnBonInc);
1259          trc_LibFyAB  := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
1260          trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
1261          trc_LibFpAB  := trc_LibFyAB - bal_TX_ON_AB_YTD;
1262       ELSE
1263          hr_utility.set_location('py_za_tx_01032011.LteCalc',39);
1264          -- Set Cascade Figures and Refund
1265          trc_TotLibAB   := trc_TotLibTA;
1266          trc_LibFpAB    := -1 * bal_TX_ON_AB_YTD;
1267          trc_LibFpABOvr := TRUE;
1268       END IF;
1269    ELSE
1270       hr_utility.set_location('py_za_tx_01032011.LteCalc',40);
1271       -- Set Cascade Figures and Refund
1272       trc_AnnBonErn    := trc_TrvAllErn;
1273       trc_TxbAnnBonInc := trc_TxbTrvInc;
1274       trc_TotLibAB     := trc_TotLibTA;
1275       trc_LibFpAB      := -1 * bal_TX_ON_AB_YTD;
1276       trc_LibFpABOvr   := TRUE;
1277    END IF;
1278 
1279 -- Annual Payments
1280 --
1281    -- Ytd Annual Payments
1282    trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
1283    -- Skip the calculation if there is No Income
1284    IF trc_AnnPymYtd <> 0 THEN
1285       hr_utility.set_location('py_za_tx_01032011.LteCalc',41);
1286       -- Annual Payments Earnings
1287       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
1288       -- Taxable Annual Payments Income
1289       --TYS2010
1290       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1291       trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
1292       trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
1293 
1294       -- Threshold Check
1295       IF trc_TxbAnnPymInc >= trc_Threshold THEN
1296          hr_utility.set_location('py_za_tx_01032011.LteCalc',42);
1297          -- Tax Liability
1298          trc_TotLibAP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1299          trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
1300          trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
1301          trc_LibFpAP  := trc_LibFyAP - bal_TX_ON_AP_YTD;
1302       ELSE
1303          hr_utility.set_location('py_za_tx_01032011.LteCalc',45);
1304          -- Set Cascade Figures and Refund
1305          trc_TotLibAP   := trc_TotLibAB;
1306          trc_LibFpAP    := -1 * bal_TX_ON_AP_YTD;
1307          trc_LibFpAPOvr := TRUE;
1308       END IF;
1309    ELSE
1310       hr_utility.set_location('py_za_tx_01032011.LteCalc',46);
1311       -- Set Cascade Figures and Refund
1312       trc_AnnPymErn    := trc_AnnBonErn;
1313       trc_TxbAnnPymInc := trc_TxbAnnBonInc;
1314       trc_TotLibAP     := trc_TotLibAB;
1315       trc_LibFpAP      := -1 * bal_TX_ON_AP_YTD;
1316       trc_LibFpAPOvr   := TRUE;
1317    END IF;
1318 
1319 -- Public Office Allowance
1320 --
1321    -- Ytd Public Office Allowance
1322    trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
1323    -- Skip the calculation if there is No Income
1324    IF trc_PblOffYtd <> 0 THEN
1325       hr_utility.set_location('py_za_tx_01032011.LteCalc',47);
1326       -- Public Office Allowance Earnings
1327       trc_PblOffErn := trc_PblOffYtd + trc_AnnPymErn;
1328       -- Taxable Public Office Allowance
1329       --TYS2010
1330       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1331       trc_TxbPblOffIncWoDon := trc_PblOffErn - trc_AnnTotAbm;
1332       trc_TxbPblOffInc :=trc_TxbPblOffIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbPblOffIncWoDon,trc_AnnDonAmt);
1333 
1334       -- Threshold Check
1335       IF trc_TxbPblOffInc >= trc_Threshold THEN
1336          hr_utility.set_location('py_za_tx_01032011.LteCalc',48);
1337          -- Tax Liability
1338          trc_TotLibPO := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbPblOffInc);
1339          trc_LibFyPO  := trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP);
1340          trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
1341          trc_LibFpPO  := trc_LibFyPO - bal_TX_ON_PO_YTD;
1342       ElSE
1343          hr_utility.set_location('py_za_tx_01032011.LteCalc',49);
1344          -- Set Cascade Figures and Refund
1345          trc_TotLibPO   := trc_TotLibPO;
1346          trc_LibFpPO    := -1 * bal_TX_ON_PO_YTD;
1347          trc_LibFpPOOvr := TRUE;
1348       END IF;
1349    ELSE
1350       hr_utility.set_location('py_za_tx_01032011.LteCalc',50);
1351       -- Set Cascade Figures and Refund
1352       trc_PblOffErn     := trc_AnnPymErn;
1353       trc_TxbPblOffInc  := trc_TxbAnnPymInc;
1354       trc_TotLibPO      := trc_TotLibAP;
1355       trc_LibFpPO       := -1 * bal_TX_ON_PO_YTD;
1356       trc_LibFpPOOvr    := TRUE;
1357    END IF;
1358 
1359 -- Net Pay Validation
1360 --
1361    -- Net Pay of the Employee
1362    l_Np := bal_NET_PAY_RUN;
1363    -- Site Limit Check
1364    IF trc_TxbAnnPymInc + trc_PblOffErn < glb_ZA_SIT_LIM THEN
1365       hr_utility.set_location('py_za_tx_01032011.LteCalc',51);
1366       l_Sl := TRUE;
1367    ELSE
1368       hr_utility.set_location('py_za_tx_01032011.LteCalc',52);
1369       l_Sl := FALSE;
1370    END IF;
1371 
1372    py_za_tx_utl_01032011.ValidateTaxOns(p_Rf => l_Sl);
1373 
1374 -- Set IT3A Indicator
1375 --
1376    IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
1377       hr_utility.set_location('py_za_tx_01032011.LteCalc',53);
1378       trc_It3Ind := 0; -- Over Lim
1379    ELSE
1380       hr_utility.set_location('py_za_tx_01032011.LteCalc',54);
1381       trc_It3Ind := 1; -- Under Lim
1382    END IF;
1383 
1384    -- Normal Income
1385    WrtHrTrc('trc_NorIncYtd:       '||to_char(trc_NorIncYtd));
1386    WrtHrTrc('trc_NorIncPtd:       '||to_char(trc_NorIncPtd));
1387    WrtHrTrc('trc_NorErn:          '||to_char(trc_NorErn));
1388    WrtHrTrc('trc_TxbNorInc:       '||to_char(trc_TxbNorInc));
1389    WrtHrTrc('trc_TxbNorIncWoDon:  '||to_char(trc_TxbNorIncWoDon));
1390    WrtHrTrc('trc_TotLibNI:        '||to_char(trc_TotLibNI));
1391    WrtHrTrc('trc_LibFyNI:         '||to_char(trc_LibFyNI));
1392    WrtHrTrc('trc_LibFpNI:         '||to_char(trc_LibFpNI));
1393    -- Fringe Benefits
1394    WrtHrTrc('trc_FrnBenYtd:       '||to_char(trc_FrnBenYtd));
1395    WrtHrTrc('trc_FrnBenPtd:       '||to_char(trc_FrnBenPtd));
1396    WrtHrTrc('trc_FrnBenErn:       '||to_char(trc_FrnBenErn));
1397    WrtHrTrc('trc_TxbFrnInc:       '||to_char(trc_TxbFrnInc));
1398    WrtHrTrc('trc_TxbFrnIncWoDon:  '||to_char(trc_TxbFrnIncWoDon));
1399    WrtHrTrc('trc_TotLibFB:        '||to_char(trc_TotLibFB));
1400    WrtHrTrc('trc_LibFyFB:         '||to_char(trc_LibFyFB));
1401    WrtHrTrc('trc_LibFpFB:         '||to_char(trc_LibFpFB));
1402    -- Travel Allowance
1403    WrtHrTrc('trc_TrvAllYtd:       '||to_char(trc_TrvAllYtd));
1404    WrtHrTrc('trc_TrvAllPtd:       '||to_char(trc_TrvAllPtd));
1405    WrtHrTrc('trc_TrvAllErn:       '||to_char(trc_TrvAllErn));
1406    WrtHrTrc('trc_TxbTrvInc:       '||to_char(trc_TxbTrvInc));
1407    WrtHrTrc('trc_TxbTrvIncWoDon:  '||to_char(trc_TxbTrvIncWoDon));
1408    WrtHrTrc('trc_TotLibTA:        '||to_char(trc_TotLibTA));
1409    WrtHrTrc('trc_LibFyTA:         '||to_char(trc_LibFyTA));
1410    WrtHrTrc('trc_LibFpTA:         '||to_char(trc_LibFpTA));
1411    -- Annual Bonus
1412    WrtHrTrc('trc_AnnBonYtd:       '||to_char(trc_AnnBonYtd));
1413    WrtHrTrc('trc_AnnBonPtd:       '||to_char(trc_AnnBonPtd));
1414    WrtHrTrc('trc_AnnBonErn:       '||to_char(trc_AnnBonErn));
1415    WrtHrTrc('trc_TxbAnnBonInc:    '||to_char(trc_TxbAnnBonInc));
1416    WrtHrTrc('trc_TxbAnnBonIncWoDon:'||to_char(trc_TxbAnnBonIncWoDon));
1417    WrtHrTrc('trc_TotLibAB:        '||to_char(trc_TotLibAB));
1418    WrtHrTrc('trc_LibFyAB:         '||to_char(trc_LibFyAB));
1419    WrtHrTrc('trc_LibFpAB:         '||to_char(trc_LibFpAB));
1420    -- Annual Payments
1421    WrtHrTrc('trc_AnnPymYtd:       '||to_char(trc_AnnPymYtd));
1422    WrtHrTrc('trc_AnnPymPtd:       '||to_char(trc_AnnPymPtd));
1423    WrtHrTrc('trc_AnnPymErn:       '||to_char(trc_AnnPymErn));
1424    WrtHrTrc('trc_TxbAnnPymInc:    '||to_char(trc_TxbAnnPymInc));
1425    WrtHrTrc('trc_TxbAnnPymIncWoDon:'||to_char(trc_TxbAnnPymIncWoDon));
1426    WrtHrTrc('trc_TotLibAP:        '||to_char(trc_TotLibAP));
1427    WrtHrTrc('trc_LibFyAP:         '||to_char(trc_LibFyAP));
1428    WrtHrTrc('trc_LibFpAP:         '||to_char(trc_LibFpAP));
1429    -- Pubilc Office Allowance
1430    WrtHrTrc('trc_PblOffYtd:       '||to_char(trc_PblOffYtd));
1431    WrtHrTrc('trc_PblOffPtd:       '||to_char(trc_PblOffPtd));
1432    WrtHrTrc('trc_PblOffErn:       '||to_char(trc_PblOffErn));
1433    WrtHrTrc('trc_TxbPblOffInc:    '||to_char(trc_TxbPblOffInc));
1434    WrtHrTrc('trc_TxbPblOffIncWoDon:'||to_char(trc_TxbPblOffIncWoDon));
1435    WrtHrTrc('trc_TotLibPO:        '||to_char(trc_TotLibPO));
1436    WrtHrTrc('trc_LibFyPO:         '||to_char(trc_LibFyPO));
1437    WrtHrTrc('trc_LibFpPO:         '||to_char(trc_LibFpPO));
1438 
1439 
1440 
1441 EXCEPTION
1442    WHEN OTHERS THEN
1443       IF xpt_Msg = 'No Error' THEN
1444          xpt_Msg := 'LteCalc: '||TO_CHAR(SQLCODE);
1445       END IF;
1446       RAISE xpt_E;
1447 END LteCalc;
1448 */
1449 
1450 --New procedure for Bug 8844712
1451 --Late Payments must be taxed per 25% for tax statuses for which tax table is used.
1452 PROCEDURE LteCalc AS
1453    l_Sl                  BOOLEAN;
1454    l_Np                  BALANCE DEFAULT 0;
1455 BEGIN
1456    hr_utility.set_location('py_za_tx_01032011.LteCalc',1);
1457    trc_CalTyp := 'LteCalc';
1458    trc_SitFactor := 1;
1459    trc_LateSitePaye := 0;
1460 
1461    --Fix for bug#10372926
1462    --py_za_tx_utl_01032011.TrvAll;
1463    py_za_tx_utl_01032011.SetRebates;
1464 
1465    hr_utility.set_location('py_za_tx_01032011.LteCalc',2);
1466 
1467    bal_TOT_TXB_PO_YTD  := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
1468 
1469 -- Normal Income
1470 --
1471    -- Ytd Normal Income
1472    trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
1473    -- Skip the calculation if there is No Income
1474    IF trc_NorIncYtd <> 0 THEN
1475       hr_utility.set_location('py_za_tx_01032011.LteCalc',3);
1476       -- Normal Earnings
1477       trc_NorErn := trc_NorIncYtd;
1478       -- Tax Liability
1479       trc_TotLibNI := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_NorErn);
1480       trc_LibFyNI  := trc_TotLibNI - 0;
1481       trc_TotLibNI := greatest(trc_TotLibNI,0);
1482       trc_LibFpNI  := trc_LibFyNI - bal_TX_ON_NI_YTD;
1483    ELSE
1484       hr_utility.set_location('py_za_tx_01032011.LteCalc',4);
1485       -- Set Cascade Figures and Refund
1486       trc_NorErn     := 0;
1487       trc_TotLibNI   := 0;
1488       trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
1489       trc_LibFpNIOvr := TRUE;
1490    END IF;
1491 
1492 -- Fringe Benefits
1493 --
1494    -- Ytd Fringe Benefits
1495      trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
1496    -- Skip the calculation if there is No Income
1497    IF trc_FrnBenYtd <> 0 THEN
1498       hr_utility.set_location('py_za_tx_01032011.LteCalc',5);
1499       -- Fringe Benefit Earnings
1500       trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
1501       -- Tax Liability
1502       trc_TotLibFB := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_FrnBenErn);
1503       trc_LibFyFB  := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
1504       trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
1505       trc_LibFpFB  := trc_LibFyFB - bal_TX_ON_FB_YTD;
1506    ELSE
1507       hr_utility.set_location('py_za_tx_01032011.LteCalc',6);
1508       -- Set Cascade Figures and Refund
1509       trc_FrnBenErn  := trc_NorErn;
1510       trc_TotLibFB   := trc_TotLibNI;
1511       trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
1512       trc_LibFpFBOvr := TRUE;
1513    END IF;
1514 
1515 -- Travel Allowance
1516 --
1517    -- Ytd Travel Allowance
1518    trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
1519    -- Skip the calculation if there is No Income
1520    IF trc_TrvAllYtd <> 0 THEN
1521       hr_utility.set_location('py_za_tx_01032011.LteCalc',7);
1522       -- Travel Allowance Earnings
1523       trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
1524       -- Tax Liability
1525       trc_TotLibTA := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TrvAllErn);
1526       trc_LibFyTA  := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
1527       trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
1528       trc_LibFpTA  := trc_LibFyTA - bal_TX_ON_TA_YTD;
1529    ELSE
1530       hr_utility.set_location('py_za_tx_01032011.LteCalc',8);
1531       -- Set Cascade Figures and Refund
1532       trc_TrvAllErn  := trc_FrnBenErn; --Cascade Figure
1533       trc_TotLibTA   := trc_TotLibFB;
1534       trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
1535       trc_LibFpTAOvr := TRUE;
1536    END IF;
1537 
1538 -- Annual Bonus
1539 --
1540    -- Ytd Annual Bonus
1541    trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
1542    -- Skip the calculation if there is No Income
1543    IF trc_AnnBonYtd <> 0 THEN
1544       hr_utility.set_location('py_za_tx_01032011.LteCalc',9);
1545       -- Annual Bonus Earnings
1546       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
1547       -- Tax Liability
1548       trc_TotLibAB := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_AnnBonErn);
1549       trc_LibFyAB  := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
1550       trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
1551       -- Check Bonus Provision
1552       trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
1553    ELSE
1554       hr_utility.set_location('py_za_tx_01032011.LteCalc',10);
1555       trc_AnnBonErn  := trc_TrvAllErn;
1556       trc_TotLibAB   := trc_TotLibTA;
1557       trc_LibFpAB    := -1 * bal_TX_ON_BP_YTD;
1558       trc_LibFpABOvr := TRUE;
1559    END IF;
1560 
1561 -- Annual Payments
1562 --
1563    -- Ytd Annual Payments
1564    trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
1565    -- Skip the calculation if there is No Income
1566    IF trc_AnnPymYtd <> 0 THEN
1567       hr_utility.set_location('py_za_tx_01032011.LteCalc',11);
1568       -- Annual Payments Earnings
1569       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
1570       -- Tax Liability
1571       trc_TotLibAP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_AnnPymErn);
1572       trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
1573       trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
1574       trc_LibFpAP  := trc_LibFyAP - bal_TX_ON_AP_YTD;
1575    ElSE
1576       hr_utility.set_location('py_za_tx_01032011.LteCalc',12);
1577       -- Set Cascade Figures and Refund
1578       trc_AnnPymErn  := trc_AnnBonErn;
1579       trc_TotLibAP   := trc_TotLibAB;
1580       trc_LibFpAP    := -1 * bal_TX_ON_AP_YTD;
1581       trc_LibFpAPOvr := TRUE;
1582    END IF;
1583 
1584 -- Public Office Allowance
1585 --
1586    -- Ytd Public Office Allowance
1587    trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
1588    -- Skip the calculation if there is No Income
1589    IF trc_PblOffYtd <> 0 THEN
1590       hr_utility.set_location('py_za_tx_01032011.LteCalc',13);
1591       -- Public Office Allowance Earnings
1592       trc_PblOffErn := trc_PblOffYtd + trc_AnnPymErn;
1593       -- Tax Liability
1594       trc_TotLibPO := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_PblOffErn);
1595       trc_LibFyPO  := trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP);
1596       trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
1597       trc_LibFpPO  := trc_LibFyPO - bal_TX_ON_PO_YTD;
1598    ELSE
1599       hr_utility.set_location('py_za_tx_01032011.LteCalc',14);
1600       -- Set Cascade Figures and Refund
1601       trc_PblOffErn  := trc_AnnPymErn;
1602       trc_TotLibPO   := trc_TotLibAP;
1603       trc_LibFpPO    := -1 * bal_TX_ON_PO_YTD;
1604       trc_LibFpPOOvr := TRUE;
1605    END IF;
1606 
1607 
1608    l_Np := bal_NET_PAY_RUN;
1609    -- Site Limit Check
1610    IF trc_PblOffErn < glb_ZA_SIT_LIM THEN
1611       hr_utility.set_location('py_za_tx_01032011.LteCalc',51);
1612       l_Sl := TRUE;
1613    ELSE
1614       hr_utility.set_location('py_za_tx_01032011.LteCalc',52);
1615       l_Sl := FALSE;
1616    END IF;
1617 
1618    py_za_tx_utl_01032011.ValidateTaxOns(p_Rf => l_Sl);
1619 
1620 -- Set IT3A Indicator
1621 --
1622    IF trc_PblOffErn >= trc_Threshold THEN
1623       hr_utility.set_location('py_za_tx_01032011.LteCalc',53);
1624       trc_It3Ind := 0; -- Over Lim
1625    ELSE
1626       hr_utility.set_location('py_za_tx_01032011.LteCalc',54);
1627       trc_It3Ind := 1; -- Under Lim
1628    END IF;
1629 
1630    -- Normal Income
1631    WrtHrTrc('trc_NorIncYtd:       '||to_char(trc_NorIncYtd));
1632    WrtHrTrc('trc_NorErn:          '||to_char(trc_NorErn));
1633    WrtHrTrc('trc_TotLibNI:        '||to_char(trc_TotLibNI));
1634    WrtHrTrc('trc_LibFyNI:         '||to_char(trc_LibFyNI));
1635    WrtHrTrc('trc_LibFpNI:         '||to_char(trc_LibFpNI));
1636    -- Fringe Benefits
1637    WrtHrTrc('trc_FrnBenYtd:       '||to_char(trc_FrnBenYtd));
1638    WrtHrTrc('trc_FrnBenErn:       '||to_char(trc_FrnBenErn));
1639    WrtHrTrc('trc_TotLibFB:        '||to_char(trc_TotLibFB));
1640    WrtHrTrc('trc_LibFyFB:         '||to_char(trc_LibFyFB));
1641    WrtHrTrc('trc_LibFpFB:         '||to_char(trc_LibFpFB));
1642    -- Travel Allowance
1643    WrtHrTrc('trc_TrvAllYtd:       '||to_char(trc_TrvAllYtd));
1644    WrtHrTrc('trc_TrvAllErn:       '||to_char(trc_TrvAllErn));
1645    WrtHrTrc('trc_TotLibTA:        '||to_char(trc_TotLibTA));
1646    WrtHrTrc('trc_LibFyTA:         '||to_char(trc_LibFyTA));
1647    WrtHrTrc('trc_LibFpTA:         '||to_char(trc_LibFpTA));
1648    -- Annual Bonus
1649    WrtHrTrc('trc_AnnBonYtd:       '||to_char(trc_AnnBonYtd));
1650    WrtHrTrc('trc_AnnBonErn:       '||to_char(trc_AnnBonErn));
1651    WrtHrTrc('trc_TotLibAB:        '||to_char(trc_TotLibAB));
1652    WrtHrTrc('trc_LibFyAB:         '||to_char(trc_LibFyAB));
1653    WrtHrTrc('trc_LibFpAB:         '||to_char(trc_LibFpAB));
1654    -- Annual Payments
1655    WrtHrTrc('trc_AnnPymYtd:       '||to_char(trc_AnnPymYtd));
1656    WrtHrTrc('trc_AnnPymErn:       '||to_char(trc_AnnPymErn));
1657    WrtHrTrc('trc_TotLibAP:        '||to_char(trc_TotLibAP));
1658    WrtHrTrc('trc_LibFyAP:         '||to_char(trc_LibFyAP));
1659    WrtHrTrc('trc_LibFpAP:         '||to_char(trc_LibFpAP));
1660    -- Pubilc Office Allowance
1661    WrtHrTrc('trc_PblOffYtd:       '||to_char(trc_PblOffYtd));
1662    WrtHrTrc('trc_PblOffErn:       '||to_char(trc_PblOffErn));
1663    WrtHrTrc('trc_TotLibPO:        '||to_char(trc_TotLibPO));
1664    WrtHrTrc('trc_LibFyPO:         '||to_char(trc_LibFyPO));
1665    WrtHrTrc('trc_LibFpPO:         '||to_char(trc_LibFpPO));
1666 
1667 EXCEPTION
1668    WHEN OTHERS THEN
1669       IF xpt_Msg = 'No Error' THEN
1670          xpt_Msg := 'LteCalc: '||TO_CHAR(SQLCODE);
1671       END IF;
1672       RAISE xpt_E;
1673 
1674 END LteCalc;
1675 
1676 -------------------------------------------------------------------------------
1677 -- SeaCalc                                                                   --
1678 -- Tax Calculation for Seasonal Workers                                      --
1679 -------------------------------------------------------------------------------
1680 PROCEDURE SeaCalc AS
1681 -- Variables
1682 --
1683    l_Np       BALANCE DEFAULT 0;
1684    l_65Year   DATE;
1685    l_75Year   DATE;
1686 
1687 BEGIN
1688    hr_utility.set_location('py_za_tx_01032011.SeaCalc',1);
1689 -- Identify the calculation
1690 --
1691    trc_CalTyp := 'SeaCalc';
1692 
1693 -- Period Type Income
1694 --
1695    trc_TxbIncPtd :=
1696       ( bal_TOT_TXB_NI_RUN
1697       + bal_TOT_TXB_FB_RUN
1698       );
1699 -- Check if any Period Income Exists
1700 --
1701    hr_utility.set_location('py_za_tx_01032011.SeaCalc',2);
1702    IF trc_TxbIncPtd = 0 THEN -- Pre-Earnings Calc
1703       hr_utility.set_location('py_za_tx_01032011.SeaCalc',3);
1704       -- Site Factor
1705       --
1706       trc_SitFactor := glb_ZA_WRK_DYS_PR_YR / dbi_SEA_WRK_DYS_WRK;
1707 
1708       -- Tax Rebates, Threshold Figure and Medical Aid
1709       -- Abatements
1710       -- Calculate the assignments 65 Year Date
1711       l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
1712       l_75Year := add_months(dbi_PER_DTE_OF_BRTH,900);
1713 
1714      IF l_75Year BETWEEN dbi_ZA_TX_YR_STRT AND dbi_ZA_TX_YR_END THEN
1715         hr_utility.set_location('py_za_tx_01032011.SeaCalc',31);
1716          -- give the extra abatement
1717          trc_Rebate    := glb_ZA_PRI_TX_RBT + glb_ZA_ADL_TX_RBT+glb_ZA_TRI_TX_RBT;
1718          trc_Threshold := glb_ZA_TRI_TX_THRSHLD;
1719      ELSIF l_65Year BETWEEN dbi_ZA_TX_YR_STRT AND dbi_ZA_TX_YR_END THEN
1720          hr_utility.set_location('py_za_tx_01032011.SeaCalc',4);
1721          -- give the extra abatement
1722          trc_Rebate    := glb_ZA_PRI_TX_RBT + glb_ZA_ADL_TX_RBT;
1723          trc_Threshold := glb_ZA_SC_TX_THRSHLD;
1724       ELSE
1725          hr_utility.set_location('py_za_tx_01032011.SeaCalc',5);
1726          -- not eligable for extra abatement
1727          trc_Rebate    := glb_ZA_PRI_TX_RBT;
1728          trc_Threshold := glb_ZA_PRI_TX_THRSHLD;
1729       END IF;
1730 
1731    -- Base Income
1732    --
1733       -- Base Income
1734       trc_BseErn := bal_TOT_TXB_AP_RUN;
1735       -- Taxable Base Income
1736       trc_TxbBseInc := trc_BseErn * trc_SitFactor;
1737       -- Threshold Check
1738       IF trc_TxbBseInc >= trc_Threshold THEN
1739          hr_utility.set_location('py_za_tx_01032011.SeaCalc',6);
1740          -- Tax Liability
1741          trc_TotLibBse := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbBseInc);
1742       ELSE
1743          hr_utility.set_location('py_za_tx_01032011.SeaCalc',7);
1744          trc_TotLibBse := 0;
1745       END IF;
1746 
1747    -- Annual Payments
1748    --
1749       -- Taxable Annual Payments Income
1750       trc_TxbAnnPymInc := trc_BseErn + trc_TxbBseInc;-- AP was taken as base!
1751       -- Threshold Check
1752       IF trc_TxbAnnPymInc >= trc_Threshold THEN
1753          hr_utility.set_location('py_za_tx_01032011.SeaCalc',8);
1754          -- Tax Liability
1755          trc_TotLibAP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1756          trc_LibFpAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibBse);
1757       ElSE
1758          hr_utility.set_location('py_za_tx_01032011.SeaCalc',9);
1759          trc_LibFpAP := 0;
1760       END IF;
1761 
1762       -- Base Income
1763       WrtHrTrc('trc_BseErn: '      ||to_char(trc_BseErn));
1764       WrtHrTrc('trc_TxbBseInc: '   ||to_char(trc_TxbBseInc));
1765       WrtHrTrc('trc_TotLibBse: '   ||to_char(trc_TotLibBse));
1766       -- Annual Payments
1767       WrtHrTrc('trc_AnnPymYtd: '   ||to_char(trc_AnnPymYtd));
1768       WrtHrTrc('trc_AnnPymPtd: '   ||to_char(trc_AnnPymPtd));
1769       WrtHrTrc('trc_AnnPymErn: '   ||to_char(trc_AnnPymErn));
1770       WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
1771       WrtHrTrc('trc_TotLibAP: '    ||to_char(trc_TotLibAP));
1772       WrtHrTrc('trc_LibFyAP: '     ||to_char(trc_LibFyAP));
1773       WrtHrTrc('trc_LibFpAP: '     ||to_char(trc_LibFpAP));
1774 
1775 
1776    ELSE
1777       hr_utility.set_location('py_za_tx_01032011.SeaCalc',10);
1778       -- Site Factor
1779       --
1780       trc_SitFactor := glb_ZA_WRK_DYS_PR_YR / dbi_SEA_WRK_DYS_WRK;
1781 
1782       -- Rebates
1783       py_za_tx_utl_01032011.SetRebates;
1784 
1785       -- Abatements
1786       py_za_tx_utl_01032011.Abatements;
1787 
1788    hr_utility.set_location('py_za_tx_01032011.SeaCalc',11);
1789 
1790    -- Normal Income
1791    --
1792       -- Run Normal Income
1793       trc_NorIncPtd := bal_TOT_TXB_NI_RUN;
1794       -- Skip the calculation if there is No Income
1795       IF trc_NorIncPtd <> 0 THEN
1796          hr_utility.set_location('py_za_tx_01032011.SeaCalc',12);
1797          -- Normal Earnings
1798          trc_NorErn := trc_NorIncPtd * trc_SitFactor;
1799           --TYS2010
1800          --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1801          -- Taxable Normal Income
1802          trc_TxbNorIncWoDon := trc_NorErn - trc_PerTotAbm;
1803          trc_TxbNorInc :=trc_TxbNorIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbNorIncWoDon,trc_PerDonAmt);
1804 
1805          -- Threshold Check
1806          IF trc_TxbNorInc >= trc_Threshold THEN
1807             hr_utility.set_location('py_za_tx_01032011.SeaCalc',13);
1808             -- Tax Liability
1809             trc_TotLibNI := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbNorInc);
1810             trc_LibFyNI  := trc_TotLibNI - 0;
1811             trc_TotLibNI := greatest(trc_TotLibNI,0);
1812             trc_LibFpNI  := trc_LibFyNI / trc_SitFactor;
1813          ELSE
1814             hr_utility.set_location('py_za_tx_01032011.SeaCalc',14);
1815             trc_TotLibNI := 0;
1816          END IF;
1817       ELSE
1818          hr_utility.set_location('py_za_tx_01032011.SeaCalc',15);
1819          trc_NorErn    := 0;
1820          trc_TxbNorInc := 0;
1821          trc_TotLibNI  := 0;
1822       END IF;
1823 
1824    -- Fringe Benefits
1825    --
1826       -- Run Fringe Benefits
1827       trc_FrnBenPtd := bal_TOT_TXB_FB_RUN;
1828       -- Skip the calculation if there is No Income
1829       IF trc_FrnBenPtd <> 0 THEN
1830          hr_utility.set_location('py_za_tx_01032011.SeaCalc',16);
1831          -- Fringe Benefit Earnings
1832          trc_FrnBenErn := trc_FrnBenPtd * trc_SitFactor + trc_NorErn;
1833           --TYS2010
1834           --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1835           -- Taxable Fringe Income
1836          trc_TxbFrnIncWoDon := trc_FrnBenErn - trc_PerTotAbm;
1837          trc_TxbFrnInc :=trc_TxbFrnIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbFrnIncWoDon,trc_PerDonAmt);
1838          -- Threshold Check
1839          IF trc_TxbFrnInc >= trc_Threshold THEN
1840             hr_utility.set_location('py_za_tx_01032011.SeaCalc',17);
1841             -- Tax Liability
1842             trc_TotLibFB := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbFrnInc);
1843             trc_LibFyFB  := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
1844             trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
1845             trc_LibFpFB  := trc_LibFyFB / trc_SitFactor;
1846          ELSE
1847             hr_utility.set_location('py_za_tx_01032011.SeaCalc',18);
1848             trc_TotLibFB := trc_TotLibNI;
1849          END IF;
1850       ELSE
1851          hr_utility.set_location('py_za_tx_01032011.SeaCalc',19);
1852          trc_FrnBenErn := trc_NorErn;
1853          trc_TxbFrnInc := trc_TxbNorInc;
1854          trc_TotLibFB  := trc_TotLibNI;
1855       END IF;
1856 
1857    -- Annual Payments
1858    --
1859       -- Run Annual Payments
1860       trc_AnnPymPtd :=  bal_TOT_TXB_AP_RUN;
1861       -- Skip the calculation if there is No Income
1862       IF trc_AnnPymPtd <> 0 THEN
1863          hr_utility.set_location('py_za_tx_01032011.SeaCalc',20);
1864          -- Annual Payments Earnings
1865          trc_AnnPymErn := trc_AnnPymPtd + trc_FrnBenErn;
1866 
1867          --TYS2010
1868          --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1869          -- Taxable Annual Payments Income
1870          trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
1871          trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
1872 
1873          -- Threshold Check
1874          IF trc_TxbAnnPymInc >= trc_Threshold THEN
1875             hr_utility.set_location('py_za_tx_01032011.SeaCalc',21);
1876             -- Tax Liability
1877             trc_TotLibAP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1878             trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibFB);
1879             trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibFB);
1880             trc_LibFpAP  := trc_LibFyAP;
1881          ELSE
1882             hr_utility.set_location('py_za_tx_01032011.SeaCalc',22);
1883             trc_TotLibAP := trc_TotLibFB;
1884          END IF;
1885       ELSE
1886          hr_utility.set_location('py_za_tx_01032011.SeaCalc',23);
1887          trc_AnnPymErn    := trc_FrnBenErn;
1888          trc_TxbAnnPymInc := trc_TxbFrnInc;
1889          trc_TotLibAP     := trc_TotLibFB;
1890       END IF;
1891 
1892 
1893    -- Net Pay Validation
1894    --
1895       py_za_tx_utl_01032011.ValidateTaxOns;
1896 
1897    hr_utility.set_location('py_za_tx_01032011.SeaCalc',24);
1898 
1899    -- Set IT3A Indicator
1900    --
1901       IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
1902          hr_utility.set_location('py_za_tx_01032011.SeaCalc',25);
1903          trc_It3Ind := 0; -- Over Lim
1904       ELSE
1905          hr_utility.set_location('py_za_tx_01032011.SeaCalc',26);
1906          trc_It3Ind := 1; -- Under Lim
1907       END IF;
1908    END IF;
1909 
1910    -- Normal Income
1911    WrtHrTrc('trc_NorIncYtd:     '||to_char(trc_NorIncYtd));
1912    WrtHrTrc('trc_NorIncPtd:     '||to_char(trc_NorIncPtd));
1913    WrtHrTrc('trc_NorErn:        '||to_char(trc_NorErn));
1914    WrtHrTrc('trc_TxbNorInc:     '||to_char(trc_TxbNorInc));
1915    WrtHrTrc('trc_TxbNorIncWoDon:'||to_char(trc_TxbNorIncWoDon));
1916    WrtHrTrc('trc_TotLibNI:      '||to_char(trc_TotLibNI));
1917    WrtHrTrc('trc_LibFyNI:       '||to_char(trc_LibFyNI));
1918    WrtHrTrc('trc_LibFpNI:       '||to_char(trc_LibFpNI));
1919    -- Fringe Benefits
1920    WrtHrTrc('trc_FrnBenYtd:     '||to_char(trc_FrnBenYtd));
1921    WrtHrTrc('trc_FrnBenPtd:     '||to_char(trc_FrnBenPtd));
1922    WrtHrTrc('trc_FrnBenErn:     '||to_char(trc_FrnBenErn));
1923    WrtHrTrc('trc_TxbFrnInc:     '||to_char(trc_TxbFrnInc));
1924    WrtHrTrc('trc_TxbFrnIncWoDon:'||to_char(trc_TxbFrnIncWoDon));
1925    WrtHrTrc('trc_TotLibFB:      '||to_char(trc_TotLibFB));
1926    WrtHrTrc('trc_LibFyFB:       '||to_char(trc_LibFyFB));
1927    WrtHrTrc('trc_LibFpFB:       '||to_char(trc_LibFpFB));
1928    -- Annual Payments
1929    WrtHrTrc('trc_AnnPymYtd:     '||to_char(trc_AnnPymYtd));
1930    WrtHrTrc('trc_AnnPymPtd:     '||to_char(trc_AnnPymPtd));
1931    WrtHrTrc('trc_AnnPymErn:     '||to_char(trc_AnnPymErn));
1932    WrtHrTrc('trc_TxbAnnPymInc:  '||to_char(trc_TxbAnnPymInc));
1933    WrtHrTrc('trc_TxbAnnPymIncWoDon:'||to_char(trc_TxbAnnPymIncWoDon));
1934    WrtHrTrc('trc_TotLibAP:      '||to_char(trc_TotLibAP));
1935    WrtHrTrc('trc_LibFyAP:       '||to_char(trc_LibFyAP));
1936    WrtHrTrc('trc_LibFpAP:       '||to_char(trc_LibFpAP));
1937 
1938 EXCEPTION
1939    WHEN OTHERS THEN
1940       IF xpt_Msg = 'No Error' THEN
1941          xpt_Msg := 'SeaCalc: '||TO_CHAR(SQLCODE);
1942       END IF;
1943       RAISE xpt_E;
1944 END SeaCalc;
1945 
1946 -------------------------------------------------------------------------------
1947 -- SitCalc                                                                   --
1948 -- End of Year Tax Calculation                                               --
1949 -------------------------------------------------------------------------------
1950 PROCEDURE SitCalc AS
1951 -- Variables
1952 --
1953    l_Sl       BOOLEAN;
1954    l_Np       BALANCE;
1955 
1956 BEGIN
1957 
1958    hr_utility.set_location('py_za_tx_01032011.SitCalc',1);
1959 -- Identify the calculation
1960 --
1961    trc_CalTyp := 'SitCalc';
1962 
1963 -- Update Global Balance Values with correct TAXABLE values
1964 --
1965    --Fix for bug#10372926
1966    --py_za_tx_utl_01032011.TrvAll;
1967 
1968    hr_utility.set_location('py_za_tx_01032011.SitCalc',2);
1969 
1970    bal_TOT_TXB_PO_YTD  := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
1971 
1972 -- Ytd Taxable Income
1973 --
1974  trc_TxbIncYtd :=
1975     ( bal_TOT_TXB_NI_YTD
1976     + bal_TOT_TXB_FB_YTD
1977     + bal_TOT_TXB_TA_YTD
1978     + bal_BP_YTD
1979     );
1980    hr_utility.set_location('py_za_tx_01032011.SitCalc',3);
1981 
1982 -- Site Factor
1983 --
1984    trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032011.DaysWorked;
1985 
1986    hr_utility.set_location('py_za_tx_01032011.SitCalc',4);
1987 
1988 -- Rebates
1989    py_za_tx_utl_01032011.SetRebates;
1990 
1991 -- Abatements
1992    py_za_tx_utl_01032011.Abatements;
1993 
1994    hr_utility.set_location('py_za_tx_01032011.SitCalc',5);
1995 
1996 -- Deemed Remuneration
1997 --
1998    -- Run Deemed Remuneration
1999    trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
2000 
2001    -- Skip the calculation if there is No Income
2002    IF trc_DmdRmnRun <> 0 THEN
2003       hr_utility.set_location('py_za_tx_01032011.SitCalc',6);
2004       -- Taxable Deemed Remuneration
2005       trc_TxbDmdRmn := trc_DmdRmnRun;
2006       -- Threshold Check
2007       IF trc_TxbDmdRmn >= trc_Threshold THEN
2008          hr_utility.set_location('py_za_tx_01032011.SitCalc',7);
2009          -- Tax Liability
2010          trc_TotLibDR := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbDmdRmn);
2011          trc_LibFyDR  := (trc_TotLibDR - 0) / trc_SitFactor;
2012          trc_TotLibDR := greatest(trc_TotLibDR,0);
2013          trc_LibFpDR  := trc_LibFyDR - bal_TX_ON_DR_YTD;
2014       ELSE
2015          hr_utility.set_location('py_za_tx_01032011.SitCalc',8);
2016          -- Set Cascade Figures and Refund
2017          trc_TotLibDR   := 0;
2018          trc_LibFpDR    := -1 * bal_TX_ON_DR_YTD;
2019          trc_LibFpDROvr := TRUE;
2020       END IF;
2021    ELSE
2022       hr_utility.set_location('py_za_tx_01032011.SitCalc',9);
2023       -- Set Cascade Figures and Refund
2024       trc_TxbDmdRmn  := 0;
2025       trc_TotLibDR   := 0;
2026       trc_LibFpDR    := -1 * bal_TX_ON_DR_YTD;
2027       trc_LibFpDROvr := TRUE;
2028    END IF;
2029 
2030    hr_utility.set_location('py_za_tx_01032011.SitCalc',10);
2031 
2032 -- Normal Income
2033 --
2034    -- Ytd Normal Income
2035    trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
2036    -- Skip the calculation if there is No Income
2037    IF trc_NorIncYtd <> 0 THEN
2038       hr_utility.set_location('py_za_tx_01032011.SitCalc',11);
2039       -- Normal Earnings
2040       trc_NorErn := trc_NorIncYtd * trc_SitFactor;
2041       -- Taxable Normal Income
2042       --TYS2010
2043       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2044       trc_TxbNorIncWoDon := trc_NorErn - trc_PerTotAbm;
2045       trc_TxbNorInc :=trc_TxbNorIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbNorIncWoDon,trc_PerDonAmt);
2046 
2047       -- Threshold Check
2048       IF trc_TxbNorInc >= trc_Threshold THEN
2049          hr_utility.set_location('py_za_tx_01032011.SitCalc',12);
2050          -- Tax Liability
2051          trc_TotLibNI := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbNorInc);
2052          trc_LibFyNI  := (trc_TotLibNI - least(trc_TotLibNI,trc_TotLibDR)) / trc_SitFactor;
2053          trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibDR);
2054          trc_LibFpNI  := trc_LibFyNI - bal_TX_ON_NI_YTD;
2055       ELSE
2056          hr_utility.set_location('py_za_tx_01032011.SitCalc',13);
2057          -- Set Cascade Figures and Refund
2058          trc_TotLibNI   := trc_TotLibDR;
2059          trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
2060          trc_LibFpNIOvr := TRUE;
2061       END IF;
2062    ELSE
2063       hr_utility.set_location('py_za_tx_01032011.SitCalc',14);
2064       -- Set Cascade Figures and Refund
2065       trc_NorErn     := 0;
2066       trc_TxbNorInc  := 0;
2067       trc_TotLibNI   := trc_TotLibDR;
2068       trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
2069       trc_LibFpNIOvr := TRUE;
2070    END IF;
2071 
2072 -- Fringe Benefits
2073 --
2074    -- Ytd Fringe Benefits
2075    trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
2076    -- Skip the calculation if there is No Income
2077    IF trc_FrnBenYtd <> 0 THEN
2078       hr_utility.set_location('py_za_tx_01032011.SitCalc',15);
2079       -- Fringe Benefit Earnings
2080       trc_FrnBenErn := trc_FrnBenYtd * trc_SitFactor + trc_NorErn;
2081       -- Taxable Fringe Income
2082       --TYS2010
2083       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2084       trc_TxbFrnIncWoDon := trc_FrnBenErn - trc_PerTotAbm;
2085       trc_TxbFrnInc :=trc_TxbFrnIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbFrnIncWoDon,trc_PerDonAmt);
2086 
2087       -- Threshold Check
2088       IF trc_TxbFrnInc >= trc_Threshold THEN
2089          hr_utility.set_location('py_za_tx_01032011.SitCalc',16);
2090          -- Tax Liability
2091          trc_TotLibFB := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbFrnInc);
2092          trc_LibFyFB  := (trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI)) / trc_SitFactor;
2093          trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
2094          trc_LibFpFB  := trc_LibFyFB - bal_TX_ON_FB_YTD;
2095       ElSE
2096          hr_utility.set_location('py_za_tx_01032011.SitCalc',17);
2097          -- Set Cascade Figures and Refund
2098          trc_TotLibFB   := trc_TotLibNI;
2099          trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
2100          trc_LibFpFBOvr := TRUE;
2101       END IF;
2102    ELSE
2103       hr_utility.set_location('py_za_tx_01032011.SitCalc',18);
2104       -- Set Cascade Figures and Refund
2105       trc_FrnBenErn  := trc_NorErn;
2106       trc_TxbFrnInc  := trc_TxbNorInc;
2107       trc_TotLibFB   := trc_TotLibNI;
2108       trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
2109       trc_LibFpFBOvr := TRUE;
2110    END IF;
2111 
2112 -- Travel Allowance
2113 --
2114    -- Ytd Travel Allowance
2115    trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
2116    -- Skip the calculation if there is No Income
2117    IF trc_TrvAllYtd <> 0 THEN
2118       hr_utility.set_location('py_za_tx_01032011.SitCalc',19);
2119       -- Travel Earnings
2120       trc_TrvAllErn := trc_TrvAllYtd * trc_SitFactor + trc_FrnBenErn;
2121       -- Taxable Travel Income
2122       --TYS2010
2123       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2124       trc_TxbTrvIncWoDon := trc_TrvAllErn - trc_PerTotAbm;
2125       trc_TxbTrvInc :=trc_TxbTrvIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbTrvIncWoDon,trc_PerDonAmt);
2126 
2127       -- Threshold Check
2128       IF trc_TxbTrvInc >= trc_Threshold THEN
2129          hr_utility.set_location('py_za_tx_01032011.SitCalc',20);
2130          -- Tax Liability
2131          trc_TotLibTA := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbTrvInc);
2132          trc_LibFyTA  := (trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB)) / trc_SitFactor;
2133          trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
2134          trc_LibFpTA  := trc_LibFyTA - bal_TX_ON_TA_YTD;
2135       ELSE
2136          hr_utility.set_location('py_za_tx_01032011.SitCalc',21);
2137          -- Set Cascade Figures and Refund
2138          trc_TotLibTA   := trc_TotLibFB;
2139          trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
2140          trc_LibFpTAOvr := TRUE;
2141       END IF;
2142    ELSE
2143       hr_utility.set_location('py_za_tx_01032011.SitCalc',22);
2144       -- Set Cascade Figures and Refund
2145       trc_TrvAllErn  := trc_FrnBenErn;
2146       trc_TxbTrvInc  := trc_TxbFrnInc;
2147       trc_TotLibTA   := trc_TotLibFB;
2148       trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
2149       trc_LibFpTAOvr := TRUE;
2150    END IF;
2151 
2152 -- Bonus Provision
2153 --
2154    -- Ytd Bonus Prvision
2155    trc_BonProYtd := bal_BP_YTD;
2156    -- Skip the calculation if there is No Income
2157    IF trc_BonProYtd <> 0 THEN
2158       hr_utility.set_location('py_za_tx_01032011.SitCalc',23);
2159       -- Bonus Provision Earnings
2160       trc_BonProErn := trc_BonProYtd * trc_SitFactor + trc_TrvAllErn;
2161       -- Taxable Bonus Provision Income
2162       --TYS2010
2163       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2164       trc_TxbBonProIncWoDon := trc_BonProErn - trc_PerTotAbm;
2165       trc_TxbBonProInc :=trc_TxbBonProIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbBonProIncWoDon,trc_PerDonAmt);
2166 
2167       -- Threshold Check
2168       IF trc_TxbBonProInc >= trc_Threshold THEN
2169          hr_utility.set_location('py_za_tx_01032011.SitCalc',24);
2170          -- Tax Liability
2171          trc_TotLibBP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbBonProInc);
2172          trc_LibFyBP  := (trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA)) / trc_SitFactor;
2173          trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
2174          trc_LibFpBP  := trc_LibFyBP - bal_TX_ON_BP_YTD;
2175       ELSE
2176          hr_utility.set_location('py_za_tx_01032011.SitCalc',25);
2177          -- Set Cascade Figures and Refund
2178          trc_TotLibBP   := trc_TotLibTA;
2179          trc_LibFpBP    := -1 * bal_TX_ON_BP_YTD;
2180          trc_LibFpBPOvr := TRUE;
2181       END IF;
2182    ELSE
2183       hr_utility.set_location('py_za_tx_01032011.SitCalc',26);
2184       -- Set Cascade Figures and Refund
2185       trc_BonProErn    := trc_TrvAllErn;
2186       trc_TxbBonProInc := trc_TxbTrvInc;
2187       trc_TotLibBP     := trc_TotLibTA;
2188       trc_LibFpBP      := -1 * bal_TX_ON_BP_YTD;
2189       trc_LibFpBPOvr   := TRUE;
2190    END IF;
2191 
2192 -- Annual Bonus
2193 --
2194    -- Ytd Annual Bonus
2195    trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
2196    -- Skip the calculation if there is No Income
2197    IF trc_AnnBonYtd <> 0 THEN
2198       hr_utility.set_location('py_za_tx_01032011.SitCalc',27);
2199       -- Annual Bonus Earnings
2200       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
2201       -- Taxable Annual Bonus Income
2202       --TYS2010
2203       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2204       trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
2205       trc_TxbAnnBonInc :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
2206 
2207       -- Threshold Check
2208       IF trc_TxbAnnBonInc >= trc_Threshold THEN
2209          hr_utility.set_location('py_za_tx_01032011.SitCalc',28);
2210          -- Tax Liability
2211          trc_TotLibAB := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnBonInc);
2212          trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
2213          trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
2214          hr_utility.set_location('py_za_tx_01032011.SitCalc',29);
2215          -- Check Bonus Provision
2216          IF trc_BonProYtd <> 0 THEN
2217             hr_utility.set_location('py_za_tx_01032011.SitCalc',30);
2218             -- Check Bonus Provision Frequency
2219             IF dbi_BP_TX_RCV = 'B' OR py_za_tx_utl_01032011.SitePeriod THEN
2220                hr_utility.set_location('py_za_tx_01032011.SitCalc',31);
2221                trc_LibFpAB :=
2222                trc_LibFyAB - (bal_TX_ON_BP_YTD
2223                              + trc_LibFpBP
2224                              + bal_TX_ON_AB_YTD);
2225             ELSE
2226                hr_utility.set_location('py_za_tx_01032011.SitCalc',32);
2227                trc_LibFpAB := 0;
2228             END IF;
2229          ELSE
2230             hr_utility.set_location('py_za_tx_01032011.SitCalc',33);
2231             trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
2232          END IF;
2233       ELSE
2234          hr_utility.set_location('py_za_tx_01032011.SitCalc',34);
2235          -- Set Cascade Figures and Refund
2236          trc_TotLibAB   := trc_TotLibTA;
2237          trc_LibFpAB    := -1 * bal_TX_ON_AB_YTD;
2238          trc_LibFpABOvr := TRUE;
2239       END IF;
2240    ELSE
2241       hr_utility.set_location('py_za_tx_01032011.SitCalc',35);
2242       -- Set Cascade Figures and Refund
2243       trc_LibFpAB      := -1 * bal_TX_ON_AB_YTD;
2244       trc_LibFpABOvr   := TRUE;
2245 
2246       IF dbi_BP_TX_RCV = 'A' AND py_za_tx_utl_01032011.SitePeriod THEN
2247          hr_utility.set_location('py_za_tx_01032011.SitCalc',36);
2248          trc_LibFpBP      := -1 * bal_TX_ON_BP_YTD;
2249          trc_LibFpBPOvr   := TRUE;
2250          --Commented below line for bug 9438325
2251          --trc_LibFpAPOvr   := TRUE;
2252 
2253          trc_AnnBonErn    := trc_TrvAllErn;
2254          trc_TxbAnnBonInc := trc_TxbTrvInc;
2255          trc_TotLibAB     := trc_TotLibTA;
2256       ELSE
2257          hr_utility.set_location('py_za_tx_01032011.SitCalc',37);
2258          trc_AnnBonErn    := trc_BonProErn;
2259          trc_TxbAnnBonInc := trc_TxbBonProInc;
2260          trc_TotLibAB     := trc_TotLibBP;
2261       END IF;
2262    END IF;
2263 
2264 -- Annual Payments
2265 --
2266    -- Ytd Annual Payments
2267    trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
2268    -- Skip the calculation if there is No Income
2269    IF trc_AnnPymYtd <> 0 THEN
2270       hr_utility.set_location('py_za_tx_01032011.SitCalc',38);
2271       -- Annual Payments Earnings
2272       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
2273       --TYS2010
2274       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2275       -- Taxable Annual Payments Income
2276       trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
2277 
2278       trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
2279 
2280       -- Threshold Check
2281       IF trc_TxbAnnPymInc >= trc_Threshold THEN
2282          hr_utility.set_location('py_za_tx_01032011.SitCalc',39);
2283          -- Tax Liability
2284          trc_TotLibAP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2285          trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
2286          trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
2287          trc_LibFpAP  := trc_LibFyAP - bal_TX_ON_AP_YTD;
2288       ELSE
2289          hr_utility.set_location('py_za_tx_01032011.SitCalc',40);
2290          -- Set Cascade Figures and Refund
2291          trc_TotLibAP   := trc_TotLibAB;
2292          trc_LibFpAP    := -1 * bal_TX_ON_AP_YTD;
2293          trc_LibFpAPOvr := TRUE;
2294       END IF;
2295    ELSE
2296       hr_utility.set_location('py_za_tx_01032011.SitCalc',41);
2297       -- Set Cascade Figures and Refund
2298       trc_AnnPymErn    := trc_AnnBonErn;
2299       trc_TxbAnnPymInc := trc_TxbAnnBonInc;
2300       trc_TotLibAP     := trc_TotLibAB;
2301       trc_LibFpAP      := -1 * bal_TX_ON_AP_YTD;
2302       trc_LibFpAPOvr   := TRUE;
2303    END IF;
2304 
2305 -- Public Office Allowance
2306 --
2307    -- Ytd Public Office Allowance
2308    trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
2309    -- Skip the calculation if there is No Income
2310    IF trc_PblOffYtd <> 0 THEN
2311       hr_utility.set_location('py_za_tx_01032011.SitCalc',42);
2312       -- Public Office Allowance Earnings
2313       trc_PblOffErn := trc_PblOffYtd * trc_SitFactor + trc_AnnPymErn;
2314       -- Taxable Public Office Allowance
2315       --TYS2010
2316       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2317       trc_TxbPblOffIncWoDon := trc_PblOffErn - trc_AnnTotAbm;
2318 
2319       trc_TxbPblOffInc :=trc_TxbPblOffIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbPblOffIncWoDon,trc_AnnDonAmt);
2320 
2321       -- Threshold Check
2322       IF trc_TxbPblOffInc >= trc_Threshold THEN
2323          hr_utility.set_location('py_za_tx_01032011.SitCalc',43);
2324          -- Tax Liability
2325          trc_TotLibPO := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbPblOffInc);
2326          trc_LibFyPO  := (trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP)) / trc_SitFactor;
2327          trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
2328          trc_LibFpPO  := trc_LibFyPO - bal_TX_ON_PO_YTD;
2329       ElSE
2330          hr_utility.set_location('py_za_tx_01032011.SitCalc',44);
2331          -- Set Cascade Figures and Refund
2332          trc_TotLibPO   := trc_TotLibAP;
2333          trc_LibFpPO    := -1 * bal_TX_ON_PO_YTD;
2334          trc_LibFpPOOvr := TRUE;
2335       END IF;
2336    ELSE
2337       hr_utility.set_location('py_za_tx_01032011.SitCalc',45);
2338       -- Set Cascade Figures and Refund
2339       trc_PblOffErn     := trc_AnnPymErn;
2340       trc_TxbPblOffInc  := trc_TxbAnnPymInc;
2341       trc_TotLibPO      := trc_TotLibAP;
2342       trc_LibFpPO       := -1 * bal_TX_ON_PO_YTD;
2343       trc_LibFpPOOvr    := TRUE;
2344    END IF;
2345 
2346    -- Net to Gross Annual Payments.
2347    -- Ytd Net to Gross Annual Payments
2348    trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
2349    -- Skip the calculation if there is No Income
2350    IF trc_AnnPymNtgYtd <> 0 THEN
2351       hr_utility.set_location('py_za_tx_01032011.SitCalc',46);
2352       -- Annual Payments Net to Gross Earnings
2353       trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_PblOffErn;
2354 
2355       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2356       -- Taxable Annual Payments Income
2357       trc_TxbAnnPymNtgIncWoDon := trc_AnnPymNtgErn - trc_AnnTotAbm;
2358       trc_TxbAnnPymNtgInc :=trc_TxbAnnPymNtgIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnPymNtgIncWoDon,trc_AnnDonAmt);
2359 
2360       -- Threshold Check
2361       IF trc_TxbAnnPymNtgInc >= trc_Threshold THEN
2362          hr_utility.set_location('py_za_tx_01032011.SitCalc',47);
2363          -- Tax Liability
2364          trc_TotLibNtgAP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnPymNtgInc);
2365          trc_LibFyNtgAP  := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibPO);
2366          trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibPO);
2367          trc_LibFpNtgAP  := trc_LibFyNtgAP - bal_TX_ON_AP_NTG_YTD;
2368 
2369       ELSE
2370          hr_utility.set_location('py_za_tx_01032011.SitCalc',48);
2371          -- Set Cascade Figures and Refund
2372          trc_TotLibNtgAP   := trc_TotLibPO;
2373          trc_LibFpNtgAP    := -1 * bal_TX_ON_AP_NTG_YTD;
2374          trc_LibFpNtgAPOvr := TRUE;
2375       END IF;
2376    ELSE
2377       hr_utility.set_location('py_za_tx_01032011.SitCalc',49);
2378       -- Set Cascade Figures and Refund
2379       trc_AnnPymNtgErn     := trc_PblOffErn;
2380       trc_TxbAnnPymNtgInc  := trc_TxbPblOffInc;
2381       trc_TotLibNtgAP      := trc_TotLibPO;
2382       trc_LibFpNtgAP       := -1 * bal_TX_ON_AP_NTG_YTD;
2383       trc_LibFpNtgAPOvr    := TRUE;
2384    END IF;
2385 
2386    -- Ytd Net to Gross EE Debt due to Net to Gross Annual Payments
2387    trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
2388    -- Skip the calculation if there is No Income
2389    IF trc_AnnEEDbtNtgYtd <> 0 THEN
2390       hr_utility.set_location('py_za_tx_01032011.SitCalc',50);
2391       -- Annual EE Debt Net to Gross Earnings
2392       trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
2393 
2394       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2395       trc_TxbAnnEEDbtNtgIncWoDon := trc_AnnEEDbtNtgErn - trc_AnnTotNTGAbm;
2396       trc_TxbAnnEEDbtNtgInc :=trc_TxbAnnEEDbtNtgIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnEEDbtNtgIncWoDon,trc_AnnDonAmt);
2397 
2398       -- Threshold Check
2399       IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
2400          hr_utility.set_location('py_za_tx_01032011.SitCalc',51);
2401          -- Tax Liability
2402          trc_TotLibNtgEEDbt := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnEEDbtNtgInc);
2403          trc_LibFyNtgEEDbt  := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
2404          trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
2405          trc_LibFpNtgEEDbt  := trc_LibFyNtgEEDbt - bal_TX_ON_EE_DBT_NTG_YTD;
2406       ELSE
2407          hr_utility.set_location('py_za_tx_01032011.SitCalc',52);
2408          -- Set Cascade Figures and Refund
2409          trc_TotLibNtgEEDbt   := trc_TotLibNtgAP;
2410          trc_LibFpNtgEEDbt    := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
2411          trc_LibFpNtgEEDbtOvr := TRUE;
2412       END IF;
2413    ELSE
2414       hr_utility.set_location('py_za_tx_01032011.SitCalc',53);
2415       -- Set Cascade Figures and Refund
2416       trc_AnnEEDbtNtgErn     := trc_AnnPymNtgErn;
2417       trc_TxbAnnEEDbtNtgInc  := trc_TxbAnnPymNtgInc;
2418       trc_TotLibNtgEEDbt      := trc_TotLibNtgAP;
2419       trc_LibFpNtgEEDbt       := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
2420       trc_LibFpNtgEEDbtOvr    := TRUE;
2421    END IF;
2422 
2423 -- Net Pay Validation
2424 --
2425    -- Net Pay of the Employee
2426    l_Np := bal_NET_PAY_RUN;
2427    -- Site Limit Check
2428   /* Commented for bug 8751513 as the value in trc_PblOffErn is duplicated because trc_TxbAnnPymInc holds that value
2429    IF trc_TxbAnnPymInc + trc_PblOffErn < glb_ZA_SIT_LIM THEN
2430       hr_utility.set_location('py_za_tx_01032011.SitCalc',54);
2431       l_Sl := TRUE;
2432    ELSE
2433       hr_utility.set_location('py_za_tx_01032011.SitCalc',47);
2434       l_Sl := FALSE;
2435    END IF;
2436 */
2437 
2438    --Added for Net to Gross
2439    IF trc_TxbAnnEEDbtNtgInc < glb_ZA_SIT_LIM THEN
2440       hr_utility.set_location('py_za_tx_01032011.SitCalc',54);
2441       l_Sl := TRUE;
2442    ELSE
2443       hr_utility.set_location('py_za_tx_01032011.SitCalc',55);
2444       l_Sl := FALSE;
2445    END IF;
2446 
2447    -- Allow Refund at last period for Non Cumulative Tax method
2448    IF (dbi_TX_MTD = 'N') THEN
2449       l_Sl := TRUE;
2450    END IF;
2451 
2452    py_za_tx_utl_01032011.ValidateTaxOns(p_Rf => l_Sl);
2453 
2454    hr_utility.set_location('py_za_tx_01032011.SitCalc',56);
2455 
2456 -- Set IT3A Indicator
2457 --
2458 /* Commented for bug 8751513 as the value in trc_PblOffErn is duplicated because trc_TxbAnnPymInc holds that value
2459    IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN */
2460    IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
2461       hr_utility.set_location('py_za_tx_01032011.SitCalc',57);
2462       trc_It3Ind := 0; -- Over Lim
2463    ELSE
2464       hr_utility.set_location('py_za_tx_01032011.SitCalc',58);
2465       trc_It3Ind := 1; -- Under Lim
2466    END IF;
2467 
2468 -- Calculate Total Taxable Income and pass out
2469 --
2470 /* Commented for bug 8751513 as the value in trc_PblOffErn is duplicated because trc_TxbAnnPymInc holds that value
2471    trc_OUpdFig := (trc_TxbAnnPymInc + trc_PblOffErn) - bal_TOT_TXB_INC_ITD;  */
2472    trc_OUpdFig := trc_TxbAnnEEDbtNtgInc - bal_TOT_TXB_INC_ITD;
2473 
2474    hr_utility.set_location('py_za_tx_01032011.SitCalc',59);
2475 
2476    -- Deemed Remuneration
2477    WrtHrTrc('trc_TxbDmdRmn:        '||to_char(trc_TxbDmdRmn));
2478    WrtHrTrc('trc_TotLibDR:         '||to_char(trc_TotLibDR));
2479    WrtHrTrc('trc_LibFyDR:          '||to_char(trc_LibFyDR));
2480    WrtHrTrc('trc_LibFpDR:          '||to_char(trc_LibFpDR));
2481    -- Base Income
2482    WrtHrTrc('trc_BseErn:           '||to_char(trc_BseErn));
2483    WrtHrTrc('trc_TxbBseInc:        '||to_char(trc_TxbBseInc));
2484    WrtHrTrc('trc_TotLibBse:        '||to_char(trc_TotLibBse));
2485    -- Normal Income
2486    WrtHrTrc('trc_NorIncYtd:        '||to_char(trc_NorIncYtd));
2487    WrtHrTrc('trc_NorIncPtd:        '||to_char(trc_NorIncPtd));
2488    WrtHrTrc('trc_NorErn:           '||to_char(trc_NorErn));
2489    WrtHrTrc('trc_TxbNorInc:        '||to_char(trc_TxbNorInc));
2490    WrtHrTrc('trc_TxbNorIncWoDon:   '||to_char(trc_TxbNorIncWoDon));
2491    WrtHrTrc('trc_TotLibNI:         '||to_char(trc_TotLibNI));
2492    WrtHrTrc('trc_LibFyNI:          '||to_char(trc_LibFyNI));
2493    WrtHrTrc('trc_LibFpNI:          '||to_char(trc_LibFpNI));
2494    -- Fringe Benefits
2495    WrtHrTrc('trc_FrnBenYtd:        '||to_char(trc_FrnBenYtd));
2496    WrtHrTrc('trc_FrnBenPtd:        '||to_char(trc_FrnBenPtd));
2497    WrtHrTrc('trc_FrnBenErn:        '||to_char(trc_FrnBenErn));
2498    WrtHrTrc('trc_TxbFrnInc:        '||to_char(trc_TxbFrnInc));
2499    WrtHrTrc('trc_TxbFrnIncWoDon:   '||to_char(trc_TxbFrnIncWoDon));
2500    WrtHrTrc('trc_TotLibFB:         '||to_char(trc_TotLibFB));
2501    WrtHrTrc('trc_LibFyFB:          '||to_char(trc_LibFyFB));
2502    WrtHrTrc('trc_LibFpFB:          '||to_char(trc_LibFpFB));
2503    -- Travel Allowance
2504    WrtHrTrc('trc_TrvAllYtd:        '||to_char(trc_TrvAllYtd));
2505    WrtHrTrc('trc_TrvAllPtd:        '||to_char(trc_TrvAllPtd));
2506    WrtHrTrc('trc_TrvAllErn:        '||to_char(trc_TrvAllErn));
2507    WrtHrTrc('trc_TxbTrvInc:        '||to_char(trc_TxbTrvInc));
2508    WrtHrTrc('trc_TxbTrvIncWoDon:   '||to_char(trc_TxbTrvIncWoDon));
2509    WrtHrTrc('trc_TotLibTA:         '||to_char(trc_TotLibTA));
2510    WrtHrTrc('trc_LibFyTA:          '||to_char(trc_LibFyTA));
2511    WrtHrTrc('trc_LibFpTA:          '||to_char(trc_LibFpTA));
2512    -- Bonus Provision
2513    WrtHrTrc('trc_BonProYtd:        '||to_char(trc_BonProYtd));
2514    WrtHrTrc('trc_BonProPtd:        '||to_char(trc_BonProPtd));
2515    WrtHrTrc('trc_BonProErn:        '||to_char(trc_BonProErn));
2516    WrtHrTrc('trc_TxbBonProInc:     '||to_char(trc_TxbBonProInc));
2517    WrtHrTrc('trc_TxbBonProIncWoDon:'||to_char(trc_TxbBonProIncWoDon));
2518    WrtHrTrc('trc_TotLibBP:         '||to_char(trc_TotLibBP));
2519    WrtHrTrc('trc_LibFyBP:          '||to_char(trc_LibFyBP));
2520    WrtHrTrc('trc_LibFpBP:          '||to_char(trc_LibFpBP));
2521    -- Annual Bonus
2522    WrtHrTrc('trc_AnnBonYtd:        '||to_char(trc_AnnBonYtd));
2523    WrtHrTrc('trc_AnnBonPtd:        '||to_char(trc_AnnBonPtd));
2524    WrtHrTrc('trc_AnnBonErn:        '||to_char(trc_AnnBonErn));
2525    WrtHrTrc('trc_TxbAnnBonInc:     '||to_char(trc_TxbAnnBonInc));
2526    WrtHrTrc('trc_TxbAnnBonIncWoDon:'||to_char(trc_TxbAnnBonIncWoDon));
2527    WrtHrTrc('trc_TotLibAB:         '||to_char(trc_TotLibAB));
2528    WrtHrTrc('trc_LibFyAB:          '||to_char(trc_LibFyAB));
2529    WrtHrTrc('trc_LibFpAB:          '||to_char(trc_LibFpAB));
2530    -- Annual Payments
2531    WrtHrTrc('trc_AnnPymYtd:        '||to_char(trc_AnnPymYtd));
2532    WrtHrTrc('trc_AnnPymPtd:        '||to_char(trc_AnnPymPtd));
2533    WrtHrTrc('trc_AnnPymErn:        '||to_char(trc_AnnPymErn));
2534    WrtHrTrc('trc_TxbAnnPymInc:     '||to_char(trc_TxbAnnPymInc));
2535    WrtHrTrc('trc_TxbAnnPymIncWoDon:'||to_char(trc_TxbAnnPymIncWoDon));
2536    WrtHrTrc('trc_TotLibAP:         '||to_char(trc_TotLibAP));
2537    WrtHrTrc('trc_LibFyAP:          '||to_char(trc_LibFyAP));
2538    WrtHrTrc('trc_LibFpAP:          '||to_char(trc_LibFpAP));
2539    -- Pubilc Office Allowance
2540    WrtHrTrc('trc_PblOffYtd:        '||to_char(trc_PblOffYtd));
2541    WrtHrTrc('trc_PblOffPtd:        '||to_char(trc_PblOffPtd));
2542    WrtHrTrc('trc_PblOffErn:        '||to_char(trc_PblOffErn));
2543    WrtHrTrc('trc_TxbPblOffInc:     '||to_char(trc_TxbPblOffInc));
2544    WrtHrTrc('trc_TxbPblOffIncWoDon:'||to_char(trc_TxbPblOffIncWoDon));
2545    WrtHrTrc('trc_TotLibPO:         '||to_char(trc_TotLibPO));
2546    WrtHrTrc('trc_LibFyPO:          '||to_char(trc_LibFyPO));
2547    WrtHrTrc('trc_LibFpPO:          '||to_char(trc_LibFpPO));
2548 
2549    -- NTG
2550    WrtHrTrc('trc_AnnPymNtgYtd:          '||to_char(trc_AnnPymNtgYtd));
2551    WrtHrTrc('trc_AnnPymNtgPtd:          '||to_char(trc_AnnPymNtgPtd));
2552    WrtHrTrc('trc_AnnPymNtgErn:          '||to_char(trc_AnnPymNtgErn));
2553    WrtHrTrc('trc_TxbAnnPymNtgInc:       '||to_char(trc_TxbAnnPymNtgInc));
2554    WrtHrTrc('trc_TxbAnnPymNtgIncWoDon:  '||to_char(trc_TxbAnnPymNtgIncWoDon));
2555    WrtHrTrc('trc_TotLibNtgAP:           '||to_char(trc_TotLibNtgAP ));
2556    WrtHrTrc('trc_LibFyNtgAP:            '||to_char(trc_LibFyNtgAP  ));
2557    WrtHrTrc('trc_LibFpNtgAP:            '||to_char(trc_LibFpNtgAP  ));
2558 
2559    WrtHrTrc('trc_AnnEEDbtNTGYtd:        '||to_char(trc_AnnEEDbtNTGYtd));
2560    WrtHrTrc('trc_AnnEEDbtNtgPtd:        '||to_char(trc_AnnEEDbtNtgPtd));
2561    WrtHrTrc('trc_AnnEEDbtNtgErn:        '||to_char(trc_AnnEEDbtNtgErn));
2562    WrtHrTrc('trc_TxbAnnEEDbtNtgInc:     '||to_char(trc_TxbAnnEEDbtNtgInc));
2563    WrtHrTrc('trc_TxbAnnEEDbtNtgIncWoDon:'||to_char(trc_TxbAnnEEDbtNtgIncWoDon));
2564    WrtHrTrc('trc_TotLibNtgEEDbt:        '||to_char(trc_TotLibNtgEEDbt ));
2565    WrtHrTrc('trc_LibFyNtgEEDbt:         '||to_char(trc_LibFyNtgEEDbt  ));
2566    WrtHrTrc('trc_LibFpNtgEEDbt:         '||to_char(trc_LibFpNtgEEDbt  ));
2567 
2568 
2569 EXCEPTION
2570    WHEN OTHERS THEN
2571       IF xpt_Msg = 'No Error' THEN
2572          xpt_Msg := 'SitCalc: '||TO_CHAR(SQLCODE);
2573       END IF;
2574       RAISE xpt_E;
2575 END SitCalc;
2576 
2577 -------------------------------------------------------------------------------
2578 -- DirCalc                                                                   --
2579 -- Tax Calculation for Directive Assignments                                 --
2580 -------------------------------------------------------------------------------
2581 PROCEDURE DirCalc AS
2582 -- Variables
2583 --
2584    l_Np       BALANCE DEFAULT 0;
2585 
2586 BEGIN
2587 
2588    hr_utility.set_location('py_za_tx_01032011.DirCalc',1);
2589 -- Identify the calculation
2590 --
2591    trc_CalTyp := 'DirCalc';
2592 
2593 -- Update Global Balance Values with correct TAXABLE values
2594 --
2595    --Fix for bug#10372926
2596    --py_za_tx_utl_01032011.TrvAll;
2597 
2598    hr_utility.set_location('py_za_tx_01032011.DirCalc',2);
2599 
2600    bal_TOT_TXB_PO_YTD  := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
2601 
2602 -- Normal Income
2603 --
2604    -- Ytd Normal Income
2605    trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
2606    -- Skip the calculation if there is No Income
2607    IF trc_NorIncYtd <> 0 THEN
2608       hr_utility.set_location('py_za_tx_01032011.DirCalc',3);
2609       -- Normal Earnings
2610       trc_NorErn := trc_NorIncYtd;
2611       -- Tax Liability
2612       trc_TotLibNI := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_NorErn);
2613       trc_LibFyNI  := trc_TotLibNI - 0;
2614       trc_TotLibNI := greatest(trc_TotLibNI,0);
2615       trc_LibFpNI  := trc_LibFyNI - bal_TX_ON_NI_YTD;
2616    ELSE
2617       hr_utility.set_location('py_za_tx_01032011.DirCalc',4);
2618       -- Set Cascade Figures and Refund
2619       trc_NorErn     := 0;
2620       trc_TotLibNI   := 0;
2621       trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
2622       trc_LibFpNIOvr := TRUE;
2623    END IF;
2624 
2625 -- Fringe Benefits
2626 --
2627    -- Ytd Fringe Benefits
2628      trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
2629    -- Skip the calculation if there is No Income
2630    IF trc_FrnBenYtd <> 0 THEN
2631       hr_utility.set_location('py_za_tx_01032011.DirCalc',5);
2632       -- Fringe Benefit Earnings
2633       trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
2634       -- Tax Liability
2635       trc_TotLibFB := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_FrnBenErn);
2636       trc_LibFyFB  := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
2637       trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
2638       trc_LibFpFB  := trc_LibFyFB - bal_TX_ON_FB_YTD;
2639    ELSE
2640       hr_utility.set_location('py_za_tx_01032011.DirCalc',6);
2641       -- Set Cascade Figures and Refund
2642       trc_FrnBenErn  := trc_NorErn;
2643       trc_TotLibFB   := trc_TotLibNI;
2644       trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
2645       trc_LibFpFBOvr := TRUE;
2646    END IF;
2647 
2648 -- Travel Allowance
2649 --
2650    -- Ytd Travel Allowance
2651    trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
2652    -- Skip the calculation if there is No Income
2653    IF trc_TrvAllYtd <> 0 THEN
2654       hr_utility.set_location('py_za_tx_01032011.DirCalc',7);
2655       -- Travel Allowance Earnings
2656       trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
2657       -- Tax Liability
2658       trc_TotLibTA := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TrvAllErn);
2659       trc_LibFyTA  := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
2660       trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
2661       trc_LibFpTA  := trc_LibFyTA - bal_TX_ON_TA_YTD;
2662    ELSE
2663       hr_utility.set_location('py_za_tx_01032011.DirCalc',8);
2664       -- Set Cascade Figures and Refund
2665       trc_TrvAllErn  := trc_FrnBenErn; --Cascade Figure
2666       trc_TotLibTA   := trc_TotLibFB;
2667       trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
2668       trc_LibFpTAOvr := TRUE;
2669    END IF;
2670 
2671 -- Bonus Provision
2672 --
2673    -- Ytd Bonus Provision
2674    trc_BonProYtd := bal_BP_YTD;
2675    -- Skip the calculation if there is No Income
2676    IF trc_BonProYtd <> 0 THEN
2677       hr_utility.set_location('py_za_tx_01032011.DirCalc',9);
2678       -- Bonus Provision Earnings
2679       trc_BonProErn := trc_BonProYtd + trc_TrvAllErn;
2680       -- Tax Liability
2681       trc_TotLibBP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_BonProErn);
2682       trc_LibFyBP  := trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA);
2683       trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
2684       trc_LibFpBP  := trc_LibFyBP - bal_TX_ON_BP_YTD;
2685    ELSE
2686       hr_utility.set_location('py_za_tx_01032011.DirCalc',10);
2687       -- Set Cascade Figures and Refund
2688       trc_BonProErn  := trc_TrvAllErn;
2689       trc_TotLibBP   := trc_TotLibTA;
2690       trc_LibFpBP    := -1 * bal_TX_ON_BP_YTD;
2691       trc_LibFpBPOvr := TRUE;
2692    END IF;
2693 
2694 -- Annual Bonus
2695 --
2696    -- Ytd Annual Bonus
2697    trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
2698    -- Skip the calculation if there is No Income
2699    IF trc_AnnBonYtd <> 0 THEN
2700       hr_utility.set_location('py_za_tx_01032011.DirCalc',11);
2701       -- Annual Bonus Earnings
2702       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
2703       -- Tax Liability
2704       trc_TotLibAB := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_AnnBonErn);
2705       trc_LibFyAB  := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
2706       trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
2707       -- Check Bonus Provision
2708       IF trc_BonProYtd <> 0 THEN
2709          hr_utility.set_location('py_za_tx_01032011.DirCalc',12);
2710          -- Check Bonus Provision Frequency
2711          IF dbi_BP_TX_RCV = 'B' OR py_za_tx_utl_01032011.SitePeriod THEN
2712             hr_utility.set_location('py_za_tx_01032011.DirCalc',13);
2713             trc_LibFpAB :=
2714             trc_LibFyAB - (bal_TX_ON_BP_YTD
2715                           + trc_LibFpBP
2716                           + bal_TX_ON_AB_YTD);
2717          ELSE
2718             hr_utility.set_location('py_za_tx_01032011.DirCalc',14);
2719             trc_LibFpAB := 0;
2720          END IF;
2721       ELSE
2722          hr_utility.set_location('py_za_tx_01032011.DirCalc',15);
2723          trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
2724       END IF;
2725    ELSE
2726       hr_utility.set_location('py_za_tx_01032011.DirCalc',16);
2727       -- Set Cascade Figures and Refund
2728       trc_LibFpAB    := -1 * bal_TX_ON_AB_YTD;
2729       trc_LibFpABOvr := TRUE;
2730 
2731       IF dbi_BP_TX_RCV = 'A' AND py_za_tx_utl_01032011.SitePeriod THEN
2732          hr_utility.set_location('py_za_tx_01032011.DirCalc',17);
2733          trc_LibFpBP    := -1 * bal_TX_ON_BP_YTD;
2734          trc_LibFpBPOvr := TRUE;
2735          trc_LibFpAPOvr := TRUE;
2736 
2737          trc_AnnBonErn  := trc_TrvAllErn;
2738          trc_TotLibAB   := trc_TotLibTA;
2739       ELSE
2740          hr_utility.set_location('py_za_tx_01032011.DirCalc',18);
2741          trc_AnnBonErn  := trc_BonProErn;
2742          trc_TotLibAB   := trc_TotLibBP;
2743       END IF;
2744    END IF;
2745 
2746 -- Annual Payments
2747 --
2748    -- Ytd Annual Payments
2749    trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
2750    -- Skip the calculation if there is No Income
2751    IF trc_AnnPymYtd <> 0 THEN
2752       hr_utility.set_location('py_za_tx_01032011.DirCalc',19);
2753       -- Annual Payments Earnings
2754       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
2755       -- Tax Liability
2756       trc_TotLibAP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_AnnPymErn);
2757       trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
2758       trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
2759       trc_LibFpAP  := trc_LibFyAP - bal_TX_ON_AP_YTD;
2760    ElSE
2761       hr_utility.set_location('py_za_tx_01032011.DirCalc',20);
2762       -- Set Cascade Figures and Refund
2763       trc_AnnPymErn  := trc_AnnBonErn;
2764       trc_TotLibAP   := trc_TotLibAB;
2765       trc_LibFpAP    := -1 * bal_TX_ON_AP_YTD;
2766       trc_LibFpAPOvr := TRUE;
2767    END IF;
2768 
2769 -- Public Office Allowance
2770 --
2771    -- Ytd Public Office Allowance
2772    trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
2773    -- Skip the calculation if there is No Income
2774    IF trc_PblOffYtd <> 0 THEN
2775       hr_utility.set_location('py_za_tx_01032011.DirCalc',21);
2776       -- Public Office Allowance Earnings
2777       trc_PblOffErn := trc_PblOffYtd + trc_AnnPymErn;
2778       -- Tax Liability
2779       trc_TotLibPO := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_PblOffErn);
2780       trc_LibFyPO  := trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP);
2781       trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
2782       trc_LibFpPO  := trc_LibFyPO - bal_TX_ON_PO_YTD;
2783    ELSE
2784       hr_utility.set_location('py_za_tx_01032011.DirCalc',22);
2785       -- Set Cascade Figures and Refund
2786       trc_PblOffErn  := trc_AnnPymErn;
2787       trc_TotLibPO   := trc_TotLibAP;
2788       trc_LibFpPO    := -1 * bal_TX_ON_PO_YTD;
2789       trc_LibFpPOOvr := TRUE;
2790    END IF;
2791 
2792    -- Net to Gross Annual Payments.
2793    -- Ytd Net to Gross Annual Payments
2794    trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
2795    -- Skip the calculation if there is No Income
2796    IF trc_AnnPymNtgYtd <> 0 THEN
2797       hr_utility.set_location('py_za_tx_01032011.DirCalc',23);
2798       -- Annual Payments Net to Gross Earnings
2799       trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_PblOffErn;
2800       -- Tax Liability
2801       trc_TotLibNtgAP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_AnnPymNtgErn);
2802       trc_LibFyNtgAP  := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibPO);
2803       trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibPO);
2804       trc_LibFpNtgAP  := trc_LibFyNtgAP - bal_TX_ON_AP_NTG_YTD;
2805 
2806    ELSE
2807       hr_utility.set_location('py_za_tx_01032011.DirCalc',24);
2808       -- Set Cascade Figures and Refund
2809       trc_AnnPymNtgErn  := trc_PblOffErn;
2810       trc_TotLibNtgAP   := trc_TotLibPO;
2811       trc_LibFpNtgAP    := -1 * bal_TX_ON_AP_NTG_YTD;
2812       trc_LibFpNtgAPOvr := TRUE;
2813    END IF;
2814 
2815    -- Ytd Net to Gross EE Debt arised due to Net to Gross Annual Payments
2816    trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
2817    -- Skip the calculation if there is No Income
2818    IF trc_AnnEEDbtNtgYtd <> 0 THEN
2819       hr_utility.set_location('py_za_tx_01032011.DirCalc',25);
2820       -- Annual EE Debt Net to Gross Earnings
2821       trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
2822 
2823       -- Tax Liability
2824       trc_TotLibNtgEEDbt := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_AnnEEDbtNtgErn);
2825       trc_LibFyNtgEEDbt  := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
2826       trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
2827       trc_LibFpNtgEEDbt  := trc_LibFyNtgEEDbt - bal_TX_ON_EE_DBT_NTG_YTD;
2828    ELSE
2829        hr_utility.set_location('py_za_tx_01032011.DirCalc',26);
2830        -- Set Cascade Figures and Refund
2831        trc_AnnEEDbtNtgErn   := trc_AnnPymNtgErn;
2832        trc_TotLibNtgEEDbt   := trc_TotLibNtgAP;
2833        trc_LibFpNtgEEDbt    := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
2834        trc_LibFpNtgEEDbtOvr := TRUE;
2835    END IF;
2836 
2837 
2838 -- Net Pay Validation
2839 --
2840    py_za_tx_utl_01032011.ValidateTaxOns(p_Rf => TRUE);
2841 
2842    hr_utility.set_location('py_za_tx_01032011.DirCalc',27);
2843 
2844 -- Tax Percentage Indicator
2845 --
2846    IF dbi_TX_STA    IN ('D','P') THEN
2847       hr_utility.set_location('py_za_tx_01032011.DirCalc',28);
2848       trc_TxPercVal := dbi_TX_DIR_VAL;
2849    ELSIF dbi_TX_STA = 'E' THEN
2850       hr_utility.set_location('py_za_tx_01032011.DirCalc',29);
2851       trc_TxPercVal := glb_ZA_CC_TX_PRC;
2852    ELSIF dbi_TX_STA = 'F' THEN
2853       hr_utility.set_location('py_za_tx_01032011.DirCalc',30);
2854       trc_TxPercVal := glb_ZA_TMP_TX_RTE;
2855    ELSIF dbi_TX_STA = 'J' THEN
2856       hr_utility.set_location('py_za_tx_01032011.DirCalc',31);
2857       trc_TxPercVal := glb_ZA_PER_SERV_COMP_PERC;
2858    ELSIF dbi_TX_STA = 'K' THEN
2859       hr_utility.set_location('py_za_tx_01032011.DirCalc',32);
2860       trc_TxPercVal := glb_ZA_PER_SERV_TRST_PERC;
2861    ELSIF dbi_TX_STA = 'L' THEN
2862       hr_utility.set_location('py_za_tx_01032011.DirCalc',33);
2863       trc_TxPercVal := glb_ZA_PER_SERV_COMP_PERC;
2864    ELSE
2865       hr_utility.set_location('py_za_tx_01032011.DirCalc',34);
2866       trc_TxPercVal := 0;
2867    END IF;
2868 
2869    hr_utility.set_location('py_za_tx_01032011.DirCalc',35);
2870 
2871    -- Base Income
2872    WrtHrTrc('trc_BseErn:                '||to_char(trc_BseErn));
2873    WrtHrTrc('trc_TxbBseInc:             '||to_char(trc_TxbBseInc));
2874    WrtHrTrc('trc_TotLibBse:             '||to_char(trc_TotLibBse));
2875    -- Normal Income
2876    WrtHrTrc('trc_NorIncYtd:             '||to_char(trc_NorIncYtd));
2877    WrtHrTrc('trc_NorIncPtd:             '||to_char(trc_NorIncPtd));
2878    WrtHrTrc('trc_NorErn:                '||to_char(trc_NorErn));
2879    WrtHrTrc('trc_TxbNorInc:             '||to_char(trc_TxbNorInc));
2880    WrtHrTrc('trc_TotLibNI:              '||to_char(trc_TotLibNI));
2881    WrtHrTrc('trc_LibFyNI:               '||to_char(trc_LibFyNI));
2882    WrtHrTrc('trc_LibFpNI:               '||to_char(trc_LibFpNI));
2883    -- Fringe Benefits
2884    WrtHrTrc('trc_FrnBenYtd:             '||to_char(trc_FrnBenYtd));
2885    WrtHrTrc('trc_FrnBenPtd:             '||to_char(trc_FrnBenPtd));
2886    WrtHrTrc('trc_FrnBenErn:             '||to_char(trc_FrnBenErn));
2887    WrtHrTrc('trc_TxbFrnInc:             '||to_char(trc_TxbFrnInc));
2888    WrtHrTrc('trc_TotLibFB:              '||to_char(trc_TotLibFB));
2889    WrtHrTrc('trc_LibFyFB:               '||to_char(trc_LibFyFB));
2890    WrtHrTrc('trc_LibFpFB:               '||to_char(trc_LibFpFB));
2891    -- Travel Allowance
2892    WrtHrTrc('trc_TrvAllYtd:             '||to_char(trc_TrvAllYtd));
2893    WrtHrTrc('trc_TrvAllPtd:             '||to_char(trc_TrvAllPtd));
2894    WrtHrTrc('trc_TrvAllErn:             '||to_char(trc_TrvAllErn));
2895    WrtHrTrc('trc_TxbTrvInc:             '||to_char(trc_TxbTrvInc));
2896    WrtHrTrc('trc_TotLibTA:              '||to_char(trc_TotLibTA));
2897    WrtHrTrc('trc_LibFyTA:               '||to_char(trc_LibFyTA));
2898    WrtHrTrc('trc_LibFpTA:               '||to_char(trc_LibFpTA));
2899    -- Bonus Provision
2900    WrtHrTrc('trc_BonProYtd:             '||to_char(trc_BonProYtd));
2901    WrtHrTrc('trc_BonProPtd:             '||to_char(trc_BonProPtd));
2902    WrtHrTrc('trc_BonProErn:             '||to_char(trc_BonProErn));
2903    WrtHrTrc('trc_TxbBonProInc:          '||to_char(trc_TxbBonProInc));
2904    WrtHrTrc('trc_TotLibBP:              '||to_char(trc_TotLibBP));
2905    WrtHrTrc('trc_LibFyBP:               '||to_char(trc_LibFyBP));
2906    WrtHrTrc('trc_LibFpBP:               '||to_char(trc_LibFpBP));
2907    -- Annual Bonus
2908    WrtHrTrc('trc_AnnBonYtd:             '||to_char(trc_AnnBonYtd));
2909    WrtHrTrc('trc_AnnBonPtd:             '||to_char(trc_AnnBonPtd));
2910    WrtHrTrc('trc_AnnBonErn:             '||to_char(trc_AnnBonErn));
2911    WrtHrTrc('trc_TxbAnnBonInc:          '||to_char(trc_TxbAnnBonInc));
2912    WrtHrTrc('trc_TotLibAB:              '||to_char(trc_TotLibAB));
2913    WrtHrTrc('trc_LibFyAB:               '||to_char(trc_LibFyAB));
2914    WrtHrTrc('trc_LibFpAB:               '||to_char(trc_LibFpAB));
2915    -- Annual Payments
2916    WrtHrTrc('trc_AnnPymYtd:             '||to_char(trc_AnnPymYtd));
2917    WrtHrTrc('trc_AnnPymPtd:             '||to_char(trc_AnnPymPtd));
2918    WrtHrTrc('trc_AnnPymErn:             '||to_char(trc_AnnPymErn));
2919    WrtHrTrc('trc_TxbAnnPymInc:          '||to_char(trc_TxbAnnPymInc));
2920    WrtHrTrc('trc_TotLibAP:              '||to_char(trc_TotLibAP));
2921    WrtHrTrc('trc_LibFyAP:               '||to_char(trc_LibFyAP));
2922    WrtHrTrc('trc_LibFpAP:               '||to_char(trc_LibFpAP));
2923    -- Pubilc Office Allowance
2924    WrtHrTrc('trc_PblOffYtd:             '||to_char(trc_PblOffYtd));
2925    WrtHrTrc('trc_PblOffPtd:             '||to_char(trc_PblOffPtd));
2926    WrtHrTrc('trc_PblOffErn:             '||to_char(trc_PblOffErn));
2927    WrtHrTrc('trc_TxbPblOffInc:          '||to_char(trc_TxbPblOffInc));
2928    WrtHrTrc('trc_TotLibPO:              '||to_char(trc_TotLibPO));
2929    WrtHrTrc('trc_LibFyPO:               '||to_char(trc_LibFyPO));
2930    WrtHrTrc('trc_LibFpPO:               '||to_char(trc_LibFpPO));
2931 
2932    -- NTG
2933    WrtHrTrc('trc_AnnPymNtgYtd:          '||to_char(trc_AnnPymNtgYtd));
2934    WrtHrTrc('trc_AnnPymNtgPtd:          '||to_char(trc_AnnPymNtgPtd));
2935    WrtHrTrc('trc_AnnPymNtgErn:          '||to_char(trc_AnnPymNtgErn));
2936    WrtHrTrc('trc_TxbAnnPymNtgInc:       '||to_char(trc_TxbAnnPymNtgInc));
2937    WrtHrTrc('trc_TotLibNtgAP:           '||to_char(trc_TotLibNtgAP ));
2938    WrtHrTrc('trc_LibFyNtgAP:            '||to_char(trc_LibFyNtgAP  ));
2939    WrtHrTrc('trc_LibFpNtgAP:            '||to_char(trc_LibFpNtgAP  ));
2940 
2941    WrtHrTrc('trc_AnnEEDbtNTGYtd:        '||to_char(trc_AnnEEDbtNTGYtd));
2942    WrtHrTrc('trc_AnnEEDbtNtgPtd:        '||to_char(trc_AnnEEDbtNtgPtd));
2943    WrtHrTrc('trc_AnnEEDbtNtgErn:        '||to_char(trc_AnnEEDbtNtgErn));
2944    WrtHrTrc('trc_TxbAnnEEDbtNtgInc:     '||to_char(trc_TxbAnnEEDbtNtgInc));
2945    WrtHrTrc('trc_TotLibNtgEEDbt:        '||to_char(trc_TotLibNtgEEDbt ));
2946    WrtHrTrc('trc_LibFyNtgEEDbt:         '||to_char(trc_LibFyNtgEEDbt  ));
2947    WrtHrTrc('trc_LibFpNtgEEDbt:         '||to_char(trc_LibFpNtgEEDbt  ));
2948 
2949 EXCEPTION
2950    WHEN OTHERS THEN
2951       IF xpt_Msg = 'No Error' THEN
2952          xpt_Msg := 'DirCalc: '||TO_CHAR(SQLCODE);
2953       END IF;
2954       RAISE xpt_E;
2955 END DirCalc;
2956 
2957 -------------------------------------------------------------------------------
2958 -- BasCalc                                                                   --
2959 -- Pre-Earnings Tax Calculation                                              --
2960 -------------------------------------------------------------------------------
2961 PROCEDURE BasCalc AS
2962 -- Variables
2963 --
2964    l_Np       BALANCE;
2965    l_65Year   DATE;
2966 
2967 BEGIN
2968 
2969    hr_utility.set_location('py_za_tx_01032011.BasCalc',1);
2970 -- Identify the Calculation
2971 --
2972    trc_CalTyp := 'BasCalc';
2973 
2974 -- Rebates
2975    py_za_tx_utl_01032011.SetRebates;
2976 
2977 -- Abatements
2978    py_za_tx_utl_01032011.Abatements;
2979 
2980 -- Deemed Remuneration
2981 --
2982    -- Run Deemed Remuneration
2983    trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
2984 
2985    -- Skip the calculation if there is No Income
2986    IF trc_DmdRmnRun <> 0 THEN
2987       hr_utility.set_location('py_za_tx_01032011.BasCalc',2);
2988       -- Taxable Deemed Remuneration
2989       trc_TxbDmdRmn := trc_DmdRmnRun;
2990       -- Threshold Check
2991       IF trc_TxbDmdRmn >= trc_Threshold THEN
2992          hr_utility.set_location('py_za_tx_01032011.BasCalc',3);
2993          -- Tax Liability
2994          trc_TotLibDR := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbDmdRmn);
2995       ELSE
2996          hr_utility.set_location('py_za_tx_01032011.BasCalc',4);
2997          trc_TotLibDR := 0;
2998       END IF;
2999    ELSE
3000       hr_utility.set_location('py_za_tx_01032011.BasCalc',5);
3001       trc_TotLibDR := 0;
3002    END IF;
3003 
3004    hr_utility.set_location('py_za_tx_01032011.BasCalc',6);
3005 
3006 -- Base Earnings
3007 --
3008    --Base Earnings
3009    trc_BseErn := bal_TOT_TXB_AB_PTD + bal_TOT_TXB_AP_PTD + bal_TOT_TXB_AP_NTG_YTD;
3010       -- Estimate Base Taxable Income
3011       trc_TxbBseInc := trc_BseErn * dbi_ZA_PAY_PRDS_PER_YR;
3012    -- Threshold Check
3013    IF trc_TxbBseInc >= trc_Threshold THEN
3014       hr_utility.set_location('py_za_tx_01032011.BasCalc',7);
3015       -- Tax Liability
3016       trc_TotLibBse := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbBseInc);
3017       trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
3018    ELSE
3019       hr_utility.set_location('py_za_tx_01032011.BasCalc',8);
3020       trc_TotLibBse := trc_TotLibDR;
3021    END IF;
3022 
3023    hr_utility.set_location('py_za_tx_01032011.BasCalc',9);
3024 
3025 -- Annual Bonus
3026 --
3027    -- Ytd Annual Bonus
3028    trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
3029    -- Skip the calculation if there is No Income
3030    IF trc_AnnBonYtd <> 0 THEN
3031       hr_utility.set_location('py_za_tx_01032011.BasCalc',10);
3032       -- Annual Bonus Earnings
3033       trc_AnnBonErn := trc_AnnBonYtd + trc_TxbBseInc;
3034       -- Taxable Annual Bonus Income
3035       --TYS2010
3036       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3037       trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
3038       trc_TxbAnnBonInc      :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
3039 
3040       -- Threshold Check
3041       IF trc_TxbAnnBonInc >= trc_Threshold THEN
3042          hr_utility.set_location('py_za_tx_01032011.BasCalc',11);
3043          -- Tax Liability
3044          trc_TotLibAB := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnBonInc);
3045          trc_LibFyAB  := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
3046          trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
3047          -- Check Bonus Provision
3048          IF bal_BP_YTD <> 0 THEN
3049             hr_utility.set_location('py_za_tx_01032011.BasCalc',12);
3050             -- Check Bonus Provision Frequency
3051             IF dbi_BP_TX_RCV = 'A' THEN
3052                hr_utility.set_location('py_za_tx_01032011.BasCalc',13);
3053                trc_LibFpAB := 0;
3054             ELSE
3055                hr_utility.set_location('py_za_tx_01032011.BasCalc',14);
3056                trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD
3057                                             + bal_TX_ON_AB_YTD);
3058             END IF;
3059          ELSE
3060             hr_utility.set_location('py_za_tx_01032011.BasCalc',15);
3061             trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
3062          END IF;
3063       ELSE
3064          hr_utility.set_location('py_za_tx_01032011.BasCalc',16);
3065          trc_TotLibAB := trc_TotLibBse;
3066       END IF;
3067    ELSE
3068       hr_utility.set_location('py_za_tx_01032011.BasCalc',17);
3069       trc_TotLibAB     := trc_TotLibBse;
3070       trc_TxbAnnBonInc := trc_TxbBseInc;
3071    END IF;
3072 
3073    hr_utility.set_location('py_za_tx_01032011.BasCalc',18);
3074 
3075 -- Annual Payments
3076 --
3077    -- Ytd Annual Payments
3078    trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
3079    -- Skip the calculation if there is No Income
3080    IF trc_AnnPymYtd <> 0 THEN
3081       hr_utility.set_location('py_za_tx_01032011.BasCalc',19);
3082    -- Taxable Annual Payments Income
3083    /* Commented for TYS2010
3084       trc_TxbAnnPymInc := trc_AnnPymYtd + trc_TxbAnnBonInc;  */
3085       --Added for TYS2010
3086       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
3087       trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
3088       trc_TxbAnnPymInc      :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
3089 
3090    -- Threshold Check
3091       IF trc_TxbAnnPymInc >= trc_Threshold THEN
3092          hr_utility.set_location('py_za_tx_01032011.BasCalc',20);
3093       -- Tax Liability
3094          trc_TotLibAP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnPymInc);
3095          trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
3096          trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
3097          trc_LibFpAP  := trc_LibFyAP - bal_TX_ON_AP_YTD;
3098       ELSE
3099          hr_utility.set_location('py_za_tx_01032011.BasCalc',21);
3100         /* NULL; */
3101         --Added NTG
3102          trc_TotLibAP :=trc_TotLibAB;
3103       END IF;
3104    ELSE
3105       hr_utility.set_location('py_za_tx_01032011.BasCalc',22);
3106       --NULL;
3107       --Added NTG
3108       trc_TotLibAP     := trc_TotLibAB;
3109       trc_TxbAnnPymInc := trc_TxbAnnBonInc;
3110    END IF;
3111 
3112    -- Net to Gross Annual Payments.
3113    -- Ytd Net to Gross Annual Payments
3114    trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
3115    -- Skip the calculation if there is No Income
3116    IF trc_AnnPymNtgYtd <> 0 THEN
3117       hr_utility.set_location('py_za_tx_01032011.BasCalc',23);
3118       -- Annual Payments Net to Gross Earnings
3119       trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_AnnPymErn;
3120 
3121       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3122       -- Taxable Annual Payments Income
3123       trc_TxbAnnPymNtgIncWoDon := trc_AnnPymNtgErn - trc_AnnTotAbm;
3124       trc_TxbAnnPymNtgInc :=trc_TxbAnnPymNtgIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnPymNtgIncWoDon,trc_AnnDonAmt);
3125 
3126       -- Threshold Check
3127       IF trc_TxbAnnPymNtgInc >= trc_Threshold THEN
3128          hr_utility.set_location('py_za_tx_01032011.BasCalc',24);
3129          -- Tax Liability
3130          trc_TotLibNtgAP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnPymNtgInc);
3131          trc_LibFyNtgAP  := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibAP);
3132          trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibAP);
3133          trc_LibFpNtgAP  := trc_LibFyNtgAP - bal_TX_ON_AP_NTG_YTD;
3134       ELSE
3135          hr_utility.set_location('py_za_tx_01032011.BasCalc',25);
3136          trc_TotLibNtgAP   := trc_TotLibAP;
3137       END IF;
3138    ELSE
3139       hr_utility.set_location('py_za_tx_01032011.BasCalc',26);
3140       trc_TxbAnnPymNtgInc  := trc_TxbAnnPymInc;
3141       trc_TotLibNtgAP      := trc_TotLibAP;
3142    END IF;
3143 
3144    -- Ytd Net to Gross EE Debt due to Net to Gross Annual Payments
3145    trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
3146    -- Skip the calculation if there is No Income
3147    IF trc_AnnEEDbtNtgYtd <> 0 THEN
3148       hr_utility.set_location('py_za_tx_01032011.BasCalc',27);
3149       -- Annual EE Debt Net to Gross Earnings
3150       trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
3151 
3152       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3153       trc_TxbAnnEEDbtNtgIncWoDon := trc_AnnEEDbtNtgErn - trc_AnnTotNTGAbm;
3154       trc_TxbAnnEEDbtNtgInc :=trc_TxbAnnEEDbtNtgIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnEEDbtNtgIncWoDon,trc_AnnDonAmt);
3155 
3156       -- Threshold Check
3157       IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
3158          hr_utility.set_location('py_za_tx_01032011.BasCalc',28);
3159          -- Tax Liability
3160          trc_TotLibNtgEEDbt := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnEEDbtNtgInc);
3161          trc_LibFyNtgEEDbt  := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
3162          trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
3163 
3164          hr_utility.set_location('py_za_tx_01032011.BasCalc',29);
3165          trc_LibFpNtgEEDbt  := trc_LibFyNtgEEDbt - bal_TX_ON_EE_DBT_NTG_YTD;
3166       ELSE
3167          hr_utility.set_location('py_za_tx_01032011.BasCalc',30);
3168          trc_TotLibNtgEEDbt   := trc_TotLibNtgAP;
3169       END IF;
3170    ELSE
3171       hr_utility.set_location('py_za_tx_01032011.BasCalc',31);
3172       trc_TxbAnnEEDbtNtgInc  := trc_TxbAnnPymNtgInc;
3173       trc_TotLibNtgEEDbt      := trc_TotLibNtgAP;
3174    END IF;
3175 
3176 -- Net Pay Validation
3177 --
3178    py_za_tx_utl_01032011.ValidateTaxOns;
3179 
3180    -- Deemed Remuneration
3181    WrtHrTrc('trc_TxbDmdRmn:             '||to_char(trc_TxbDmdRmn));
3182    WrtHrTrc('trc_TotLibDR:              '||to_char(trc_TotLibDR));
3183    WrtHrTrc('trc_LibFyDR:               '||to_char(trc_LibFyDR));
3184    WrtHrTrc('trc_LibFpDR:               '||to_char(trc_LibFpDR));
3185    -- Base Income
3186    WrtHrTrc('trc_BseErn:                '||to_char(trc_BseErn));
3187    WrtHrTrc('trc_TxbBseInc:             '||to_char(trc_TxbBseInc));
3188    WrtHrTrc('trc_TotLibBse:             '||to_char(trc_TotLibBse));
3189    -- Normal Income
3190    WrtHrTrc('trc_NorIncYtd:             '||to_char(trc_NorIncYtd));
3191    WrtHrTrc('trc_NorIncPtd:             '||to_char(trc_NorIncPtd));
3192    WrtHrTrc('trc_NorErn:                '||to_char(trc_NorErn));
3193    WrtHrTrc('trc_TxbNorInc:             '||to_char(trc_TxbNorInc));
3194    WrtHrTrc('trc_TxbNorIncWoDon:        '||to_char(trc_TxbNorInc));
3195    WrtHrTrc('trc_TotLibNI:              '||to_char(trc_TotLibNI));
3196    WrtHrTrc('trc_LibFyNI:               '||to_char(trc_LibFyNI));
3197    WrtHrTrc('trc_LibFpNI:               '||to_char(trc_LibFpNI));
3198    -- Fringe Benefits
3199    WrtHrTrc('trc_FrnBenYtd:             '||to_char(trc_FrnBenYtd));
3200    WrtHrTrc('trc_FrnBenPtd:             '||to_char(trc_FrnBenPtd));
3201    WrtHrTrc('trc_FrnBenErn:             '||to_char(trc_FrnBenErn));
3202    WrtHrTrc('trc_TxbFrnInc:             '||to_char(trc_TxbFrnInc));
3203    WrtHrTrc('trc_TxbFrnIncWoDon:        '||to_char(trc_TxbFrnIncWoDon));
3204    WrtHrTrc('trc_TotLibFB:              '||to_char(trc_TotLibFB));
3205    WrtHrTrc('trc_LibFyFB:               '||to_char(trc_LibFyFB));
3206    WrtHrTrc('trc_LibFpFB:               '||to_char(trc_LibFpFB));
3207    -- Travel Allowance
3208    WrtHrTrc('trc_TrvAllYtd:             '||to_char(trc_TrvAllYtd));
3209    WrtHrTrc('trc_TrvAllPtd:             '||to_char(trc_TrvAllPtd));
3210    WrtHrTrc('trc_TrvAllErn:             '||to_char(trc_TrvAllErn));
3211    WrtHrTrc('trc_TxbTrvInc:             '||to_char(trc_TxbTrvInc));
3212    WrtHrTrc('trc_TxbTrvIncWoDon:        '||to_char(trc_TxbTrvIncWoDon));
3213    WrtHrTrc('trc_TotLibTA:              '||to_char(trc_TotLibTA));
3214    WrtHrTrc('trc_LibFyTA:               '||to_char(trc_LibFyTA));
3215    WrtHrTrc('trc_LibFpTA:               '||to_char(trc_LibFpTA));
3216    -- Bonus Provision
3217    WrtHrTrc('trc_BonProYtd:             '||to_char(trc_BonProYtd));
3218    WrtHrTrc('trc_BonProPtd:             '||to_char(trc_BonProPtd));
3219    WrtHrTrc('trc_BonProErn:             '||to_char(trc_BonProErn));
3220    WrtHrTrc('trc_TxbBonProInc:          '||to_char(trc_TxbBonProInc));
3221    WrtHrTrc('trc_TxbBonProIncWoDon:     '||to_char(trc_TxbBonProIncWoDon));
3222    WrtHrTrc('trc_TotLibBP:              '||to_char(trc_TotLibBP));
3223    WrtHrTrc('trc_LibFyBP:               '||to_char(trc_LibFyBP));
3224    WrtHrTrc('trc_LibFpBP:               '||to_char(trc_LibFpBP));
3225    -- Annual Bonus
3226    WrtHrTrc('trc_AnnBonYtd:             '||to_char(trc_AnnBonYtd));
3227    WrtHrTrc('trc_AnnBonPtd:             '||to_char(trc_AnnBonPtd));
3228    WrtHrTrc('trc_AnnBonErn:             '||to_char(trc_AnnBonErn));
3229    WrtHrTrc('trc_TxbAnnBonInc:          '||to_char(trc_TxbAnnBonInc));
3230    WrtHrTrc('trc_TxbAnnBonIncWoDon:     '||to_char(trc_TxbAnnBonIncWoDon));
3231    WrtHrTrc('trc_TotLibAB:              '||to_char(trc_TotLibAB));
3232    WrtHrTrc('trc_LibFyAB:               '||to_char(trc_LibFyAB));
3233    WrtHrTrc('trc_LibFpAB:               '||to_char(trc_LibFpAB));
3234    -- Annual Payments
3235    WrtHrTrc('trc_AnnPymYtd:             '||to_char(trc_AnnPymYtd));
3236    WrtHrTrc('trc_AnnPymPtd:             '||to_char(trc_AnnPymPtd));
3237    WrtHrTrc('trc_AnnPymErn:             '||to_char(trc_AnnPymErn));
3238    WrtHrTrc('trc_TxbAnnPymInc:          '||to_char(trc_TxbAnnPymInc));
3239    WrtHrTrc('trc_TxbAnnPymIncWoDon:     '||to_char(trc_TxbAnnPymIncWoDon));
3240    WrtHrTrc('trc_TotLibAP:              '||to_char(trc_TotLibAP));
3241    WrtHrTrc('trc_LibFyAP:               '||to_char(trc_LibFyAP));
3242    WrtHrTrc('trc_LibFpAP:               '||to_char(trc_LibFpAP));
3243    -- Pubilc Office Allowance
3244    WrtHrTrc('trc_PblOffYtd:             '||to_char(trc_PblOffYtd));
3245    WrtHrTrc('trc_PblOffPtd:             '||to_char(trc_PblOffPtd));
3246    WrtHrTrc('trc_PblOffErn:             '||to_char(trc_PblOffErn));
3247    WrtHrTrc('trc_LibFyPO:               '||to_char(trc_LibFyPO));
3248    WrtHrTrc('trc_LibFpPO:               '||to_char(trc_LibFpPO));
3249 
3250    -- NTG Annual Payments
3251    WrtHrTrc('trc_AnnPymNtgYtd:          '||to_char(trc_AnnPymNtgYtd));
3252    WrtHrTrc('trc_AnnPymNtgPtd:          '||to_char(trc_AnnPymNtgPtd));
3253    WrtHrTrc('trc_AnnPymNtgErn:          '||to_char(trc_AnnPymNtgErn));
3254    WrtHrTrc('trc_TxbAnnPymNtgInc:       '||to_char(trc_TxbAnnPymNtgInc));
3255    WrtHrTrc('trc_TxbAnnPymNtgIncWoDon:  '||to_char(trc_TxbAnnPymNtgIncWoDon));
3256    WrtHrTrc('trc_TotLibNtgAP:           '||to_char(trc_TotLibNtgAP ));
3257    WrtHrTrc('trc_LibFyNtgAP:            '||to_char(trc_LibFyNtgAP  ));
3258    WrtHrTrc('trc_LibFpNtgAP:            '||to_char(trc_LibFpNtgAP  ));
3259 
3260    -- NTG EE Debt due to Annual Payments
3261    WrtHrTrc('trc_AnnEEDbtNTGYtd:        '||to_char(trc_AnnEEDbtNTGYtd));
3262    WrtHrTrc('trc_AnnEEDbtNtgPtd:        '||to_char(trc_AnnEEDbtNtgPtd));
3263    WrtHrTrc('trc_AnnEEDbtNtgErn:        '||to_char(trc_AnnEEDbtNtgErn));
3264    WrtHrTrc('trc_TxbAnnEEDbtNtgInc:     '||to_char(trc_TxbAnnEEDbtNtgInc));
3265    WrtHrTrc('trc_TxbAnnEEDbtNtgIncWoDon:'||to_char(trc_TxbAnnEEDbtNtgIncWoDon));
3266    WrtHrTrc('trc_TotLibNtgEEDbt:        '||to_char(trc_TotLibNtgEEDbt ));
3267    WrtHrTrc('trc_LibFyNtgEEDbt:         '||to_char(trc_LibFyNtgEEDbt  ));
3268    WrtHrTrc('trc_LibFpNtgEEDbt:         '||to_char(trc_LibFpNtgEEDbt  ));
3269 
3270 
3271 EXCEPTION
3272    WHEN OTHERS THEN
3273       IF xpt_Msg = 'No Error' THEN
3274          xpt_Msg := 'BasCalc: '||TO_CHAR(SQLCODE);
3275       END IF;
3276       RAISE xpt_E;
3277 END BasCalc;
3278 
3279 -------------------------------------------------------------------------------
3280 -- CalCalc                                                                   --
3281 -- Pre-Earnings Tax Calculation                                              --
3282 -------------------------------------------------------------------------------
3283 PROCEDURE CalCalc AS
3284 -- Variables
3285 --
3286    l_Np       BALANCE;
3287 
3288 BEGIN
3289 
3290    hr_utility.set_location('py_za_tx_01032011.CalCalc',1);
3291 -- Identify the calculation
3292 --
3293    trc_CalTyp := 'CalCalc';
3294 
3295 -- Update Global Balance Values with correct TAXABLE values
3296 --
3297    --Fix for bug#10372926
3298    --py_za_tx_utl_01032011.TrvAll;
3299 
3300    hr_utility.set_location('py_za_tx_01032011.CalCalc',2);
3301 
3302 -- Calendar Ytd Taxable Income
3303 --
3304    trc_TxbIncYtd := ( bal_TOT_TXB_NI_CYTD
3305                     + bal_TOT_TXB_FB_CYTD
3306                     + bal_TOT_TXB_TA_CYTD );
3307 -- If there is no Income Execute the Base calculation
3308 --
3309    IF trc_TxbIncYtd = 0 THEN
3310       hr_utility.set_location('py_za_tx_01032011.CalCalc',3);
3311       BasCalc;
3312    ELSE -- continue CalCalc
3313       hr_utility.set_location('py_za_tx_01032011.CalCalc',4);
3314    -- Site Factor
3315    --
3316       trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032011.DaysWorked;
3317 
3318    -- Rebates
3319       py_za_tx_utl_01032011.SetRebates;
3320 
3321    -- Abatements
3322       py_za_tx_utl_01032011.Abatements;
3323 
3324       hr_utility.set_location('py_za_tx_01032011.CalCalc',5);
3325 
3326    -- Deemed Remuneration
3327    --
3328       -- Run Deemed Remuneration
3329       trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
3330 
3331       -- Skip the calculation if there is No Income
3332       IF trc_DmdRmnRun <> 0 THEN
3333          hr_utility.set_location('py_za_tx_01032011.CalCalc',6);
3334          -- Taxable Deemed Remuneration
3335          trc_TxbDmdRmn := trc_DmdRmnRun;
3336          -- Threshold Check
3337          IF trc_TxbDmdRmn >= trc_Threshold THEN
3338             hr_utility.set_location('py_za_tx_01032011.CalCalc',7);
3339          -- Tax Liability
3340             trc_TotLibDR := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbDmdRmn);
3341          ELSE
3342             hr_utility.set_location('py_za_tx_01032011.CalCalc',8);
3343             trc_TotLibDR := 0;
3344          END IF;
3345       ELSE
3346          hr_utility.set_location('py_za_tx_01032011.CalCalc',9);
3347          trc_TotLibDR := 0;
3348       END IF;
3349 
3350       hr_utility.set_location('py_za_tx_01032011.CalCalc',10);
3351 
3352    -- Base Earnings
3353    --
3354       -- Base Earnings
3355       trc_BseErn := trc_TxbIncYtd * trc_SitFactor;
3356       --TYS2010
3357       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3358       -- Taxable Base Income
3359       trc_TxbBseIncWoDon := trc_BseErn - trc_PerTotAbm;
3360       trc_TxbBseInc      :=trc_TxbBseIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbBseIncWoDon,trc_PerDonAmt);
3361 
3362       -- Threshold Check
3363       IF trc_TxbBseInc >= trc_Threshold THEN
3364          hr_utility.set_location('py_za_tx_01032011.CalCalc',11);
3365          -- Tax Liability
3366          trc_TotLibBse := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbBseInc);
3367          trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
3368       ELSE
3369          hr_utility.set_location('py_za_tx_01032011.CalCalc',12);
3370          trc_TotLibBse := trc_TotLibDR;
3371       END IF;
3372 
3373       hr_utility.set_location('py_za_tx_01032011.CalCalc',13);
3374 
3375    -- Annual Bonus
3376    --
3377       -- Ytd Annual Bonus
3378       trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
3379       -- Skip the calculation if there is No Income
3380       IF trc_AnnBonYtd <> 0 THEN
3381          hr_utility.set_location('py_za_tx_01032011.CalCalc',14);
3382          -- Annual Bonus Earnings
3383          trc_AnnBonErn := trc_AnnBonYtd + trc_BseErn;
3384          -- Taxable Annual Bonus Income
3385          --TYS2010
3386          --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3387          trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
3388          trc_TxbAnnBonInc :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
3389 
3390          -- Threshold Check
3391          IF trc_TxbAnnBonInc >= trc_Threshold THEN
3392             hr_utility.set_location('py_za_tx_01032011.CalCalc',15);
3393             -- Tax Liability
3394             trc_TotLibAB := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnBonInc);
3395             trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
3396             trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
3397             -- Check Bonus Provision
3398             IF bal_BP_YTD <> 0 THEN
3399                hr_utility.set_location('py_za_tx_01032011.CalCalc',16);
3400                -- Check Bonus Provision Frequency
3401                IF dbi_BP_TX_RCV = 'A' THEN
3402                   hr_utility.set_location('py_za_tx_01032011.CalCalc',17);
3403                   trc_LibFpAB := 0;
3404                ELSE
3405                   hr_utility.set_location('py_za_tx_01032011.CalCalc',18);
3406                   trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD
3407                                                + bal_TX_ON_AB_YTD);
3408                END IF;
3409             ELSE
3410                hr_utility.set_location('py_za_tx_01032011.CalCalc',19);
3411                trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
3412             END IF;
3413          ELSE
3414             hr_utility.set_location('py_za_tx_01032011.CalCalc',20);
3415             trc_TotLibAB := trc_TotLibBse;
3416          END IF;
3417       ELSE
3418          hr_utility.set_location('py_za_tx_01032011.CalCalc',21);
3419          trc_AnnBonErn    := trc_BseErn;
3420          trc_TxbAnnBonInc := trc_TxbBseInc;
3421          trc_TotLibAB     := trc_TotLibBse;
3422       END IF;
3423 
3424       hr_utility.set_location('py_za_tx_01032011.CalCalc',22);
3425 
3426    -- Annual Payments
3427    --
3428       -- Ytd Annual Payments
3429       trc_AnnPymYtd := bal_TOT_TXB_AP_YTD ;
3430       -- Skip the calculation if there is No Income
3431       IF trc_AnnPymYtd <> 0 THEN
3432          hr_utility.set_location('py_za_tx_01032011.CalCalc',23);
3433          -- Annual Payments Earnings
3434          trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
3435          -- Taxable Annual Payments Income
3436          --TYS2010
3437          --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3438          trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
3439          trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
3440 
3441          -- Threshold Check
3442          IF trc_TxbAnnPymInc >= trc_Threshold THEN
3443             hr_utility.set_location('py_za_tx_01032011.CalCalc',24);
3444             -- Tax Liability
3445             trc_TotLibAP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnPymInc);
3446             trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
3447             trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
3448             trc_LibFpAP  := trc_LibFyAP - bal_TX_ON_AP_YTD;
3449          ELSE
3450             hr_utility.set_location('py_za_tx_01032011.CalCalc',25);
3451             trc_TotLibAP := trc_TotLibAB;
3452          END IF;
3453       ELSE
3454          hr_utility.set_location('py_za_tx_01032011.CalCalc',26);
3455          trc_AnnPymErn    := trc_AnnBonErn;
3456          trc_TxbAnnPymInc := trc_TxbAnnBonInc;
3457          trc_TotLibAP     := trc_TotLibAB;
3458       END IF;
3459 
3460 
3461    -- Net to Gross Annual Payments.
3462    -- Ytd Net to Gross Annual Payments
3463    trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
3464    -- Skip the calculation if there is No Income
3465    IF trc_AnnPymNtgYtd <> 0 THEN
3466       hr_utility.set_location('py_za_tx_01032011.CalCalc',27);
3467       -- Annual Payments Net to Gross Earnings
3468       trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_AnnPymErn;
3469 
3470       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3471       -- Taxable Annual Payments Income
3472       trc_TxbAnnPymNtgIncWoDon := trc_AnnPymNtgErn - trc_AnnTotAbm;
3473       trc_TxbAnnPymNtgInc :=trc_TxbAnnPymNtgIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnPymNtgIncWoDon,trc_AnnDonAmt);
3474 
3475       -- Threshold Check
3476       IF trc_TxbAnnPymNtgInc >= trc_Threshold THEN
3477          hr_utility.set_location('py_za_tx_01032011.CalCalc',28);
3478          -- Tax Liability
3479          trc_TotLibNtgAP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnPymNtgInc);
3480          trc_LibFyNtgAP  := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibAP);
3481          trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibAP);
3482 
3483          hr_utility.set_location('py_za_tx_01032011.CalCalc',29);
3484          trc_LibFpNtgAP  := trc_LibFyNtgAP - bal_TX_ON_AP_NTG_YTD;
3485 
3486       ELSE
3487          hr_utility.set_location('py_za_tx_01032011.CalCalc',30);
3488          trc_TotLibNtgAP   := trc_TotLibAP;
3489       END IF;
3490    ELSE
3491       hr_utility.set_location('py_za_tx_01032011.CalCalc',31);
3492       trc_AnnPymNtgErn     := trc_AnnPymErn;
3493       trc_TxbAnnPymNtgInc  := trc_TxbAnnPymInc;
3494       trc_TotLibNtgAP      := trc_TotLibAP;
3495    END IF;
3496 
3497 
3498    -- Ytd Net to Gross EE Debt arised due to Net to Gross Annual Payments
3499    trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
3500    -- Skip the calculation if there is No Income
3501    IF trc_AnnEEDbtNtgYtd <> 0 THEN
3502       hr_utility.set_location('py_za_tx_01032011.CalCalc',32);
3503       -- Annual EE Debt Net to Gross Earnings
3504       trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
3505 
3506       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3507       trc_TxbAnnEEDbtNtgIncWoDon := trc_AnnEEDbtNtgErn - trc_AnnTotNTGAbm;
3508       trc_TxbAnnEEDbtNtgInc :=trc_TxbAnnEEDbtNtgIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnEEDbtNtgIncWoDon,trc_AnnDonAmt);
3509 
3510       -- Threshold Check
3511       IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
3512          hr_utility.set_location('py_za_tx_01032011.CalCalc',33);
3513          -- Tax Liability
3514          trc_TotLibNtgEEDbt := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnEEDbtNtgInc);
3515          trc_LibFyNtgEEDbt  := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
3516          trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
3517 
3518          hr_utility.set_location('py_za_tx_01032011.CalCalc',34);
3519          trc_LibFpNtgEEDbt  := trc_LibFyNtgEEDbt - bal_TX_ON_EE_DBT_NTG_YTD;
3520       ELSE
3521          hr_utility.set_location('py_za_tx_01032011.CalCalc',35);
3522          trc_TotLibNtgEEDbt   := trc_TotLibNtgAP;
3523       END IF;
3524    ELSE
3525       hr_utility.set_location('py_za_tx_01032011.CalCalc',36);
3526       trc_AnnEEDbtNtgErn     := trc_AnnPymNtgErn;
3527       trc_TxbAnnEEDbtNtgInc  := trc_TxbAnnPymNtgInc;
3528       trc_TotLibNtgEEDbt      := trc_TotLibNtgAP;
3529    END IF;
3530 
3531    -- Net pay Validation
3532    --
3533       py_za_tx_utl_01032011.ValidateTaxOns;
3534 
3535       -- Deemed Remuneration
3536    WrtHrTrc('trc_TxbDmdRmn:             '||to_char(trc_TxbDmdRmn));
3537    WrtHrTrc('trc_TotLibDR:              '||to_char(trc_TotLibDR));
3538    WrtHrTrc('trc_LibFyDR:               '||to_char(trc_LibFyDR));
3539    WrtHrTrc('trc_LibFpDR:               '||to_char(trc_LibFpDR));
3540    -- Base Income
3541    WrtHrTrc('trc_BseErn:                '||to_char(trc_BseErn));
3542    WrtHrTrc('trc_TxbBseInc:             '||to_char(trc_TxbBseInc));
3543    WrtHrTrc('trc_TxbBseIncWoDon:        '||to_char(trc_TxbBseIncWoDon));
3544    WrtHrTrc('trc_TotLibBse:             '||to_char(trc_TotLibBse));
3545    -- Normal Income
3546    WrtHrTrc('trc_NorIncYtd:             '||to_char(trc_NorIncYtd));
3547    WrtHrTrc('trc_NorIncPtd:             '||to_char(trc_NorIncPtd));
3548    WrtHrTrc('trc_NorErn:                '||to_char(trc_NorErn));
3549    WrtHrTrc('trc_TxbNorInc:             '||to_char(trc_TxbNorInc));
3550    WrtHrTrc('trc_TxbNorIncWoDon:        '||to_char(trc_TxbNorInc));
3551    WrtHrTrc('trc_TotLibNI:              '||to_char(trc_TotLibNI));
3552    WrtHrTrc('trc_LibFyNI:               '||to_char(trc_LibFyNI));
3553    WrtHrTrc('trc_LibFpNI:               '||to_char(trc_LibFpNI));
3554    -- Fringe Benefits
3555    WrtHrTrc('trc_FrnBenYtd:             '||to_char(trc_FrnBenYtd));
3556    WrtHrTrc('trc_FrnBenPtd:             '||to_char(trc_FrnBenPtd));
3557    WrtHrTrc('trc_FrnBenErn:             '||to_char(trc_FrnBenErn));
3558    WrtHrTrc('trc_TxbFrnInc:             '||to_char(trc_TxbFrnInc));
3559    WrtHrTrc('trc_TxbFrnIncWoDon:        '||to_char(trc_TxbFrnIncWoDon));
3560    WrtHrTrc('trc_TotLibFB:              '||to_char(trc_TotLibFB));
3561    WrtHrTrc('trc_LibFyFB:               '||to_char(trc_LibFyFB));
3562    WrtHrTrc('trc_LibFpFB:               '||to_char(trc_LibFpFB));
3563    -- Travel Allowance
3564    WrtHrTrc('trc_TrvAllYtd:             '||to_char(trc_TrvAllYtd));
3565    WrtHrTrc('trc_TrvAllPtd:             '||to_char(trc_TrvAllPtd));
3566    WrtHrTrc('trc_TrvAllErn:             '||to_char(trc_TrvAllErn));
3567    WrtHrTrc('trc_TxbTrvInc:             '||to_char(trc_TxbTrvInc));
3568    WrtHrTrc('trc_TxbTrvIncWoDon:        '||to_char(trc_TxbTrvIncWoDon));
3569    WrtHrTrc('trc_TotLibTA:              '||to_char(trc_TotLibTA));
3570    WrtHrTrc('trc_LibFyTA:               '||to_char(trc_LibFyTA));
3571    WrtHrTrc('trc_LibFpTA:               '||to_char(trc_LibFpTA));
3572    -- Bonus Provision
3573    WrtHrTrc('trc_BonProYtd:             '||to_char(trc_BonProYtd));
3574    WrtHrTrc('trc_BonProPtd:             '||to_char(trc_BonProPtd));
3575    WrtHrTrc('trc_BonProErn:             '||to_char(trc_BonProErn));
3576    WrtHrTrc('trc_TxbBonProInc:          '||to_char(trc_TxbBonProInc));
3577    WrtHrTrc('trc_TxbBonProIncWoDon:     '||to_char(trc_TxbBonProIncWoDon));
3578    WrtHrTrc('trc_TotLibBP:              '||to_char(trc_TotLibBP));
3579    WrtHrTrc('trc_LibFyBP:               '||to_char(trc_LibFyBP));
3580    WrtHrTrc('trc_LibFpBP:               '||to_char(trc_LibFpBP));
3581    -- Annual Bonus
3582    WrtHrTrc('trc_AnnBonYtd:             '||to_char(trc_AnnBonYtd));
3583    WrtHrTrc('trc_AnnBonPtd:             '||to_char(trc_AnnBonPtd));
3584    WrtHrTrc('trc_AnnBonErn:             '||to_char(trc_AnnBonErn));
3585    WrtHrTrc('trc_TxbAnnBonInc:          '||to_char(trc_TxbAnnBonInc));
3586    WrtHrTrc('trc_TxbAnnBonIncWoDon:     '||to_char(trc_TxbAnnBonIncWoDon));
3587    WrtHrTrc('trc_TotLibAB:              '||to_char(trc_TotLibAB));
3588    WrtHrTrc('trc_LibFyAB:               '||to_char(trc_LibFyAB));
3589    WrtHrTrc('trc_LibFpAB:               '||to_char(trc_LibFpAB));
3590    -- Annual Payments
3591    WrtHrTrc('trc_AnnPymYtd:             '||to_char(trc_AnnPymYtd));
3592    WrtHrTrc('trc_AnnPymPtd:             '||to_char(trc_AnnPymPtd));
3593    WrtHrTrc('trc_AnnPymErn:             '||to_char(trc_AnnPymErn));
3594    WrtHrTrc('trc_TxbAnnPymInc:          '||to_char(trc_TxbAnnPymInc));
3595    WrtHrTrc('trc_TxbAnnPymIncWoDon:     '||to_char(trc_TxbAnnPymIncWoDon));
3596    WrtHrTrc('trc_TotLibAP:              '||to_char(trc_TotLibAP));
3597    WrtHrTrc('trc_LibFyAP:               '||to_char(trc_LibFyAP));
3598    WrtHrTrc('trc_LibFpAP:               '||to_char(trc_LibFpAP));
3599    -- Pubilc Office Allowance
3600    WrtHrTrc('trc_PblOffYtd:             '||to_char(trc_PblOffYtd));
3601    WrtHrTrc('trc_PblOffPtd:             '||to_char(trc_PblOffPtd));
3602    WrtHrTrc('trc_PblOffErn:             '||to_char(trc_PblOffErn));
3603    WrtHrTrc('trc_LibFyPO:               '||to_char(trc_LibFyPO));
3604    WrtHrTrc('trc_LibFpPO:               '||to_char(trc_LibFpPO));
3605 
3606    -- NTG Annual Payments
3607    WrtHrTrc('trc_AnnPymNtgYtd:          '||to_char(trc_AnnPymNtgYtd));
3608    WrtHrTrc('trc_AnnPymNtgPtd:          '||to_char(trc_AnnPymNtgPtd));
3609    WrtHrTrc('trc_AnnPymNtgErn:          '||to_char(trc_AnnPymNtgErn));
3610    WrtHrTrc('trc_TxbAnnPymNtgInc:       '||to_char(trc_TxbAnnPymNtgInc));
3611    WrtHrTrc('trc_TxbAnnPymNtgIncWoDon:  '||to_char(trc_TxbAnnPymNtgIncWoDon));
3612    WrtHrTrc('trc_TotLibNtgAP:           '||to_char(trc_TotLibNtgAP ));
3613    WrtHrTrc('trc_LibFyNtgAP:            '||to_char(trc_LibFyNtgAP  ));
3614    WrtHrTrc('trc_LibFpNtgAP:            '||to_char(trc_LibFpNtgAP  ));
3615 
3616    -- NTG EE Debt due to Annual Payments
3617    WrtHrTrc('trc_AnnEEDbtNTGYtd:        '||to_char(trc_AnnEEDbtNTGYtd));
3618    WrtHrTrc('trc_AnnEEDbtNtgPtd:        '||to_char(trc_AnnEEDbtNtgPtd));
3619    WrtHrTrc('trc_AnnEEDbtNtgErn:        '||to_char(trc_AnnEEDbtNtgErn));
3620    WrtHrTrc('trc_TxbAnnEEDbtNtgInc:     '||to_char(trc_TxbAnnEEDbtNtgInc));
3621    WrtHrTrc('trc_TxbAnnEEDbtNtgIncWoDon:'||to_char(trc_TxbAnnEEDbtNtgIncWoDon));
3622    WrtHrTrc('trc_TotLibNtgEEDbt:        '||to_char(trc_TotLibNtgEEDbt ));
3623    WrtHrTrc('trc_LibFyNtgEEDbt:         '||to_char(trc_LibFyNtgEEDbt  ));
3624    WrtHrTrc('trc_LibFpNtgEEDbt:         '||to_char(trc_LibFpNtgEEDbt  ));
3625 
3626 
3627    END IF;
3628 
3629    hr_utility.set_location('py_za_tx_01032011.CalCalc',37);
3630 
3631 EXCEPTION
3632    WHEN OTHERS THEN
3633       IF xpt_Msg = 'No Error' THEN
3634          xpt_Msg := 'CalCalc: '||TO_CHAR(SQLCODE);
3635       END IF;
3636       RAISE xpt_E;
3637 END CalCalc;
3638 -------------------------------------------------------------------------------
3639 -- YtdCalc                                                                   --
3640 -- Pre-Earnings Tax Calculation                                              --
3641 -------------------------------------------------------------------------------
3642 PROCEDURE YtdCalc AS
3643 -- Variables
3644 --
3645    l_Np       BALANCE;
3646 
3647 BEGIN
3648 
3649    hr_utility.set_location('py_za_tx_01032011.YtdCalc',1);
3650 -- Identify the calculation
3651 --
3652    trc_CalTyp := 'YtdCalc';
3653 
3654 -- Update Global Balance Values with correct TAXABLE values
3655    --Fix for bug#10372926
3656    --py_za_tx_utl_01032011.TrvAll;
3657 
3658    hr_utility.set_location('py_za_tx_01032011.YtdCalc',2);
3659 
3660 -- Ytd Taxable Income
3661    trc_TxbIncYtd :=
3662       ( bal_TOT_TXB_NI_YTD
3663       + bal_TOT_TXB_FB_YTD
3664       + bal_TOT_TXB_TA_YTD
3665       + bal_BP_YTD
3666       );
3667 -- If the Ytd Taxable Income = 0, execute the CalCalc
3668    IF trc_TxbIncYtd = 0 THEN
3669       hr_utility.set_location('py_za_tx_01032011.YtdCalc',3);
3670       --When a YtdCalc or CalCalc would be performed,
3671       --the system must do a Bascalc if the method is non-cumulative
3672       IF (dbi_TX_MTD = 'N') then
3673          BasCalc;
3674       ELSE
3675          CalCalc;
3676       END IF;
3677    ELSE --Continue YtdCalc
3678       hr_utility.set_location('py_za_tx_01032011.YtdCalc',4);
3679    -- Site Factor
3680       trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032011.DaysWorked;
3681 
3682    -- Rebates
3683       py_za_tx_utl_01032011.SetRebates;
3684 
3685    -- Abatements
3686       py_za_tx_utl_01032011.Abatements;
3687 
3688       hr_utility.set_location('py_za_tx_01032011.YtdCalc',5);
3689 
3690       --Bug 9369895
3691       --Used in abatement calculation of Package structure employees
3692       bal_TOT_TXB_PO_YTD  := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
3693 
3694    -- Deemed Remuneration
3695    --
3696       -- Run Deemed Remuneration
3697       trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
3698 
3699       -- Skip the calculation if there is No Income
3700       IF trc_DmdRmnRun <> 0 THEN
3701          hr_utility.set_location('py_za_tx_01032011.YtdCalc',6);
3702          -- Taxable Deemed Remuneration
3703          trc_TxbDmdRmn := trc_DmdRmnRun;
3704          -- Threshold Check
3705          IF trc_TxbDmdRmn >= trc_Threshold THEN
3706             hr_utility.set_location('py_za_tx_01032011.YtdCalc',7);
3707             -- Tax Liability
3708             trc_TotLibDR := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbDmdRmn);
3709          ELSE
3710             hr_utility.set_location('py_za_tx_01032011.YtdCalc',8);
3711             trc_TotLibDR := 0;
3712          END IF;
3713       ELSE
3714          hr_utility.set_location('py_za_tx_01032011.YtdCalc',9);
3715          trc_TotLibDR := 0;
3716       END IF;
3717 
3718       hr_utility.set_location('py_za_tx_01032011.YtdCalc',10);
3719 
3720    -- Base Earnings
3721    --
3722       -- Base Earnings
3723       trc_BseErn := trc_TxbIncYtd * trc_SitFactor;
3724       -- Taxable Base Income
3725       --TYS2010
3726       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3727       trc_TxbBseIncWoDon := trc_BseErn - trc_PerTotAbm;
3728       trc_TxbBseInc :=trc_TxbBseIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbBseIncWoDon,trc_PerDonAmt);
3729 
3730       -- Threshold Check
3731       IF trc_TxbBseInc >= trc_Threshold THEN
3732          hr_utility.set_location('py_za_tx_01032011.YtdCalc',11);
3733          -- Tax Liability
3734          trc_TotLibBse := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbBseInc);
3735          trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
3736       ELSE
3737          hr_utility.set_location('py_za_tx_01032011.YtdCalc',12);
3738          trc_TotLibBse := trc_TotLibDR;
3739       END IF;
3740 
3741       hr_utility.set_location('py_za_tx_01032011.YtdCalc',13);
3742 
3743    -- Annual Bonus
3744    --
3745       -- Ytd Annual Bonus
3746       trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
3747       -- Skip the calculation if there is No Income
3748       IF trc_AnnBonYtd <> 0 THEN
3749          hr_utility.set_location('py_za_tx_01032011.YtdCalc',14);
3750          -- Annual Bonus Earnings
3751          trc_AnnBonErn := trc_AnnBonYtd + trc_BseErn;
3752          -- Taxable Annual Bonus Income
3753          --TYS2010
3754          --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3755          trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
3756          trc_TxbAnnBonInc :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
3757 
3758          -- Threshold Check
3759          IF trc_TxbAnnBonInc >= trc_Threshold THEN
3760             hr_utility.set_location('py_za_tx_01032011.YtdCalc',15);
3761             -- Tax Liability
3762             trc_TotLibAB := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnBonInc);
3763             trc_LibFyAB  := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
3764             trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
3765             -- Check Bonus Provision
3766             IF bal_BP_YTD <> 0 THEN
3767                hr_utility.set_location('py_za_tx_01032011.YtdCalc',16);
3768                -- Check Bonus Provision Frequency
3769                IF dbi_BP_TX_RCV = 'A' THEN
3770                   hr_utility.set_location('py_za_tx_01032011.YtdCalc',17);
3771                   trc_LibFpAB := 0;
3772                ELSE
3773                   hr_utility.set_location('py_za_tx_01032011.YtdCalc',18);
3774                   trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD
3775                                                + bal_TX_ON_AB_YTD);
3776                END IF;
3777             ELSE
3778                hr_utility.set_location('py_za_tx_01032011.YtdCalc',19);
3779                trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
3780             END IF;
3781          ELSE
3782             hr_utility.set_location('py_za_tx_01032011.YtdCalc',20);
3783             trc_TotLibAB := trc_TotLibBse;
3784          END IF;
3785       ELSE
3786          hr_utility.set_location('py_za_tx_01032011.YtdCalc',21);
3787          trc_AnnBonErn    := trc_BseErn;
3788          trc_TxbAnnBonInc := trc_TxbBseInc;
3789          trc_TotLibAB     := trc_TotLibBse;
3790       END IF;
3791 
3792       hr_utility.set_location('py_za_tx_01032011.YtdCalc',22);
3793 
3794    -- Annual Payments
3795    --
3796       -- Ytd Annual Payments
3797       trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
3798       -- Skip the calculation if there is No Income
3799       IF trc_AnnPymYtd <> 0 THEN
3800          hr_utility.set_location('py_za_tx_01032011.YtdCalc',23);
3801          -- Annual Payments Earnings
3802          trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
3803          -- Taxable Annual Payments Income
3804          --TYS2010
3805          --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3806          trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
3807          trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
3808 
3809          -- Threshold Check
3810          IF trc_TxbAnnPymInc >= trc_Threshold THEN
3811             hr_utility.set_location('py_za_tx_01032011.YtdCalc',24);
3812             -- Tax Liability
3813             trc_TotLibAP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnPymInc);
3814             trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
3815             trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
3816             trc_LibFpAP  := trc_LibFyAP - bal_TX_ON_AP_YTD;
3817          ELSE
3818             hr_utility.set_location('py_za_tx_01032011.YtdCalc',25);
3819             trc_TotLibAP := trc_TotLibAB;
3820          END IF;
3821       ELSE
3822          hr_utility.set_location('py_za_tx_01032011.YtdCalc',26);
3823          trc_AnnPymErn    := trc_AnnBonErn;
3824          trc_TxbAnnPymInc := trc_TxbAnnBonInc;
3825          trc_TotLibAP     := trc_TotLibAB;
3826       END IF;
3827 
3828    -- Net to Gross Annual Payments.
3829    -- Ytd Net to Gross Annual Payments
3830    trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
3831    -- Skip the calculation if there is No Income
3832    IF trc_AnnPymNtgYtd <> 0 THEN
3833       hr_utility.set_location('py_za_tx_01032011.YtdCalc',27);
3834       -- Annual Payments Net to Gross Earnings
3835       trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_AnnPymErn;
3836 
3837       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3838       -- Taxable Annual Payments Income
3839       trc_TxbAnnPymNtgIncWoDon := trc_AnnPymNtgErn - trc_AnnTotAbm;
3840       trc_TxbAnnPymNtgInc :=trc_TxbAnnPymNtgIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnPymNtgIncWoDon,trc_AnnDonAmt);
3841 
3842       -- Threshold Check
3843       IF trc_TxbAnnPymNtgInc >= trc_Threshold THEN
3844          hr_utility.set_location('py_za_tx_01032011.YtdCalc',28);
3845          -- Tax Liability
3846          trc_TotLibNtgAP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnPymNtgInc);
3847          trc_LibFyNtgAP  := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibAP);
3848          trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibAP);
3849 
3850          hr_utility.set_location('py_za_tx_01032011.YtdCalc',29);
3851          trc_LibFpNtgAP  := trc_LibFyNtgAP - bal_TX_ON_AP_NTG_YTD;
3852 
3853       ELSE
3854          hr_utility.set_location('py_za_tx_01032011.YtdCalc',30);
3855          trc_TotLibNtgAP   := trc_TotLibAP;
3856         -- trc_LibFpNtgAP    := -1 * bal_TX_ON_AP_NTG_YTD;
3857       END IF;
3858    ELSE
3859       hr_utility.set_location('py_za_tx_01032011.YtdCalc',31);
3860       trc_AnnPymNtgErn     := trc_AnnPymErn;
3861       trc_TxbAnnPymNtgInc  := trc_TxbAnnPymInc;
3862       trc_TotLibNtgAP      := trc_TotLibAP;
3863      -- trc_LibFpNtgAP       := -1 * bal_TX_ON_AP_NTG_YTD;
3864    END IF;
3865 
3866 
3867    -- Ytd Net to Gross EE Debt arised due to Net to Gross Annual Payments
3868    trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
3869    -- Skip the calculation if there is No Income
3870    IF trc_AnnEEDbtNtgYtd <> 0 THEN
3871       hr_utility.set_location('py_za_tx_01032011.YtdCalc',32);
3872       -- Annual EE Debt Net to Gross Earnings
3873       trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
3874 
3875       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3876       trc_TxbAnnEEDbtNtgIncWoDon := trc_AnnEEDbtNtgErn - trc_AnnTotNTGAbm;
3877       trc_TxbAnnEEDbtNtgInc :=trc_TxbAnnEEDbtNtgIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnEEDbtNtgIncWoDon,trc_AnnDonAmt);
3878 
3879       -- Threshold Check
3880       IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
3881          hr_utility.set_location('py_za_tx_01032011.YtdCalc',33);
3882          -- Tax Liability
3883          trc_TotLibNtgEEDbt := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnEEDbtNtgInc);
3884          trc_LibFyNtgEEDbt  := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
3885          trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
3886 
3887          hr_utility.set_location('py_za_tx_01032011.YtdCalc',34);
3888          trc_LibFpNtgEEDbt  := trc_LibFyNtgEEDbt - bal_TX_ON_EE_DBT_NTG_YTD;
3889       ELSE
3890          hr_utility.set_location('py_za_tx_01032011.YtdCalc',35);
3891          trc_TotLibNtgEEDbt   := trc_TotLibNtgAP;
3892          --trc_LibFpNtgEEDbt    := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
3893       END IF;
3894    ELSE
3895       hr_utility.set_location('py_za_tx_01032011.YtdCalc',36);
3896       trc_AnnEEDbtNtgErn     := trc_AnnPymNtgErn;
3897       trc_TxbAnnEEDbtNtgInc  := trc_TxbAnnPymNtgInc;
3898       trc_TotLibNtgEEDbt      := trc_TotLibNtgAP;
3899       --trc_LibFpNtgEEDbt       := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
3900    END IF;
3901 
3902    -- Net Pay validation
3903    --
3904       py_za_tx_utl_01032011.ValidateTaxOns;
3905 
3906       hr_utility.set_location('py_za_tx_01032011.YtdCalc',37);
3907 
3908       -- Deemed Remuneration
3909       WrtHrTrc('trc_TxbDmdRmn:             '||to_char(trc_TxbDmdRmn));
3910       WrtHrTrc('trc_TotLibDR:              '||to_char(trc_TotLibDR));
3911       WrtHrTrc('trc_LibFyDR:               '||to_char(trc_LibFyDR));
3912       WrtHrTrc('trc_LibFpDR:               '||to_char(trc_LibFpDR));
3913       -- Base Income
3914       WrtHrTrc('trc_BseErn:                '||to_char(trc_BseErn));
3915       WrtHrTrc('trc_TxbBseInc:             '||to_char(trc_TxbBseInc));
3916       WrtHrTrc('trc_TxbBseIncWoDon:        '||to_char(trc_TxbBseIncWoDon));
3917       WrtHrTrc('trc_TotLibBse:             '||to_char(trc_TotLibBse));
3918       -- Normal Income
3919       WrtHrTrc('trc_NorIncYtd:             '||to_char(trc_NorIncYtd));
3920       WrtHrTrc('trc_NorIncPtd:             '||to_char(trc_NorIncPtd));
3921       WrtHrTrc('trc_NorErn:                '||to_char(trc_NorErn));
3922       WrtHrTrc('trc_TxbNorInc:             '||to_char(trc_TxbNorInc));
3923       WrtHrTrc('trc_TxbNorIncWoDon:        '||to_char(trc_TxbNorIncWoDon));
3924       WrtHrTrc('trc_TotLibNI:              '||to_char(trc_TotLibNI));
3925       WrtHrTrc('trc_LibFyNI:               '||to_char(trc_LibFyNI));
3926       WrtHrTrc('trc_LibFpNI:               '||to_char(trc_LibFpNI));
3927       -- Fringe Benefits
3928       WrtHrTrc('trc_FrnBenYtd:             '||to_char(trc_FrnBenYtd));
3929       WrtHrTrc('trc_FrnBenPtd:             '||to_char(trc_FrnBenPtd));
3930       WrtHrTrc('trc_FrnBenErn:             '||to_char(trc_FrnBenErn));
3931       WrtHrTrc('trc_TxbFrnInc:             '||to_char(trc_TxbFrnInc));
3932       WrtHrTrc('trc_TxbFrnIncWoDon:        '||to_char(trc_TxbFrnIncWoDon));
3933       WrtHrTrc('trc_TotLibFB:              '||to_char(trc_TotLibFB));
3934       WrtHrTrc('trc_LibFyFB:               '||to_char(trc_LibFyFB));
3935       WrtHrTrc('trc_LibFpFB:               '||to_char(trc_LibFpFB));
3936       -- Travel Allowance
3937       WrtHrTrc('trc_TrvAllYtd:             '||to_char(trc_TrvAllYtd));
3938       WrtHrTrc('trc_TrvAllPtd:             '||to_char(trc_TrvAllPtd));
3939       WrtHrTrc('trc_TrvAllErn:             '||to_char(trc_TrvAllErn));
3940       WrtHrTrc('trc_TxbTrvInc:             '||to_char(trc_TxbTrvInc));
3941       WrtHrTrc('trc_TxbTrvIncWoDon:        '||to_char(trc_TxbTrvIncWoDon));
3942       WrtHrTrc('trc_TotLibTA:              '||to_char(trc_TotLibTA));
3943       WrtHrTrc('trc_LibFyTA:               '||to_char(trc_LibFyTA));
3944       WrtHrTrc('trc_LibFpTA:               '||to_char(trc_LibFpTA));
3945       -- Bonus Provision
3946       WrtHrTrc('trc_BonProYtd:             '||to_char(trc_BonProYtd));
3947       WrtHrTrc('trc_BonProPtd:             '||to_char(trc_BonProPtd));
3948       WrtHrTrc('trc_BonProErn:             '||to_char(trc_BonProErn));
3949       WrtHrTrc('trc_TxbBonProInc:          '||to_char(trc_TxbBonProInc));
3950       WrtHrTrc('trc_TxbBonProIncWoDon:     '||to_char(trc_TxbBonProIncWoDon));
3951       WrtHrTrc('trc_TotLibBP:              '||to_char(trc_TotLibBP));
3952       WrtHrTrc('trc_LibFyBP:               '||to_char(trc_LibFyBP));
3953       WrtHrTrc('trc_LibFpBP:               '||to_char(trc_LibFpBP));
3954       -- Annual Bonus
3955       WrtHrTrc('trc_AnnBonYtd:             '||to_char(trc_AnnBonYtd));
3956       WrtHrTrc('trc_AnnBonPtd:             '||to_char(trc_AnnBonPtd));
3957       WrtHrTrc('trc_AnnBonErn:             '||to_char(trc_AnnBonErn));
3958       WrtHrTrc('trc_TxbAnnBonInc:          '||to_char(trc_TxbAnnBonInc));
3959       WrtHrTrc('trc_TxbAnnBonIncWoDon:     '||to_char(trc_TxbAnnBonIncWoDon));
3960       WrtHrTrc('trc_TotLibAB:              '||to_char(trc_TotLibAB));
3961       WrtHrTrc('trc_LibFyAB:               '||to_char(trc_LibFyAB));
3962       WrtHrTrc('trc_LibFpAB:               '||to_char(trc_LibFpAB));
3963       -- Annual Payments
3964       WrtHrTrc('trc_AnnPymYtd:             '||to_char(trc_AnnPymYtd));
3965       WrtHrTrc('trc_AnnPymPtd:             '||to_char(trc_AnnPymPtd));
3966       WrtHrTrc('trc_AnnPymErn:             '||to_char(trc_AnnPymErn));
3967       WrtHrTrc('trc_TxbAnnPymInc:          '||to_char(trc_TxbAnnPymInc));
3968       WrtHrTrc('trc_TxbAnnPymIncWoDon:     '||to_char(trc_TxbAnnPymIncWoDon));
3969       WrtHrTrc('trc_TotLibAP:              '||to_char(trc_TotLibAP));
3970       WrtHrTrc('trc_LibFyAP:               '||to_char(trc_LibFyAP));
3971       WrtHrTrc('trc_LibFpAP:               '||to_char(trc_LibFpAP));
3972       -- Pubilc Office Allowance
3973       WrtHrTrc('trc_PblOffYtd:             '||to_char(trc_PblOffYtd));
3974       WrtHrTrc('trc_PblOffPtd:             '||to_char(trc_PblOffPtd));
3975       WrtHrTrc('trc_PblOffErn:             '||to_char(trc_PblOffErn));
3976       WrtHrTrc('trc_LibFyPO:               '||to_char(trc_LibFyPO));
3977       WrtHrTrc('trc_LibFpPO:               '||to_char(trc_LibFpPO));
3978 
3979       -- NTG Annual Payments
3980       WrtHrTrc('trc_AnnPymNtgYtd:          '||to_char(trc_AnnPymNtgYtd));
3981       WrtHrTrc('trc_AnnPymNtgPtd:          '||to_char(trc_AnnPymNtgPtd));
3982       WrtHrTrc('trc_AnnPymNtgErn:          '||to_char(trc_AnnPymNtgErn));
3983       WrtHrTrc('trc_TxbAnnPymNtgInc:       '||to_char(trc_TxbAnnPymNtgInc));
3984       WrtHrTrc('trc_TxbAnnPymNtgIncWoDon:  '||to_char(trc_TxbAnnPymNtgIncWoDon));
3985       WrtHrTrc('trc_TotLibNtgAP:           '||to_char(trc_TotLibNtgAP ));
3986       WrtHrTrc('trc_LibFyNtgAP:            '||to_char(trc_LibFyNtgAP  ));
3987       WrtHrTrc('trc_LibFpNtgAP:            '||to_char(trc_LibFpNtgAP  ));
3988 
3989       -- NTG EE Debt due to Annual Payments
3990       WrtHrTrc('trc_AnnEEDbtNTGYtd:        '||to_char(trc_AnnEEDbtNTGYtd));
3991       WrtHrTrc('trc_AnnEEDbtNtgPtd:        '||to_char(trc_AnnEEDbtNtgPtd));
3992       WrtHrTrc('trc_AnnEEDbtNtgErn:        '||to_char(trc_AnnEEDbtNtgErn));
3993       WrtHrTrc('trc_TxbAnnEEDbtNtgInc:     '||to_char(trc_TxbAnnEEDbtNtgInc));
3994       WrtHrTrc('trc_TxbAnnEEDbtNtgIncWoDon:'||to_char(trc_TxbAnnEEDbtNtgIncWoDon));
3995       WrtHrTrc('trc_TotLibNtgEEDbt:        '||to_char(trc_TotLibNtgEEDbt ));
3996       WrtHrTrc('trc_LibFyNtgEEDbt:         '||to_char(trc_LibFyNtgEEDbt  ));
3997       WrtHrTrc('trc_LibFpNtgEEDbt:         '||to_char(trc_LibFpNtgEEDbt  ));
3998 
3999    END IF;
4000 
4001 EXCEPTION
4002    WHEN OTHERS THEN
4003       IF xpt_Msg = 'No Error' THEN
4004          xpt_Msg := 'YtdCalc: '||TO_CHAR(SQLCODE);
4005       END IF;
4006       RAISE xpt_E;
4007 END YtdCalc;
4008 -------------------------------------------------------------------------------
4009 -- NorCalc                                                                   --
4010 -- Main Tax Calculation for Periodic Income                                  --
4011 -------------------------------------------------------------------------------
4012 PROCEDURE NorCalc AS
4013 -- Variables
4014 --
4015    l_Np       BALANCE DEFAULT 0;
4016 
4017 BEGIN
4018 
4019    hr_utility.set_location('py_za_tx_01032011.NorCalc',1);
4020 -- Identify the calculation
4021 --
4022    trc_CalTyp := 'NorCalc';
4023 
4024 -- Update Global Balance Values with correct TAXABLE values
4025 --
4026    --Fix for bug#10372926
4027    --bal_TOT_TXB_TA_PTD  := bal_TOT_TXB_TA_PTD * glb_ZA_TRV_ALL_TX_PRC / 100;
4028 
4029    --py_za_tx_utl_01032011.TrvAll;
4030 
4031    hr_utility.set_location('py_za_tx_01032011.NorCalc',2);
4032 
4033    bal_TOT_TXB_PO_PTD  := bal_TOT_TXB_PO_PTD * glb_ZA_PBL_TX_PRC / 100;
4034    bal_TOT_TXB_PO_YTD  := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
4035 
4036 -- PTD Taxable Income
4037 --
4038    trc_TxbIncPtd :=
4039       ( bal_TOT_TXB_NI_PTD
4040       + bal_TOT_TXB_FB_PTD
4041       + bal_TOT_TXB_TA_PTD
4042       + bal_BP_PTD
4043       );
4044 -- Period Factor
4045    py_za_tx_utl_01032011.PeriodFactor;
4046 
4047 -- Possible Periods Factor
4048    py_za_tx_utl_01032011.PossiblePeriodsFactor;
4049 
4050 -- Rebates
4051    py_za_tx_utl_01032011.SetRebates;
4052 
4053 -- Abatements
4054    py_za_tx_utl_01032011.Abatements;
4055 
4056    hr_utility.set_location('py_za_tx_01032011.NorCalc',3);
4057 
4058 -- Deemed Remuneration
4059 --
4060    -- Run Deemed Remuneration
4061    trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
4062    -- Skip the calculation if there is No Income
4063    IF trc_DmdRmnRun <> 0 THEN
4064       hr_utility.set_location('py_za_tx_01032011.NorCalc',4);
4065       -- Taxable Deemed Remuneration
4066       trc_TxbDmdRmn := trc_DmdRmnRun;
4067       -- Threshold Check
4068       IF trc_TxbDmdRmn >= trc_Threshold THEN
4069          hr_utility.set_location('py_za_tx_01032011.NorCalc',5);
4070          -- Tax Liability
4071          trc_TotLibDR := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbDmdRmn);
4072          trc_LibFyDR  := trc_TotLibDR - 0;
4073          trc_TotLibDR := greatest(trc_TotLibDR,0);
4074          -- DeAnnualise
4075          trc_LibFpDR := py_za_tx_utl_01032011.DeAnnualise
4076                            ( p_Liab    => trc_LibFyDR
4077                            , p_TxOnYtd => bal_TX_ON_DR_YTD
4078                            , p_TxOnPtd => bal_TX_ON_DR_PTD
4079                            );
4080       ELSE
4081          hr_utility.set_location('py_za_tx_01032011.NorCalc',6);
4082          -- Set Cascade Figures and Refund
4083          trc_TotLibDR   := 0;
4084          trc_LibFpDR    := -1 * bal_TX_ON_DR_YTD;
4085          trc_LibFpDROvr := TRUE;
4086       END IF;
4087    ELSE
4088       hr_utility.set_location('py_za_tx_01032011.NorCalc',7);
4089       -- Set Cascade Figures and Refund
4090       trc_TxbDmdRmn  := 0;
4091       trc_TotLibDR   := 0;
4092       trc_LibFpDR    := -1 * bal_TX_ON_DR_YTD;
4093       trc_LibFpDROvr := TRUE;
4094    END IF;
4095 
4096 -- Normal Income
4097 --
4098    -- Ytd Normal Income
4099    trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
4100    -- Ptd Normal Income
4101    trc_NorIncPtd := bal_TOT_TXB_NI_PTD;
4102    -- Skip the calculation if there is No Income
4103    -- If Tax Method is Cumulative check for YTD Income
4104    -- If Tax Method is Non Cumulative check for PTD Income
4105    IF (dbi_TX_MTD = 'C' AND trc_NorIncYtd <> 0) OR (dbi_TX_MTD = 'N' AND trc_NorIncPtd > 0) THEN
4106       hr_utility.set_location('py_za_tx_01032011.NorCalc',8);
4107 
4108       -- Annualise Normal Income
4109       trc_NorErn := py_za_tx_utl_01032011.Annualise
4110          (p_YtdInc => trc_NorIncYtd
4111          ,p_PtdInc => trc_NorIncPtd
4112          );
4113       --TYS2010
4114       -- Taxable Normal Income
4115       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4116       trc_TxbNorIncWoDon := trc_NorErn - trc_PerTotAbm;
4117       trc_TxbNorInc :=trc_TxbNorIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbNorIncWoDon,trc_PerDonAmt);
4118       -- Threshold Check
4119       IF trc_TxbNorInc >= trc_Threshold THEN
4120          hr_utility.set_location('py_za_tx_01032011.NorCalc',9);
4121          -- Tax Liability
4122          trc_TotLibNI := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbNorInc);
4123          trc_LibFyNI  := trc_TotLibNI - least(trc_TotLibNI,trc_TotLibDR);
4124          trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibDR);
4125          -- DeAnnualise
4126          trc_LibFpNI := py_za_tx_utl_01032011.DeAnnualise
4127                            ( p_Liab    => trc_LibFyNI
4128                            , p_TxOnYtd => bal_TX_ON_NI_YTD
4129                            , p_TxOnPtd => bal_TX_ON_NI_PTD
4130                            );
4131       ELSE
4132          hr_utility.set_location('py_za_tx_01032011.NorCalc',10);
4133          -- Set Cascade Figures and Refund
4134          trc_TotLibNI   := trc_TotLibDR;
4135          IF (dbi_TX_MTD = 'C') THEN
4136            trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
4137          ELSE -- in case of Non Cumilative Tax Method
4138            trc_LibFpNI    := -1 * bal_TX_ON_NI_PTD;
4139          END IF;
4140          trc_LibFpNIOvr := TRUE;
4141       END IF;
4142    ELSE
4143       hr_utility.set_location('py_za_tx_01032011.NorCalc',11);
4144       -- Set Cascade Figures and Refund
4145       trc_NorErn     := 0;
4146       trc_TxbNorInc  := 0;
4147       trc_TotLibNI   := trc_TotLibDR;
4148       IF (dbi_TX_MTD = 'C') THEN
4149         trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
4150       ELSE -- in case of Non Cumilative Tax Method
4151         trc_LibFpNI    := -1 * bal_TX_ON_NI_PTD;
4152       END IF;
4153       trc_LibFpNIOvr := TRUE;
4154    END IF;
4155 
4156 -- Fringe Benefits
4157 --
4158    -- Ytd Fringe Benefits
4159    trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
4160    -- Ptd Fringe Benefits
4161    trc_FrnBenPtd := bal_TOT_TXB_FB_PTD;
4162    -- Skip the calculation if there is No Income
4163    -- If Tax Method is Cumulative check for YTD Income
4164    -- If Tax Method is Non Cumulative check for PTD Income
4165    IF (dbi_TX_MTD = 'C' AND trc_FrnBenYtd <> 0) OR (dbi_TX_MTD = 'N' AND trc_FrnBenPtd > 0) THEN
4166       hr_utility.set_location('py_za_tx_01032011.NorCalc',12);
4167 
4168       -- Annualise Fringe Benefits
4169       trc_FrnBenErn := py_za_tx_utl_01032011.Annualise
4170                           ( p_YtdInc => trc_FrnBenYtd
4171                           , p_PtdInc => trc_FrnBenPtd
4172                           ) + trc_NorErn;
4173       --TYS2010
4174       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4175       -- Taxable Fringe Income
4176       trc_TxbFrnIncWoDon := trc_FrnBenErn - trc_PerTotAbm;
4177       trc_TxbFrnInc :=trc_TxbFrnIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbFrnIncWoDon,trc_PerDonAmt);
4178 
4179       -- Threshold Check
4180       IF trc_TxbFrnInc >= trc_Threshold THEN
4181          hr_utility.set_location('py_za_tx_01032011.NorCalc',13);
4182          -- Tax Liability
4183          trc_TotLibFB := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbFrnInc);
4184          trc_LibFyFB  := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
4185          trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
4186          -- DeAnnualise
4187          trc_LibFpFB := py_za_tx_utl_01032011.DeAnnualise
4188                            ( trc_LibFyFB
4189                            , bal_TX_ON_FB_YTD
4190                            , bal_TX_ON_FB_PTD
4191                            );
4192       ELSE
4193          hr_utility.set_location('py_za_tx_01032011.NorCalc',14);
4194          -- Set Cascade Figures and Refund
4195          trc_TotLibFB   := trc_TotLibNI;
4196          IF (dbi_TX_MTD = 'C') THEN
4197            trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
4198          ELSE -- in case of Non Cumilative Tax Method
4199            trc_LibFpFB    := -1 * bal_TX_ON_FB_PTD;
4200          END IF;
4201          trc_LibFpFBOvr := TRUE;
4202       END IF;
4203    ELSE
4204       hr_utility.set_location('py_za_tx_01032011.NorCalc',15);
4205       -- Set Cascade Figures and Refund
4206       trc_FrnBenErn  := trc_NorErn;
4207       trc_TxbFrnInc  := trc_TxbNorInc;
4208       trc_TotLibFB   := trc_TotLibNI;
4209       IF (dbi_TX_MTD = 'C') THEN
4210         trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
4211       ELSE -- in case of Non Cumilative Tax Method
4212         trc_LibFpFB    := -1 * bal_TX_ON_FB_PTD;
4213       END IF;
4214       trc_LibFpFBOvr := TRUE;
4215    END IF;
4216 
4217 -- Travel Allowance
4218 --
4219    -- Ytd Travel Allowance
4220    trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
4221    -- Ptd Travel Allowance
4222    trc_TrvAllPtd := bal_TOT_TXB_TA_PTD;
4223    -- Skip the calculation if there is No Income
4224    -- If Tax Method is Cumulative check for YTD Income
4225    -- If Tax Method is Non Cumulative check for PTD Income
4226    IF (dbi_TX_MTD = 'C' AND trc_TrvAllYtd <> 0) OR (dbi_TX_MTD = 'N' AND trc_TrvAllPtd > 0) THEN
4227       hr_utility.set_location('py_za_tx_01032011.NorCalc',16);
4228       -- Ptd Travel Allowance
4229       trc_TrvAllPtd := bal_TOT_TXB_TA_PTD;
4230       -- Annualise Travel Allowance
4231       trc_TrvAllErn := py_za_tx_utl_01032011.Annualise
4232                           ( p_YtdInc => trc_TrvAllYtd
4233                           , p_PtdInc => trc_TrvAllPtd
4234                           ) + trc_FrnBenErn;
4235       --TYS2010
4236       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4237       -- Taxable Travel Income
4238       trc_TxbTrvIncWoDon := trc_TrvAllErn - trc_PerTotAbm;
4239       trc_TxbTrvInc :=trc_TxbTrvIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbTrvIncWoDon,trc_PerDonAmt);
4240 
4241       -- Threshold Check
4242       IF trc_TxbTrvInc >= trc_Threshold THEN
4243          hr_utility.set_location('py_za_tx_01032011.NorCalc',17);
4244          -- Tax Liability
4245          trc_TotLibTA := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbTrvInc);
4246          trc_LibFyTA  := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
4247          trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
4248          -- DeAnnualise
4249          trc_LibFpTA := py_za_tx_utl_01032011.DeAnnualise
4250                            ( trc_LibFyTA
4251                            , bal_TX_ON_TA_YTD
4252                            , bal_TX_ON_TA_PTD
4253                            );
4254       ELSE
4255          hr_utility.set_location('py_za_tx_01032011.NorCalc',18);
4256          -- Set Cascade Figures and Refund
4257          trc_TotLibTA   := trc_TotLibFB;
4258          IF (dbi_TX_MTD = 'C') THEN
4259            trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
4260          ELSE -- in case of Non Cumilative Tax Method
4261            trc_LibFpTA    := -1 * bal_TX_ON_TA_PTD;
4262          END IF;
4263          trc_LibFpTAOvr := TRUE;
4264       END IF;
4265    ELSE
4266       hr_utility.set_location('py_za_tx_01032011.NorCalc',19);
4267       -- Set Cascade Figures and Refund
4268       trc_TrvAllErn  := trc_FrnBenErn;
4269       trc_TxbTrvInc  := trc_TxbFrnInc;
4270       trc_TotLibTA   := trc_TotLibFB;
4271       IF (dbi_TX_MTD = 'C') THEN
4272         trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
4273       ELSE -- in case of Non Cumilative Tax Method
4274         trc_LibFpTA    := -1 * bal_TX_ON_TA_PTD;
4275       END IF;
4276       trc_LibFpTAOvr := TRUE;
4277    END IF;
4278 
4279 -- Bonus Provision
4280 --
4281    -- Ytd Bonus Prvision
4282    trc_BonProYtd := bal_BP_YTD;
4283    -- Ptd Bonus Prvision
4284    trc_BonProYtd := bal_BP_YTD;
4285    -- Skip the calculation if there is No Income
4286    -- If Tax Method is Cumulative check for YTD Income
4287    -- If Tax Method is Non Cumulative check for PTD Income
4288    IF (dbi_TX_MTD = 'C' AND trc_BonProYtd <> 0) OR (dbi_TX_MTD = 'N' AND trc_BonProPtd > 0) THEN
4289       hr_utility.set_location('py_za_tx_01032011.NorCalc',20);
4290       -- Annualise Bonus Provision
4291       trc_BonProErn := py_za_tx_utl_01032011.Annualise
4292                           ( p_YtdInc => trc_BonProYtd
4293                           , p_PtdInc => trc_BonProPtd
4294                           ) + trc_TrvAllErn;
4295       --TYS2010
4296       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4297       -- Taxable Bonus Provision Income
4298       trc_TxbBonProIncWoDon := trc_BonProErn - trc_PerTotAbm;
4299       trc_TxbBonProInc :=trc_TxbBonProIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbBonProIncWoDon,trc_PerDonAmt);
4300 
4301       -- Threshold Check
4302       IF trc_TxbBonProInc >= trc_Threshold THEN
4303          hr_utility.set_location('py_za_tx_01032011.NorCalc',21);
4304          -- Tax Liability
4305          trc_TotLibBP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbBonProInc);
4306          trc_LibFyBP  := trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA);
4307          trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
4308          -- DeAnnualise
4309          trc_LibFpBP := py_za_tx_utl_01032011.DeAnnualise
4310                            ( trc_LibFyBP
4311                            , bal_TX_ON_BP_YTD
4312                            , bal_TX_ON_BP_PTD
4313                            );
4314       ELSE
4315          hr_utility.set_location('py_za_tx_01032011.NorCalc',22);
4316          -- Set Cascade Figures and Refund
4317          trc_TotLibBP   := trc_TotLibTA;
4318          IF (dbi_TX_MTD = 'C') THEN
4319            trc_LibFpBP      := -1 * bal_TX_ON_BP_YTD;
4320          ELSE -- in case of Non Cumilative Tax Method
4321            trc_LibFpBP      := -1 * bal_TX_ON_BP_PTD;
4322          END IF;
4323          trc_LibFpBPOvr := TRUE;
4324       END IF;
4325    ELSE
4326       hr_utility.set_location('py_za_tx_01032011.NorCalc',23);
4327       -- Set Cascade Figures and Refund
4328       trc_BonProErn    := trc_TrvAllErn;
4329       trc_TxbBonProInc := trc_TxbTrvInc;
4330       trc_TotLibBP     := trc_TotLibTA;
4331       IF (dbi_TX_MTD = 'C') THEN
4332         trc_LibFpBP      := -1 * bal_TX_ON_BP_YTD;
4333       ELSE -- in case of Non Cumilative Tax Method
4334         trc_LibFpBP      := -1 * bal_TX_ON_BP_PTD;
4335       END IF;
4336       trc_LibFpBPOvr   := TRUE;
4337    END IF;
4338 
4339 -- Annual Bonus
4340 --
4341    -- Ytd Annual Bonus
4342    trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
4343    -- Skip the calculation if there is No Income
4344    IF trc_AnnBonYtd <> 0 THEN
4345       hr_utility.set_location('py_za_tx_01032011.NorCalc',24);
4346       -- Annual Bonus Earnings
4347       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
4348       --TYS2010
4349       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4350       -- Taxable Annual Bonus Income
4351       trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
4352       trc_TxbAnnBonInc :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
4353 
4354       -- Threshold Check
4355       IF trc_TxbAnnBonInc >= trc_Threshold THEN
4356          hr_utility.set_location('py_za_tx_01032011.NorCalc',25);
4357          -- Tax Liability
4358          trc_TotLibAB := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnBonInc);
4359          trc_LibFyAB  := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
4360          trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
4361          -- Check Bonus Provision
4362          IF trc_BonProYtd <> 0 THEN
4363             hr_utility.set_location('py_za_tx_01032011.NorCalc',26);
4364             -- Check Bonus Provision Frequency
4365             IF dbi_BP_TX_RCV = 'A' THEN
4366                hr_utility.set_location('py_za_tx_01032011.NorCalc',27);
4367                trc_LibFpAB := 0;
4368             ELSE
4369                hr_utility.set_location('py_za_tx_01032011.NorCalc',28);
4370                trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD
4371                                             + trc_LibFpBP
4372                                             + bal_TX_ON_AB_YTD);
4373             END IF;
4374          ELSE
4375             hr_utility.set_location('py_za_tx_01032011.NorCalc',29);
4376             trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
4377          END IF;
4378       ELSE
4379          hr_utility.set_location('py_za_tx_01032011.NorCalc',30);
4380          -- Set Cascade Figures and Refund
4381          trc_TotLibAB   := trc_TotLibTA;
4382          IF (dbi_TX_MTD = 'C') THEN
4383            trc_LibFpAB      := -1 * bal_TX_ON_AB_YTD;
4384          ELSE -- in case of Non Cumilative Tax Method
4385            trc_LibFpAB      := -1 * bal_TX_ON_AB_PTD;
4386          END IF;
4387          trc_LibFpABOvr := TRUE;
4388       END IF;
4389    ELSE
4390       hr_utility.set_location('py_za_tx_01032011.NorCalc',31);
4391       -- Set Cascade Figures and Refund
4392       trc_AnnBonErn    := trc_BonProErn;
4393       trc_TxbAnnBonInc := trc_TxbBonProInc;
4394       trc_TotLibAB     := trc_TotLibBP;
4395       IF (dbi_TX_MTD = 'C') THEN
4396         trc_LibFpAB      := -1 * bal_TX_ON_AB_YTD;
4397       ELSE -- in case of Non Cumilative Tax Method
4398         trc_LibFpAB      := -1 * bal_TX_ON_AB_PTD;
4399       END IF;
4400       trc_LibFpABOvr   := TRUE;
4401    END IF;
4402 
4403 -- Annual Payments
4404 --
4405    -- Ytd Annual Payments
4406    trc_AnnPymYtd := bal_TOT_TXB_AP_YTD ;
4407    -- Skip the calculation if there is No Income
4408    IF trc_AnnPymYtd <> 0 THEN
4409       hr_utility.set_location('py_za_tx_01032011.NorCalc',32);
4410       -- Annual Payments Earnings
4411       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
4412       --TYS2010
4413       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4414       -- Taxable Annual Payments Income
4415       trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
4416       trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
4417 
4418       -- Threshold Check
4419       IF trc_TxbAnnPymInc >= trc_Threshold THEN
4420          hr_utility.set_location('py_za_tx_01032011.NorCalc',33);
4421          -- Tax Liability
4422          trc_TotLibAP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnPymInc);
4423          trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
4424          trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
4425          hr_utility.set_location('py_za_tx_01032011.NorCalc',34);
4426          trc_LibFpAP  := trc_LibFyAP - bal_TX_ON_AP_YTD;
4427       ELSE
4428          hr_utility.set_location('py_za_tx_01032011.NorCalc',35);
4429          -- Set Cascade Figures and Refund
4430          trc_TotLibAP   := trc_TotLibAB;
4431          IF (dbi_TX_MTD = 'C') THEN
4432            trc_LibFpAP      := -1 * bal_TX_ON_AP_YTD;
4433          ELSE -- in case of Non Cumilative Tax Method
4434            trc_LibFpAP      := -1 * bal_TX_ON_AP_PTD;
4435          END IF;
4436          trc_LibFpAPOvr := TRUE;
4437       END IF;
4438    ELSE
4439       hr_utility.set_location('py_za_tx_01032011.NorCalc',36);
4440       -- Set Cascade Figures and Refund
4441       trc_AnnPymErn    := trc_AnnBonErn;
4442       trc_TxbAnnPymInc := trc_TxbAnnBonInc;
4443       trc_TotLibAP     := trc_TotLibAB;
4444       IF (dbi_TX_MTD = 'C') THEN
4445         trc_LibFpAP      := -1 * bal_TX_ON_AP_YTD;
4446       ELSE -- in case of Non Cumilative Tax Method
4447         trc_LibFpAP      := -1 * bal_TX_ON_AP_PTD;
4448       END IF;
4449       trc_LibFpAPOvr   := TRUE;
4450    END IF;
4451 
4452 -- Public Office Allowance
4453 --
4454    -- Ytd Public Office Allowance
4455    trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
4456    -- Ptd Public Office Allowance
4457    trc_PblOffPtd := bal_TOT_TXB_PO_PTD;
4458    -- Skip the calculation if there is No Income
4459    -- If Tax Method is Cumulative check for YTD Income
4460    -- If Tax Method is Non Cumulative check for PTD Income
4461    IF (dbi_TX_MTD = 'C' AND trc_PblOffYtd <> 0) OR (dbi_TX_MTD = 'N' AND trc_PblOffPtd > 0) THEN
4462       hr_utility.set_location('py_za_tx_01032011.NorCalc',37);
4463       -- Ptd Public Office Allowance
4464       trc_PblOffPtd := bal_TOT_TXB_PO_PTD;
4465       -- Annualise Public Office Allowance
4466       trc_PblOffErn := py_za_tx_utl_01032011.Annualise
4467                           ( p_YtdInc => trc_PblOffYtd
4468                           , p_PtdInc => trc_PblOffPtd
4469                           ) + trc_AnnPymErn;
4470       --TYS2010
4471       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4472       -- Taxable Public Office Allowance
4473       trc_TxbPblOffIncWoDon := trc_PblOffErn - trc_AnnTotAbm;
4474       trc_TxbPblOffInc :=trc_TxbPblOffIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbPblOffIncWoDon,trc_AnnDonAmt);
4475 
4476       -- Threshold Check
4477       IF trc_TxbPblOffInc >= trc_Threshold THEN
4478          hr_utility.set_location('py_za_tx_01032011.NorCalc',38);
4479          -- Tax Liability
4480          trc_TotLibPO := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbPblOffInc);
4481          trc_LibFyPO  := trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP);
4482          trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
4483          -- DeAnnualise
4484          trc_LibFpPO := py_za_tx_utl_01032011.DeAnnualise
4485                            ( trc_LibFyPO
4486                            , bal_TX_ON_PO_YTD
4487                            , bal_TX_ON_PO_PTD
4488                            );
4489       ELSE
4490          hr_utility.set_location('py_za_tx_01032011.NorCalc',39);
4491          -- Set Cascade Figures and Refund
4492          trc_TotLibPO   := trc_TotLibAP;
4493          IF (dbi_TX_MTD = 'C') THEN
4494            trc_LibFpPO       := -1 * bal_TX_ON_PO_YTD;
4495          ELSE -- in case of Non Cumilative Tax Method
4496            trc_LibFpPO       := -1 * bal_TX_ON_PO_PTD;
4497          END IF;
4498          trc_LibFpPOOvr := TRUE;
4499       END IF;
4500    ELSE
4501       hr_utility.set_location('py_za_tx_01032011.NorCalc',40);
4502       -- Set Cascade Figures and Refund
4503       trc_PblOffErn     := trc_AnnPymErn;
4504       trc_TxbPblOffInc  := trc_TxbAnnPymInc;
4505       trc_TotLibPO      := trc_TotLibAP;
4506       IF (dbi_TX_MTD = 'C') THEN
4507         trc_LibFpPO       := -1 * bal_TX_ON_PO_YTD;
4508       ELSE -- in case of Non Cumilative Tax Method
4509         trc_LibFpPO       := -1 * bal_TX_ON_PO_PTD;
4510       END IF;
4511       trc_LibFpPOOvr    := TRUE;
4512    END IF;
4513 
4514 
4515 -- Net to Gross Annual Payments.
4516 --
4517    -- Ytd Net to Gross Annual Payments
4518    trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
4519    -- Skip the calculation if there is No Income
4520    IF trc_AnnPymNtgYtd <> 0 THEN
4521       hr_utility.set_location('py_za_tx_01032011.NorCalc',41);
4522       -- Annual Payments Net to Gross Earnings
4523       trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_PblOffErn;
4524 
4525       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4526       -- Taxable Annual Payments Income
4527       trc_TxbAnnPymNtgIncWoDon := trc_AnnPymNtgErn - trc_AnnTotAbm;
4528       trc_TxbAnnPymNtgInc :=trc_TxbAnnPymNtgIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnPymNtgIncWoDon,trc_AnnDonAmt);
4529 
4530       -- Threshold Check
4531       IF trc_TxbAnnPymNtgInc >= trc_Threshold THEN
4532          hr_utility.set_location('py_za_tx_01032011.NorCalc',42);
4533          -- Tax Liability
4534          trc_TotLibNtgAP := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnPymNtgInc);
4535          trc_LibFyNtgAP  := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibPO);
4536          trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibPO);
4537 
4538          hr_utility.set_location('py_za_tx_01032011.NorCalc',43);
4539          trc_LibFpNtgAP  := trc_LibFyNtgAP - bal_TX_ON_AP_NTG_YTD;
4540 
4541       ELSE
4542          hr_utility.set_location('py_za_tx_01032011.NorCalc',44);
4543          -- Set Cascade Figures and Refund
4544          trc_TotLibNtgAP   := trc_TotLibPO;
4545          trc_LibFpNtgAP    := -1 * bal_TX_ON_AP_NTG_YTD;
4546          trc_LibFpNtgAPOvr := TRUE;
4547       END IF;
4548    ELSE
4549       hr_utility.set_location('py_za_tx_01032011.NorCalc',45);
4550       -- Set Cascade Figures and Refund
4551       trc_AnnPymNtgErn     := trc_PblOffErn;
4552       trc_TxbAnnPymNtgInc  := trc_TxbPblOffInc;
4553       trc_TotLibNtgAP      := trc_TotLibPO;
4554       trc_LibFpNtgAP       := -1 * bal_TX_ON_AP_NTG_YTD;
4555       trc_LibFpNtgAPOvr    := TRUE;
4556    END IF;
4557 
4558    -- Ytd Net to Gross EE Debt due to Net to Gross Annual Payments
4559    trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
4560    -- Skip the calculation if there is No Income
4561    IF trc_AnnEEDbtNtgYtd <> 0 THEN
4562       hr_utility.set_location('py_za_tx_01032011.NorCalc',46);
4563       -- Annual EE Debt Net to Gross Earnings
4564       trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
4565 
4566       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4567       trc_TxbAnnEEDbtNtgIncWoDon := trc_AnnEEDbtNtgErn - trc_AnnTotNTGAbm;
4568       trc_TxbAnnEEDbtNtgInc :=trc_TxbAnnEEDbtNtgIncWoDon - py_za_tx_utl_01032011.AllowableDeduction(trc_TxbAnnEEDbtNtgIncWoDon,trc_AnnDonAmt);
4569 
4570       -- Threshold Check
4571       IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
4572          hr_utility.set_location('py_za_tx_01032011.NorCalc',47);
4573          -- Tax Liability
4574          trc_TotLibNtgEEDbt := py_za_tx_utl_01032011.TaxLiability(p_Amt => trc_TxbAnnEEDbtNtgInc);
4575          trc_LibFyNtgEEDbt  := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
4576          trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
4577 
4578          hr_utility.set_location('py_za_tx_01032011.NorCalc',48);
4579          trc_LibFpNtgEEDbt  := trc_LibFyNtgEEDbt - bal_TX_ON_EE_DBT_NTG_YTD;
4580       ELSE
4581          hr_utility.set_location('py_za_tx_01032011.NorCalc',49);
4582          -- Set Cascade Figures and Refund
4583          trc_TotLibNtgEEDbt   := trc_TotLibNtgAP;
4584          trc_LibFpNtgEEDbt    := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
4585          trc_LibFpNtgEEDbtOvr := TRUE;
4586       END IF;
4587    ELSE
4588       hr_utility.set_location('py_za_tx_01032011.NorCalc',50);
4589       -- Set Cascade Figures and Refund
4590       trc_AnnEEDbtNtgErn     := trc_AnnPymNtgErn;
4591       trc_TxbAnnEEDbtNtgInc  := trc_TxbAnnPymNtgInc;
4592       trc_TotLibNtgEEDbt      := trc_TotLibNtgAP;
4593       trc_LibFpNtgEEDbt       := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
4594       trc_LibFpNtgEEDbtOvr    := TRUE;
4595    END IF;
4596 
4597 -- Net Pay Validation
4598 --
4599    py_za_tx_utl_01032011.ValidateTaxOns;
4600 
4601    hr_utility.set_location('py_za_tx_01032011.NorCalc',51);
4602 
4603    -- Deemed Remuneration
4604    WrtHrTrc('trc_TxbDmdRmn:     '||to_char(trc_TxbDmdRmn));
4605    WrtHrTrc('trc_TotLibDR:      '||to_char(trc_TotLibDR ));
4606    WrtHrTrc('trc_LibFyDR:       '||to_char(trc_LibFyDR  ));
4607    WrtHrTrc('trc_LibFpDR:       '||to_char(trc_LibFpDR  ));
4608    -- Base Income
4609    WrtHrTrc('trc_BseErn:        '||to_char(trc_BseErn   ));
4610    WrtHrTrc('trc_TxbBseInc:     '||to_char(trc_TxbBseInc));
4611    WrtHrTrc('trc_TotLibBse:     '||to_char(trc_TotLibBse));
4612    -- Normal Income
4613    WrtHrTrc('trc_NorIncYtd:     '||to_char(trc_NorIncYtd));
4614    WrtHrTrc('trc_NorIncPtd:     '||to_char(trc_NorIncPtd));
4615    WrtHrTrc('trc_NorErn:        '||to_char(trc_NorErn   ));
4616    WrtHrTrc('trc_TxbNorInc:     '||to_char(trc_TxbNorInc));
4617    WrtHrTrc('trc_TxbNorIncWoDon:'||to_char(trc_TxbNorIncWoDon));
4618    WrtHrTrc('trc_TotLibNI:      '||to_char(trc_TotLibNI ));
4619    WrtHrTrc('trc_LibFyNI:       '||to_char(trc_LibFyNI  ));
4620    WrtHrTrc('trc_LibFpNI:       '||to_char(trc_LibFpNI  ));
4621    -- Fringe Benefits
4622    WrtHrTrc('trc_FrnBenYtd:     '||to_char(trc_FrnBenYtd));
4623    WrtHrTrc('trc_FrnBenPtd:     '||to_char(trc_FrnBenPtd));
4624    WrtHrTrc('trc_FrnBenErn:     '||to_char(trc_FrnBenErn));
4625    WrtHrTrc('trc_TxbFrnInc:     '||to_char(trc_TxbFrnInc));
4626    WrtHrTrc('trc_TxbFrnIncWoDon:'||to_char(trc_TxbFrnIncWoDon));
4627    WrtHrTrc('trc_TotLibFB:      '||to_char(trc_TotLibFB ));
4628    WrtHrTrc('trc_LibFyFB:       '||to_char(trc_LibFyFB  ));
4629    WrtHrTrc('trc_LibFpFB:       '||to_char(trc_LibFpFB  ));
4630    -- Travel Allowance
4631    WrtHrTrc('trc_TrvAllYtd:     '||to_char(trc_TrvAllYtd));
4632    WrtHrTrc('trc_TrvAllPtd:     '||to_char(trc_TrvAllPtd));
4633    WrtHrTrc('trc_TrvAllErn:     '||to_char(trc_TrvAllErn));
4634    WrtHrTrc('trc_TxbTrvInc:     '||to_char(trc_TxbTrvInc));
4635    WrtHrTrc('trc_TxbTrvIncWoDon:'||to_char(trc_TxbTrvIncWoDon));
4636    WrtHrTrc('trc_TotLibTA:      '||to_char(trc_TotLibTA ));
4637    WrtHrTrc('trc_LibFyTA:       '||to_char(trc_LibFyTA  ));
4638    WrtHrTrc('trc_LibFpTA:       '||to_char(trc_LibFpTA  ));
4639    -- Bonus Provision
4640    WrtHrTrc('trc_BonProYtd:     '||to_char(trc_BonProYtd));
4641    WrtHrTrc('trc_BonProPtd:     '||to_char(trc_BonProPtd));
4642    WrtHrTrc('trc_BonProErn:     '||to_char(trc_BonProErn));
4643    WrtHrTrc('trc_TxbBonProInc:  '||to_char(trc_TxbBonProInc));
4644    WrtHrTrc('trc_TxbBonProIncWoDon:'||to_char(trc_TxbBonProIncWoDon));
4645    WrtHrTrc('trc_TotLibBP:      '||to_char(trc_TotLibBP ));
4646    WrtHrTrc('trc_LibFyBP:       '||to_char(trc_LibFyBP  ));
4647    WrtHrTrc('trc_LibFpBP:       '||to_char(trc_LibFpBP  ));
4648    -- Annual Bonus
4649    WrtHrTrc('trc_AnnBonYtd:     '||to_char(trc_AnnBonYtd));
4650    WrtHrTrc('trc_AnnBonPtd:     '||to_char(trc_AnnBonPtd));
4651    WrtHrTrc('trc_AnnBonErn:     '||to_char(trc_AnnBonErn));
4652    WrtHrTrc('trc_TxbAnnBonInc:  '||to_char(trc_TxbAnnBonInc));
4653    WrtHrTrc('trc_TxbAnnBonIncWoDon:'||to_char(trc_TxbAnnBonIncWoDon));
4654    WrtHrTrc('trc_TotLibAB:      '||to_char(trc_TotLibAB ));
4655    WrtHrTrc('trc_LibFyAB:       '||to_char(trc_LibFyAB  ));
4656    WrtHrTrc('trc_LibFpAB:       '||to_char(trc_LibFpAB  ));
4657    -- Annual Payments
4658    WrtHrTrc('trc_AnnPymYtd:     '||to_char(trc_AnnPymYtd));
4659    WrtHrTrc('trc_AnnPymPtd:     '||to_char(trc_AnnPymPtd));
4660    WrtHrTrc('trc_AnnPymErn:     '||to_char(trc_AnnPymErn));
4661    WrtHrTrc('trc_TxbAnnPymInc:  '||to_char(trc_TxbAnnPymInc));
4662    WrtHrTrc('trc_TxbAnnPymIncWoDon:'||to_char(trc_TxbAnnPymIncWoDon));
4663    WrtHrTrc('trc_TotLibAP:      '||to_char(trc_TotLibAP ));
4664    WrtHrTrc('trc_LibFyAP:       '||to_char(trc_LibFyAP  ));
4665    WrtHrTrc('trc_LibFpAP:       '||to_char(trc_LibFpAP  ));
4666    -- Pubilc Office Allowance
4667    WrtHrTrc('trc_PblOffYtd:     '||to_char(trc_PblOffYtd));
4668    WrtHrTrc('trc_PblOffPtd:     '||to_char(trc_PblOffPtd));
4669    WrtHrTrc('trc_PblOffErn:     '||to_char(trc_PblOffErn));
4670    WrtHrTrc('trc_TxbPblOffInc:  '||to_char(trc_TxbPblOffInc));
4671    WrtHrTrc('trc_TxbPblOffIncWoDon: '||to_char(trc_TxbPblOffIncWoDon));
4672    WrtHrTrc('trc_TotLibPO:      '||to_char(trc_TotLibPO));
4673    WrtHrTrc('trc_LibFyPO:       '||to_char(trc_LibFyPO  ));
4674    WrtHrTrc('trc_LibFpPO:       '||to_char(trc_LibFpPO  ));
4675 
4676    -- NTG
4677    WrtHrTrc('trc_AnnPymNtgYtd:          '||to_char(trc_AnnPymNtgYtd));
4678    WrtHrTrc('trc_AnnPymNtgPtd:          '||to_char(trc_AnnPymNtgPtd));
4679    WrtHrTrc('trc_AnnPymNtgErn:          '||to_char(trc_AnnPymNtgErn));
4680    WrtHrTrc('trc_TxbAnnPymNtgInc:       '||to_char(trc_TxbAnnPymNtgInc));
4681    WrtHrTrc('trc_TxbAnnPymNtgIncWoDon:  '||to_char(trc_TxbAnnPymNtgIncWoDon));
4682    WrtHrTrc('trc_TotLibNtgAP:           '||to_char(trc_TotLibNtgAP ));
4683    WrtHrTrc('trc_LibFyNtgAP:            '||to_char(trc_LibFyNtgAP  ));
4684    WrtHrTrc('trc_LibFpNtgAP:            '||to_char(trc_LibFpNtgAP  ));
4685 
4686    WrtHrTrc('trc_AnnEEDbtNTGYtd:        '||to_char(trc_AnnEEDbtNTGYtd));
4687    WrtHrTrc('trc_AnnEEDbtNtgPtd:        '||to_char(trc_AnnEEDbtNtgPtd));
4688    WrtHrTrc('trc_AnnEEDbtNtgErn:        '||to_char(trc_AnnEEDbtNtgErn));
4689    WrtHrTrc('trc_TxbAnnEEDbtNtgInc:     '||to_char(trc_TxbAnnEEDbtNtgInc));
4690    WrtHrTrc('trc_TxbAnnEEDbtNtgIncWoDon:'||to_char(trc_TxbAnnEEDbtNtgIncWoDon));
4691    WrtHrTrc('trc_TotLibNtgEEDbt:        '||to_char(trc_TotLibNtgEEDbt ));
4692    WrtHrTrc('trc_LibFyNtgEEDbt:         '||to_char(trc_LibFyNtgEEDbt  ));
4693    WrtHrTrc('trc_LibFpNtgEEDbt:         '||to_char(trc_LibFpNtgEEDbt  ));
4694 
4695 EXCEPTION
4696    WHEN OTHERS THEN
4697       IF xpt_Msg = 'No Error' THEN
4698          xpt_Msg := 'NorCalc: '||TO_CHAR(SQLCODE);
4699       END IF;
4700       RAISE xpt_E;
4701 END NorCalc;
4702 -------------------------------------------------------------------------------
4703 -- ZaTxGlb_01032011                                                          --
4704 -- Tax module supporting function                                            --
4705 -------------------------------------------------------------------------------
4706 FUNCTION ZaTxGlb_01032011(
4707 -- Global Values
4708     p_ZA_ADL_TX_RBT         IN NUMBER
4709    ,p_ZA_ARR_PF_AN_MX_ABT   IN NUMBER
4710    ,p_ZA_ARR_RA_AN_MX_ABT   IN NUMBER
4711    ,p_ZA_TRV_ALL_TX_PRC     IN NUMBER
4712    ,p_ZA_CC_TX_PRC          IN NUMBER
4713    ,p_ZA_PF_AN_MX_ABT       IN NUMBER
4714    ,p_ZA_PF_MX_PRC          IN NUMBER
4715    ,p_ZA_PER_SERV_COMP_PERC IN NUMBER
4716    ,p_ZA_PER_SERV_TRST_PERC IN NUMBER
4717    ,p_ZA_PRI_TX_RBT         IN NUMBER
4718    ,p_ZA_PRI_TX_THRSHLD     IN NUMBER
4719    ,p_ZA_PBL_TX_PRC         IN NUMBER
4720    ,p_ZA_PBL_TX_RTE         IN NUMBER
4721    ,p_ZA_RA_AN_MX_ABT       IN NUMBER
4722    ,p_ZA_RA_MX_PRC          IN NUMBER
4723    ,p_ZA_SC_TX_THRSHLD      IN NUMBER
4724    ,p_ZA_SIT_LIM            IN NUMBER
4725    ,p_ZA_TMP_TX_RTE         IN NUMBER
4726    ,p_ZA_WRK_DYS_PR_YR      IN NUMBER
4727    ,p_ZA_ALLOW_DONATION_PERC IN NUMBER  /*TYS2010*/
4728    --Bug 8844712
4729    ,p_ZA_LATE_PAYMENT_PERC  IN NUMBER
4730    ,p_ZA_TRI_TX_RBT         IN NUMBER
4731    ,p_ZA_TRI_TX_THRSHLD     IN NUMBER
4732    ) RETURN NUMBER
4733 AS
4734    l_Dum NUMBER := 1;
4735    --id VARCHAR2(30);
4736 
4737 BEGIN
4738 
4739    --id := dbms_debug.initialize('JLTX');
4740    --dbms_debug.debug_on;
4741 
4742 -- Initialise Package Globals
4743 -- Global Values
4744    glb_ZA_ADL_TX_RBT         := p_ZA_ADL_TX_RBT;
4745    glb_ZA_ARR_PF_AN_MX_ABT   := p_ZA_ARR_PF_AN_MX_ABT;
4746    glb_ZA_ARR_RA_AN_MX_ABT   := p_ZA_ARR_RA_AN_MX_ABT;
4747    glb_ZA_TRV_ALL_TX_PRC     := p_ZA_TRV_ALL_TX_PRC;
4748    glb_ZA_CC_TX_PRC          := p_ZA_CC_TX_PRC;
4749    glb_ZA_PF_AN_MX_ABT       := p_ZA_PF_AN_MX_ABT;
4750    glb_ZA_PF_MX_PRC          := p_ZA_PF_MX_PRC;
4751    glb_ZA_PER_SERV_COMP_PERC := p_ZA_PER_SERV_COMP_PERC;
4752    glb_ZA_PER_SERV_TRST_PERC := p_ZA_PER_SERV_TRST_PERC;
4753    glb_ZA_PRI_TX_RBT         := p_ZA_PRI_TX_RBT;
4754    glb_ZA_PRI_TX_THRSHLD     := p_ZA_PRI_TX_THRSHLD;
4755    glb_ZA_PBL_TX_PRC         := p_ZA_PBL_TX_PRC;
4756    glb_ZA_PBL_TX_RTE         := p_ZA_PBL_TX_RTE;
4757    glb_ZA_RA_AN_MX_ABT       := p_ZA_RA_AN_MX_ABT;
4758    glb_ZA_RA_MX_PRC          := p_ZA_RA_MX_PRC;
4759    glb_ZA_SC_TX_THRSHLD      := p_ZA_SC_TX_THRSHLD;
4760    glb_ZA_SIT_LIM            := p_ZA_SIT_LIM;
4761    glb_ZA_TMP_TX_RTE         := p_ZA_TMP_TX_RTE;
4762    glb_ZA_WRK_DYS_PR_YR      := p_ZA_WRK_DYS_PR_YR;
4763    glb_ZA_ALLOW_DONATION_PERC:= p_ZA_ALLOW_DONATION_PERC;
4764    --Bug 8844712
4765    glb_ZA_LATE_PAYMENT_PERC  := p_ZA_LATE_PAYMENT_PERC;
4766    glb_ZA_TRI_TX_RBT         := p_ZA_TRI_TX_RBT;
4767    glb_ZA_TRI_TX_THRSHLD     := p_ZA_TRI_TX_THRSHLD;
4768 
4769    RETURN l_Dum;
4770 EXCEPTION
4771    WHEN OTHERS THEN
4772       hr_utility.set_message(801, 'ZaTxGlb_01032011: '||TO_CHAR(SQLCODE));
4773       hr_utility.raise_error;
4774 END ZaTxGlb_01032011;
4775 -------------------------------------------------------------------------------
4776 -- ZaTxDbi_01032011                                                          --
4777 -- Tax module supporting function                                            --
4778 -------------------------------------------------------------------------------
4779 FUNCTION ZaTxDbi_01032011(
4780 -- Database Items
4781    p_PAY_PROC_PRD_DTE_PD   IN DATE
4782   ,p_PER_AGE               IN NUMBER
4783   ,p_PER_DTE_OF_BRTH       IN DATE
4784   ,p_SES_DTE               IN DATE
4785   ,p_ZA_ACT_END_DTE        IN DATE
4786   ,p_ZA_ACT_STRT_DTE       IN DATE
4787   ,p_ZA_ASG_TX_RTR_PRD     IN VARCHAR2
4788   ,p_ZA_ASG_TAX_RTR_RSLTS  IN VARCHAR2
4789 /* --Bug 9397464
4790   ,p_ZA_ASG_TX_YR          IN NUMBER
4791   ,p_ZA_ASG_TX_YR_END      IN DATE
4792   ,p_ZA_ASG_TX_YR_STRT     IN DATE */
4793   ,p_ZA_CUR_PRD_END_DTE    IN DATE
4794   ,p_ZA_CUR_PRD_STRT_DTE   IN DATE
4795   ,p_ZA_DYS_IN_YR          IN NUMBER
4796   ,p_ZA_PAY_PRDS_LFT       IN NUMBER
4797   ,p_ZA_PAY_PRDS_PER_YR    IN NUMBER
4798   ,p_ZA_TX_YR_END          IN DATE
4799   ,p_ZA_TX_YR_STRT         IN DATE
4800   ,p_BP_TX_RCV             IN VARCHAR2
4801   ,p_SEA_WRK_DYS_WRK       IN NUMBER
4802   ,p_TX_DIR_NUM            IN VARCHAR2
4803   ,p_TX_DIR_VAL            IN NUMBER
4804   ,p_TX_STA                IN VARCHAR2
4805   ,p_ZA_LS_DIR_NUM         IN VARCHAR2
4806   ,p_ZA_LS_DIR_VAL         IN NUMBER
4807   ,p_ZA_RET_LS_DIR_NUM     IN VARCHAR2
4808   ,p_ZA_RET_LS_DIR_VAL     IN NUMBER
4809   ,p_TAX_METHOD            IN VARCHAR2
4810    ) RETURN NUMBER
4811 AS
4812    l_Dum NUMBER := 1;
4813 
4814 BEGIN
4815 
4816 -- Initialise Package Globals
4817 -- Database Items
4818    dbi_PAY_PROC_PRD_DTE_PD  := p_PAY_PROC_PRD_DTE_PD;
4819    dbi_PER_AGE              := p_PER_AGE;
4820    dbi_PER_DTE_OF_BRTH      := p_PER_DTE_OF_BRTH;
4821    dbi_SES_DTE              := p_SES_DTE;
4822    dbi_ZA_ACT_END_DTE       := p_ZA_ACT_END_DTE;
4823    dbi_ZA_ACT_STRT_DTE      := p_ZA_ACT_STRT_DTE;
4824    dbi_ZA_ASG_TX_RTR_PRD    := p_ZA_ASG_TX_RTR_PRD;
4825    dbi_ZA_ASG_TAX_RTR_RSLTS := p_ZA_ASG_TAX_RTR_RSLTS;
4826    /*
4827    dbi_ZA_ASG_TX_YR         := p_ZA_ASG_TX_YR;
4828    dbi_ZA_ASG_TX_YR_END     := p_ZA_ASG_TX_YR_END;
4829    dbi_ZA_ASG_TX_YR_STRT    := p_ZA_ASG_TX_YR_STRT; */
4830    dbi_ZA_CUR_PRD_END_DTE   := p_ZA_CUR_PRD_END_DTE;
4831    dbi_ZA_CUR_PRD_STRT_DTE  := p_ZA_CUR_PRD_STRT_DTE;
4832    dbi_ZA_DYS_IN_YR         := p_ZA_DYS_IN_YR;
4833    dbi_ZA_PAY_PRDS_LFT      := p_ZA_PAY_PRDS_LFT;
4834    dbi_ZA_PAY_PRDS_PER_YR   := p_ZA_PAY_PRDS_PER_YR;
4835    dbi_ZA_TX_YR_END         := p_ZA_TX_YR_END;
4836    dbi_ZA_TX_YR_STRT        := p_ZA_TX_YR_STRT;
4837    dbi_BP_TX_RCV            := p_BP_TX_RCV;
4838    dbi_SEA_WRK_DYS_WRK      := p_SEA_WRK_DYS_WRK;
4839    dbi_TX_DIR_NUM           := p_TX_DIR_NUM;
4840    dbi_TX_DIR_VAL           := p_TX_DIR_VAL;
4841    dbi_TX_STA               := p_TX_STA;
4842    dbi_ZA_LS_DIR_NUM        := p_ZA_LS_DIR_NUM;
4843    dbi_ZA_LS_DIR_VAL        := p_ZA_LS_DIR_VAL;
4844    dbi_ZA_RET_LS_DIR_NUM    := p_ZA_RET_LS_DIR_NUM;
4845    dbi_ZA_RET_LS_DIR_VAL    := p_ZA_RET_LS_DIR_VAL;
4846    dbi_TX_MTD               := p_TAX_METHOD;
4847 
4848    RETURN l_Dum;
4849 EXCEPTION
4850    WHEN OTHERS THEN
4851       hr_utility.set_message(801, 'ZaTxDbi_01032011: '||TO_CHAR(SQLCODE));
4852       hr_utility.raise_error;
4853 END ZaTxDbi_01032011;
4854 -------------------------------------------------------------------------------
4855 -- ZaTxBal1_01032011                                                         --
4856 -- Tax module supporting function                                            --
4857 -------------------------------------------------------------------------------
4858 FUNCTION ZaTxBal1_01032011(
4859 -- Balances
4860     p_ANN_ARR_PF_CMTD           IN NUMBER
4861    ,p_ANN_ARR_PF_CYTD           IN NUMBER
4862    ,p_ANN_ARR_PF_RUN            IN NUMBER
4863    ,p_ANN_ARR_PF_PTD            IN NUMBER
4864    ,p_ANN_ARR_PF_YTD            IN NUMBER
4865    ,p_ANN_ARR_RA_CMTD           IN NUMBER
4866    ,p_ANN_ARR_RA_CYTD           IN NUMBER
4867    ,p_ANN_ARR_RA_RUN            IN NUMBER
4868    ,p_ANN_ARR_RA_PTD            IN NUMBER
4869    ,p_ANN_ARR_RA_YTD            IN NUMBER
4870    ,p_ANN_EE_INC_PRO_POL_CMTD   IN NUMBER
4871    ,p_ANN_EE_INC_PRO_POL_CYTD   IN NUMBER
4872    ,p_ANN_EE_INC_PRO_POL_RUN    IN NUMBER
4873    ,p_ANN_EE_INC_PRO_POL_PTD    IN NUMBER
4874    ,p_ANN_EE_INC_PRO_POL_YTD    IN NUMBER
4875    ,p_ANN_MED_CNTRB_ABM_CMTD    IN NUMBER
4876    ,p_ANN_MED_CNTRB_ABM_CYTD    IN NUMBER
4877    ,p_ANN_MED_CNTRB_ABM_RUN     IN NUMBER
4878    ,p_ANN_MED_CNTRB_ABM_PTD     IN NUMBER
4879    ,p_ANN_MED_CNTRB_ABM_YTD     IN NUMBER
4880    ,p_ANN_PF_CMTD               IN NUMBER
4881    ,p_ANN_PF_CYTD               IN NUMBER
4882    ,p_ANN_PF_RUN                IN NUMBER
4883    ,p_ANN_PF_PTD                IN NUMBER
4884    ,p_ANN_PF_YTD                IN NUMBER
4885    ,p_ANN_RA_CMTD               IN NUMBER
4886    ,p_ANN_RA_CYTD               IN NUMBER
4887    ,p_ANN_RA_RUN                IN NUMBER
4888    ,p_ANN_RA_PTD                IN NUMBER
4889    ,p_ANN_RA_YTD                IN NUMBER
4890    /*TYS2010*/
4891    ,p_ANN_DONAT_MD_EE_CMTD      IN NUMBER
4892    ,p_ANN_DONAT_MD_EE_CYTD      IN NUMBER
4893    ,p_ANN_DONAT_MD_EE_RUN       IN NUMBER
4894    ,p_ANN_DONAT_MD_EE_PTD       IN NUMBER
4895    ,p_ANN_DONAT_MD_EE_YTD       IN NUMBER
4896    ) RETURN NUMBER
4897 AS
4898    l_Dum NUMBER := 1;
4899 
4900 BEGIN
4901 -- Balances
4902    bal_ANN_ARR_PF_CMTD         := p_ANN_ARR_PF_CMTD;
4903    bal_ANN_ARR_PF_CYTD         := p_ANN_ARR_PF_CYTD;
4904    bal_ANN_ARR_PF_RUN          := p_ANN_ARR_PF_RUN;
4905    bal_ANN_ARR_PF_PTD          := p_ANN_ARR_PF_PTD;
4906    bal_ANN_ARR_PF_YTD          := p_ANN_ARR_PF_YTD;
4907    bal_ANN_ARR_RA_CMTD         := p_ANN_ARR_RA_CMTD;
4908    bal_ANN_ARR_RA_CYTD         := p_ANN_ARR_RA_CYTD;
4909    bal_ANN_ARR_RA_RUN          := p_ANN_ARR_RA_RUN;
4910    bal_ANN_ARR_RA_PTD          := p_ANN_ARR_RA_PTD;
4911    bal_ANN_ARR_RA_YTD          := p_ANN_ARR_RA_YTD;
4912    bal_ANN_EE_INC_PRO_POL_CMTD := p_ANN_EE_INC_PRO_POL_CMTD;
4913    bal_ANN_EE_INC_PRO_POL_CYTD := p_ANN_EE_INC_PRO_POL_CYTD;
4914    bal_ANN_EE_INC_PRO_POL_RUN  := p_ANN_EE_INC_PRO_POL_RUN;
4915    bal_ANN_EE_INC_PRO_POL_PTD  := p_ANN_EE_INC_PRO_POL_PTD;
4916    bal_ANN_EE_INC_PRO_POL_YTD  := p_ANN_EE_INC_PRO_POL_YTD;
4917    bal_ANN_MED_CNTRB_ABM_CMTD  := p_ANN_MED_CNTRB_ABM_CMTD;
4918    bal_ANN_MED_CNTRB_ABM_CYTD  := p_ANN_MED_CNTRB_ABM_CYTD;
4919    bal_ANN_MED_CNTRB_ABM_RUN   := p_ANN_MED_CNTRB_ABM_RUN;
4920    bal_ANN_MED_CNTRB_ABM_PTD   := p_ANN_MED_CNTRB_ABM_PTD;
4921    bal_ANN_MED_CNTRB_ABM_YTD   := p_ANN_MED_CNTRB_ABM_YTD;
4922    bal_ANN_PF_CMTD             := p_ANN_PF_CMTD;
4923    bal_ANN_PF_CYTD             := p_ANN_PF_CYTD;
4924    bal_ANN_PF_RUN              := p_ANN_PF_RUN;
4925    bal_ANN_PF_PTD              := p_ANN_PF_PTD;
4926    bal_ANN_PF_YTD              := p_ANN_PF_YTD;
4927    bal_ANN_RA_CMTD             := p_ANN_RA_CMTD;
4928    bal_ANN_RA_CYTD             := p_ANN_RA_CYTD;
4929    bal_ANN_RA_RUN              := p_ANN_RA_RUN;
4930    bal_ANN_RA_PTD              := p_ANN_RA_PTD;
4931    bal_ANN_RA_YTD              := p_ANN_RA_YTD;
4932    /*TYS2010 */
4933    bal_ANN_DONAT_MD_EE_CMTD    := p_ANN_DONAT_MD_EE_CMTD;
4934    bal_ANN_DONAT_MD_EE_CYTD    := p_ANN_DONAT_MD_EE_CYTD;
4935    bal_ANN_DONAT_MD_EE_RUN     := p_ANN_DONAT_MD_EE_RUN;
4936    bal_ANN_DONAT_MD_EE_PTD     := p_ANN_DONAT_MD_EE_PTD;
4937    bal_ANN_DONAT_MD_EE_YTD     := p_ANN_DONAT_MD_EE_YTD;
4938 
4939    RETURN l_Dum;
4940 EXCEPTION
4941    WHEN OTHERS THEN
4942       hr_utility.set_message(801, 'ZaTxBal1_01032011: '||TO_CHAR(SQLCODE));
4943       hr_utility.raise_error;
4944 END ZaTxBal1_01032011;
4945 -------------------------------------------------------------------------------
4946 -- ZaTxBal2_01032011                                                         --
4947 -- Tax module supporting function                                            --
4948 -------------------------------------------------------------------------------
4949 FUNCTION ZaTxBal2_01032011(
4950 -- Balances
4951     p_ARR_PF_CMTD                IN NUMBER
4952    ,p_ARR_PF_CYTD                IN NUMBER
4953    ,p_ARR_PF_PTD                 IN NUMBER
4954    ,p_ARR_PF_YTD                 IN NUMBER
4955    ,p_ARR_RA_CMTD                IN NUMBER
4956    ,p_ARR_RA_CYTD                IN NUMBER
4957    ,p_ARR_RA_PTD                 IN NUMBER
4958    ,p_ARR_RA_YTD                 IN NUMBER
4959    ,p_BP_CMTD                    IN NUMBER
4960    ,p_BP_PTD                     IN NUMBER
4961    ,p_BP_YTD                     IN NUMBER
4962    ,p_CUR_PF_CMTD                IN NUMBER
4963    ,p_CUR_PF_CYTD                IN NUMBER
4964    ,p_CUR_PF_RUN                 IN NUMBER
4965    ,p_CUR_PF_PTD                 IN NUMBER
4966    ,p_CUR_PF_YTD                 IN NUMBER
4967    ,p_CUR_RA_CMTD                IN NUMBER
4968    ,p_CUR_RA_CYTD                IN NUMBER
4969    ,p_CUR_RA_RUN                 IN NUMBER
4970    ,p_CUR_RA_PTD                 IN NUMBER
4971    ,p_CUR_RA_YTD                 IN NUMBER
4972    ,p_DIR_DMD_RMN_ITD            IN NUMBER
4973    /*TYS2010*/
4974    ,p_DONAT_MD_EE_CMTD           IN NUMBER
4975    ,p_DONAT_MD_EE_CYTD           IN NUMBER
4976    ,p_DONAT_MD_EE_RUN            IN NUMBER
4977    ,p_DONAT_MD_EE_PTD            IN NUMBER
4978    ,p_DONAT_MD_EE_YTD            IN NUMBER
4979    ) RETURN NUMBER
4980 AS
4981    l_Dum NUMBER := 1;
4982 
4983 BEGIN
4984 -- Balances
4985    bal_ARR_PF_CMTD     := p_ARR_PF_CMTD;
4986    bal_ARR_PF_CYTD     := p_ARR_PF_CYTD;
4987    bal_ARR_PF_PTD      := p_ARR_PF_PTD;
4988    bal_ARR_PF_YTD      := p_ARR_PF_YTD;
4989    bal_ARR_RA_CMTD     := p_ARR_RA_CMTD;
4990    bal_ARR_RA_CYTD     := p_ARR_RA_CYTD;
4991    bal_ARR_RA_PTD      := p_ARR_RA_PTD;
4992    bal_ARR_RA_YTD      := p_ARR_RA_YTD;
4993    bal_BP_CMTD         := p_BP_CMTD;
4994    bal_BP_PTD          := p_BP_PTD;
4995    bal_BP_YTD          := p_BP_YTD;
4996    bal_CUR_PF_CMTD     := p_CUR_PF_CMTD;
4997    bal_CUR_PF_CYTD     := p_CUR_PF_CYTD;
4998    bal_CUR_PF_RUN      := p_CUR_PF_RUN;
4999    bal_CUR_PF_PTD      := p_CUR_PF_PTD;
5000    bal_CUR_PF_YTD      := p_CUR_PF_YTD;
5001    bal_CUR_RA_CMTD     := p_CUR_RA_CMTD;
5002    bal_CUR_RA_CYTD     := p_CUR_RA_CYTD;
5003    bal_CUR_RA_RUN      := p_CUR_RA_RUN;
5004    bal_CUR_RA_PTD      := p_CUR_RA_PTD;
5005    bal_CUR_RA_YTD      := p_CUR_RA_YTD;
5006    bal_DIR_DMD_RMN_ITD := p_DIR_DMD_RMN_ITD;
5007    /*TYS2010*/
5008    bal_DONAT_MD_EE_CMTD:= p_DONAT_MD_EE_CMTD;
5009    bal_DONAT_MD_EE_CYTD:= p_DONAT_MD_EE_CYTD;
5010    bal_DONAT_MD_EE_RUN := p_DONAT_MD_EE_RUN;
5011    bal_DONAT_MD_EE_PTD := p_DONAT_MD_EE_PTD;
5012    bal_DONAT_MD_EE_YTD := p_DONAT_MD_EE_YTD;
5013    RETURN l_Dum;
5014 EXCEPTION
5015    WHEN OTHERS THEN
5016       hr_utility.set_message(801, 'ZaTxBal2_01032011: '||TO_CHAR(SQLCODE));
5017       hr_utility.raise_error;
5018 END ZaTxBal2_01032011;
5019 -------------------------------------------------------------------------------
5020 -- ZaTxBal3_01032011                                                         --
5021 -- Tax module supporting function                                            --
5022 -------------------------------------------------------------------------------
5023 FUNCTION ZaTxBal3_01032011(
5024 -- Balances
5025     p_EE_INC_PRO_POL_CMTD        IN NUMBER
5026    ,p_EE_INC_PRO_POL_CYTD        IN NUMBER
5027    ,p_EE_INC_PRO_POL_RUN         IN NUMBER
5028    ,p_EE_INC_PRO_POL_PTD         IN NUMBER
5029    ,p_EE_INC_PRO_POL_YTD         IN NUMBER
5030    ,p_EXC_ARR_PEN_ITD            IN NUMBER
5031    ,p_EXC_ARR_PEN_PTD            IN NUMBER
5032    ,p_EXC_ARR_PEN_YTD            IN NUMBER
5033    ,p_EXC_ARR_RA_ITD             IN NUMBER
5034    ,p_EXC_ARR_RA_PTD             IN NUMBER
5035    ,p_EXC_ARR_RA_YTD             IN NUMBER
5036    ,p_MED_CONTR_CMTD             IN NUMBER
5037    ,p_MED_CONTR_CYTD             IN NUMBER
5038    ,p_MED_CONTR_RUN              IN NUMBER
5039    ,p_MED_CONTR_PTD              IN NUMBER
5040    ,p_MED_CONTR_YTD              IN NUMBER
5041    ,p_MED_CNTRB_ABM_CMTD         IN NUMBER
5042    ,p_MED_CNTRB_ABM_CYTD         IN NUMBER
5043    ,p_MED_CNTRB_ABM_RUN          IN NUMBER
5044    ,p_MED_CNTRB_ABM_PTD          IN NUMBER
5045    ,p_MED_CNTRB_ABM_YTD          IN NUMBER
5046    ,p_NET_PAY_RUN                IN NUMBER
5047    ,p_NET_TXB_INC_CMTD           IN NUMBER
5048    --EMP201
5049    ,p_NET_PAYE_TXB_INC_CMTD      IN NUMBER
5050    ) RETURN NUMBER
5051 AS
5052    l_Dum NUMBER := 1;
5053 
5054 BEGIN
5055 -- Balances
5056    bal_EE_INC_PRO_POL_CMTD := p_EE_INC_PRO_POL_CMTD;
5057    bal_EE_INC_PRO_POL_CYTD := p_EE_INC_PRO_POL_CYTD;
5058    bal_EE_INC_PRO_POL_RUN  := p_EE_INC_PRO_POL_RUN;
5059    bal_EE_INC_PRO_POL_PTD  := p_EE_INC_PRO_POL_PTD;
5060    bal_EE_INC_PRO_POL_YTD  := p_EE_INC_PRO_POL_YTD;
5061    bal_EXC_ARR_PEN_ITD     := p_EXC_ARR_PEN_ITD;
5062    bal_EXC_ARR_PEN_PTD     := p_EXC_ARR_PEN_PTD;
5063    bal_EXC_ARR_PEN_YTD     := p_EXC_ARR_PEN_YTD;
5064    bal_EXC_ARR_RA_ITD      := p_EXC_ARR_RA_ITD;
5065    bal_EXC_ARR_RA_PTD      := p_EXC_ARR_RA_PTD;
5066    bal_EXC_ARR_RA_YTD      := p_EXC_ARR_RA_YTD;
5067    bal_MED_CONTR_CMTD      := p_MED_CONTR_CMTD;
5068    bal_MED_CONTR_CYTD      := p_MED_CONTR_CYTD;
5069    bal_MED_CONTR_RUN       := p_MED_CONTR_RUN;
5070    bal_MED_CONTR_PTD       := p_MED_CONTR_PTD;
5071    bal_MED_CONTR_YTD       := p_MED_CONTR_YTD;
5072    bal_MED_CNTRB_ABM_CMTD  := p_MED_CNTRB_ABM_CMTD;
5073    bal_MED_CNTRB_ABM_CYTD  := p_MED_CNTRB_ABM_CYTD;
5074    bal_MED_CNTRB_ABM_RUN   := p_MED_CNTRB_ABM_RUN;
5075    bal_MED_CNTRB_ABM_PTD   := p_MED_CNTRB_ABM_PTD;
5076    bal_MED_CNTRB_ABM_YTD   := p_MED_CNTRB_ABM_YTD;
5077    bal_NET_PAY_RUN         := p_NET_PAY_RUN;
5078    bal_NET_TXB_INC_CMTD    := p_NET_TXB_INC_CMTD;
5079    bal_NET_PAYE_TXB_INC_CMTD   := p_NET_PAYE_TXB_INC_CMTD;
5080 
5081 
5082    RETURN l_Dum;
5083 EXCEPTION
5084    WHEN OTHERS THEN
5085       hr_utility.set_message(801, 'ZaTxBal3_01032011: '||TO_CHAR(SQLCODE));
5086       hr_utility.raise_error;
5087 END ZaTxBal3_01032011;
5088 -------------------------------------------------------------------------------
5089 -- ZaTxBal4_01032011                                                         --
5090 -- Tax module supporting function                                            --
5091 -------------------------------------------------------------------------------
5092 FUNCTION ZaTxBal4_01032011(
5093 -- Balances
5094     p_PAYE_YTD                   IN NUMBER
5095    ,p_SITE_YTD                   IN NUMBER
5096    ,p_TAX_YTD                    IN NUMBER
5097    ,p_TX_ON_AB_PTD               IN NUMBER
5098    ,p_TX_ON_AB_YTD               IN NUMBER
5099    ,p_TX_ON_AP_PTD               IN NUMBER
5100    ,p_TX_ON_AP_YTD               IN NUMBER
5101    ,p_TX_ON_BP_PTD               IN NUMBER
5102    ,p_TX_ON_BP_YTD               IN NUMBER
5103    ,p_TX_ON_TA_PTD               IN NUMBER
5104    ,p_TX_ON_TA_YTD               IN NUMBER
5105    ,p_TX_ON_DR_PTD               IN NUMBER
5106    ,p_TX_ON_DR_YTD               IN NUMBER
5107    ,p_TX_ON_FB_PTD               IN NUMBER
5108    ,p_TX_ON_FB_YTD               IN NUMBER
5109    ,p_TX_ON_NI_PTD               IN NUMBER
5110    ,p_TX_ON_NI_YTD               IN NUMBER
5111    ,p_TX_ON_PO_PTD               IN NUMBER
5112    ,p_TX_ON_PO_YTD               IN NUMBER
5113    ,p_TX_ON_LS_PTD               IN NUMBER
5114    ,p_TX_ON_RET_LS_PTD           IN NUMBER
5115    /* NTG */
5116    ,p_TX_ON_AP_NTG_PTD           IN NUMBER
5117    ,p_TX_ON_AP_NTG_YTD           IN NUMBER
5118    ,p_TX_ON_EE_DBT_NTG_PTD       IN NUMBER
5119    ,p_TX_ON_EE_DBT_NTG_YTD       IN NUMBER
5120    /* End NTG */
5121    ) RETURN NUMBER
5122 AS
5123    l_Dum NUMBER := 1;
5124 
5125 BEGIN
5126 -- Balances
5127    bal_PAYE_YTD     := p_PAYE_YTD;
5128    bal_SITE_YTD     := p_SITE_YTD;
5129    bal_TAX_YTD      := p_TAX_YTD;
5130    bal_TX_ON_AB_PTD := p_TX_ON_AB_PTD;
5131    bal_TX_ON_AB_YTD := p_TX_ON_AB_YTD;
5132    bal_TX_ON_AP_PTD := p_TX_ON_AP_PTD;
5133    bal_TX_ON_AP_YTD := p_TX_ON_AP_YTD;
5134    bal_TX_ON_BP_PTD := p_TX_ON_BP_PTD;
5135    bal_TX_ON_BP_YTD := p_TX_ON_BP_YTD;
5136    bal_TX_ON_TA_PTD := p_TX_ON_TA_PTD;
5137    bal_TX_ON_TA_YTD := p_TX_ON_TA_YTD;
5138    bal_TX_ON_DR_PTD := p_TX_ON_DR_PTD;
5139    bal_TX_ON_DR_YTD := p_TX_ON_DR_YTD;
5140    bal_TX_ON_FB_PTD := p_TX_ON_FB_PTD;
5141    bal_TX_ON_FB_YTD := p_TX_ON_FB_YTD;
5142    bal_TX_ON_NI_PTD := p_TX_ON_NI_PTD;
5143    bal_TX_ON_NI_YTD := p_TX_ON_NI_YTD;
5144    bal_TX_ON_PO_PTD := p_TX_ON_PO_PTD;
5145    bal_TX_ON_PO_YTD := p_TX_ON_PO_YTD;
5146    bal_TX_ON_LS_PTD := p_TX_ON_LS_PTD;
5147    bal_TX_ON_RET_LS_PTD := p_TX_ON_RET_LS_PTD;
5148    /* NTG */
5149    bal_TX_ON_AP_NTG_YTD     := p_TX_ON_AP_NTG_YTD;
5150    bal_TX_ON_AP_NTG_PTD     := p_TX_ON_AP_NTG_PTD;
5151    bal_TX_ON_EE_DBT_NTG_YTD := p_TX_ON_EE_DBT_NTG_YTD;
5152    bal_TX_ON_EE_DBT_NTG_PTD := p_TX_ON_EE_DBT_NTG_PTD;
5153 
5154    RETURN l_Dum;
5155 EXCEPTION
5156    WHEN OTHERS THEN
5157       hr_utility.set_message(801, 'ZaTxBal4_01032011: '||TO_CHAR(SQLCODE));
5158       hr_utility.raise_error;
5159 END ZaTxBal4_01032011;
5160 -------------------------------------------------------------------------------
5161 -- ZaTxBal5_01032011                                                         --
5162 -- Tax module supporting function                                            --
5163 -------------------------------------------------------------------------------
5164 FUNCTION ZaTxBal5_01032011(
5165 -- Balances
5166     p_TOT_INC_PTD                IN NUMBER
5167    ,p_TOT_INC_YTD                IN NUMBER
5168    ,p_TOT_NRFI_AN_INC_CMTD       IN NUMBER
5169    ,p_TOT_NRFI_AN_INC_CYTD       IN NUMBER
5170    ,p_TOT_NRFI_AN_INC_RUN        IN NUMBER
5171    ,p_TOT_NRFI_AN_INC_PTD        IN NUMBER
5172    ,p_TOT_NRFI_AN_INC_YTD        IN NUMBER
5173    ,p_TOT_NRFI_INC_CMTD          IN NUMBER
5174    ,p_TOT_NRFI_INC_CYTD          IN NUMBER
5175    ,p_TOT_NRFI_INC_RUN           IN NUMBER
5176    ,p_TOT_NRFI_INC_PTD           IN NUMBER
5177    ,p_TOT_NRFI_INC_YTD           IN NUMBER
5178    ,p_TOT_RFI_AN_INC_CMTD        IN NUMBER
5179    ,p_TOT_RFI_AN_INC_CYTD        IN NUMBER
5180    ,p_TOT_RFI_AN_INC_RUN         IN NUMBER
5181    ,p_TOT_RFI_AN_INC_PTD         IN NUMBER
5182    ,p_TOT_RFI_AN_INC_YTD         IN NUMBER
5183    ,p_TOT_RFI_INC_CMTD           IN NUMBER
5184    ,p_TOT_RFI_INC_CYTD           IN NUMBER
5185    ,p_TOT_RFI_INC_RUN            IN NUMBER
5186    ,p_TOT_RFI_INC_PTD            IN NUMBER
5187    ,p_TOT_RFI_INC_YTD            IN NUMBER
5188    ,p_TOT_SEA_WRK_DYS_WRK_YTD    IN NUMBER
5189    ,p_TOT_SKL_ANN_INC_CMTD       IN NUMBER
5190    ,p_TOT_SKL_INC_CMTD           IN NUMBER
5191    ,p_TOT_TXB_INC_ITD            IN NUMBER
5192     --EMP201
5193    ,p_GROSS_REMUNERATION_CMTD    IN NUMBER
5194    ,p_ANN_PAYMENTS_CMTD          IN NUMBER
5195     --NTG
5196    ,p_TOT_RFI_EE_DBT_NTG_CMTD    IN NUMBER
5197    ,p_TOT_RFI_EE_DBT_NTG_CYTD    IN NUMBER
5198    ,p_TOT_RFI_EE_DBT_NTG_RUN     IN NUMBER
5199    ,p_TOT_RFI_EE_DBT_NTG_PTD     IN NUMBER
5200    ,p_TOT_RFI_EE_DBT_NTG_YTD     IN NUMBER
5201    ,p_TOT_NRFI_EE_DBT_NTG_CMTD   IN NUMBER
5202    ,p_TOT_NRFI_EE_DBT_NTG_CYTD   IN NUMBER
5203    ,p_TOT_NRFI_EE_DBT_NTG_RUN    IN NUMBER
5204    ,p_TOT_NRFI_EE_DBT_NTG_PTD    IN NUMBER
5205    ,p_TOT_NRFI_EE_DBT_NTG_YTD    IN NUMBER
5206    ,p_TOT_SKL_ANN_INC_NTG_CMTD   IN NUMBER
5207    ) RETURN NUMBER
5208 AS
5209    l_Dum NUMBER := 1;
5210 
5211 BEGIN
5212 -- Balances
5213    bal_TOT_INC_PTD             := p_TOT_INC_PTD;
5214    bal_TOT_INC_YTD             := p_TOT_INC_YTD;
5215    bal_TOT_NRFI_AN_INC_CMTD    := p_TOT_NRFI_AN_INC_CMTD;
5216    bal_TOT_NRFI_AN_INC_CYTD    := p_TOT_NRFI_AN_INC_CYTD;
5217    bal_TOT_NRFI_AN_INC_RUN     := p_TOT_NRFI_AN_INC_RUN;
5218    bal_TOT_NRFI_AN_INC_PTD     := p_TOT_NRFI_AN_INC_PTD;
5219    bal_TOT_NRFI_AN_INC_YTD     := p_TOT_NRFI_AN_INC_YTD;
5220    bal_TOT_NRFI_INC_CMTD       := p_TOT_NRFI_INC_CMTD;
5221    bal_TOT_NRFI_INC_CYTD       := p_TOT_NRFI_INC_CYTD;
5222    bal_TOT_NRFI_INC_RUN        := p_TOT_NRFI_INC_RUN;
5223    bal_TOT_NRFI_INC_PTD        := p_TOT_NRFI_INC_PTD;
5224    bal_TOT_NRFI_INC_YTD        := p_TOT_NRFI_INC_YTD;
5225    bal_TOT_RFI_AN_INC_CMTD     := p_TOT_RFI_AN_INC_CMTD;
5226    bal_TOT_RFI_AN_INC_CYTD     := p_TOT_RFI_AN_INC_CYTD;
5227    bal_TOT_RFI_AN_INC_RUN      := p_TOT_RFI_AN_INC_RUN;
5228    bal_TOT_RFI_AN_INC_PTD      := p_TOT_RFI_AN_INC_PTD;
5229    bal_TOT_RFI_AN_INC_YTD      := p_TOT_RFI_AN_INC_YTD;
5230    bal_TOT_RFI_INC_CMTD        := p_TOT_RFI_INC_CMTD;
5231    bal_TOT_RFI_INC_CYTD        := p_TOT_RFI_INC_CYTD;
5232    bal_TOT_RFI_INC_RUN         := p_TOT_RFI_INC_RUN;
5233    bal_TOT_RFI_INC_PTD         := p_TOT_RFI_INC_PTD;
5234    bal_TOT_RFI_INC_YTD         := p_TOT_RFI_INC_YTD;
5235    bal_TOT_SEA_WRK_DYS_WRK_YTD := p_TOT_SEA_WRK_DYS_WRK_YTD;
5236    bal_TOT_SKL_ANN_INC_CMTD    := p_TOT_SKL_ANN_INC_CMTD;
5237    bal_TOT_SKL_INC_CMTD        := p_TOT_SKL_INC_CMTD;
5238    bal_TOT_TXB_INC_ITD         := p_TOT_TXB_INC_ITD;
5239    -- EMP201
5240    bal_GROSS_REMUNERATION_CMTD := p_GROSS_REMUNERATION_CMTD ;
5241    bal_ANN_PAYMENTS_CMTD       := p_ANN_PAYMENTS_CMTD ;
5242    -- NTG
5243    bal_TOT_RFI_EE_DBT_NTG_CMTD := p_TOT_RFI_EE_DBT_NTG_CMTD;
5244    bal_TOT_RFI_EE_DBT_NTG_CYTD := p_TOT_RFI_EE_DBT_NTG_CYTD;
5245    bal_TOT_RFI_EE_DBT_NTG_RUN  := p_TOT_RFI_EE_DBT_NTG_RUN;
5246    bal_TOT_RFI_EE_DBT_NTG_PTD  := p_TOT_RFI_EE_DBT_NTG_PTD;
5247    bal_TOT_RFI_EE_DBT_NTG_YTD  := p_TOT_RFI_EE_DBT_NTG_YTD;
5248    bal_TOT_NRFI_EE_DBT_NTG_CMTD:= p_TOT_NRFI_EE_DBT_NTG_CMTD;
5249    bal_TOT_NRFI_EE_DBT_NTG_CYTD:= p_TOT_NRFI_EE_DBT_NTG_CYTD;
5250    bal_TOT_NRFI_EE_DBT_NTG_RUN := p_TOT_NRFI_EE_DBT_NTG_RUN;
5251    bal_TOT_NRFI_EE_DBT_NTG_PTD := p_TOT_NRFI_EE_DBT_NTG_PTD;
5252    bal_TOT_NRFI_EE_DBT_NTG_YTD := p_TOT_NRFI_EE_DBT_NTG_YTD;
5253    bal_TOT_SKL_ANN_INC_NTG_CMTD:= p_TOT_SKL_ANN_INC_NTG_CMTD;
5254 
5255    RETURN l_Dum;
5256 EXCEPTION
5257    WHEN OTHERS THEN
5258       hr_utility.set_message(801, 'ZaTxBal5_01032011: '||TO_CHAR(SQLCODE));
5259       hr_utility.raise_error;
5260 END ZaTxBal5_01032011;
5261 
5262 -------------------------------------------------------------------------------
5263 -- ZaTxBal6_01032011                                                         --
5264 -- Tax module supporting function                                            --
5265 -------------------------------------------------------------------------------
5266 FUNCTION ZaTxBal6_01032011(
5267 -- Balances
5268     p_TOT_TXB_AB_CMTD           IN NUMBER
5269    ,p_TOT_TXB_AB_RUN            IN NUMBER
5270    ,p_TOT_TXB_AB_PTD            IN NUMBER
5271    ,p_TOT_TXB_AB_YTD            IN NUMBER
5272    ,p_TOT_TXB_AP_CMTD           IN NUMBER
5273    ,p_TOT_TXB_AP_RUN            IN NUMBER
5274    ,p_TOT_TXB_AP_PTD            IN NUMBER
5275    ,p_TOT_TXB_AP_YTD            IN NUMBER
5276    ,p_TOT_TXB_FB_CMTD           IN NUMBER
5277    ,p_TOT_TXB_FB_CYTD           IN NUMBER
5278    ,p_TOT_TXB_FB_RUN            IN NUMBER
5279    ,p_TOT_TXB_FB_PTD            IN NUMBER
5280    ,p_TOT_TXB_FB_YTD            IN NUMBER
5281    ,p_TOT_TXB_NI_CMTD           IN NUMBER
5282    ,p_TOT_TXB_NI_CYTD           IN NUMBER
5283    ,p_TOT_TXB_NI_RUN            IN NUMBER
5284    ,p_TOT_TXB_NI_PTD            IN NUMBER
5285    ,p_TOT_TXB_NI_YTD            IN NUMBER
5286    ,p_TOT_TXB_PO_CMTD           IN NUMBER
5287    ,p_TOT_TXB_PO_PTD            IN NUMBER
5288    ,p_TOT_TXB_PO_YTD            IN NUMBER
5289    ,p_TOT_TXB_TA_CMTD           IN NUMBER
5290    ,p_TOT_TXB_TA_CYTD           IN NUMBER
5291    ,p_TOT_TXB_TA_PTD            IN NUMBER
5292    ,p_TOT_TXB_TA_YTD            IN NUMBER
5293    /* NTG */
5294    ,p_TOT_TXB_AP_NTG_CMTD       IN NUMBER
5295    ,p_TOT_TXB_AP_NTG_RUN        IN NUMBER
5296    ,p_TOT_TXB_AP_NTG_PTD        IN NUMBER
5297    ,p_TOT_TXB_AP_NTG_YTD        IN NUMBER
5298    ,p_TOT_TXB_EE_DBT_NTG_CMTD   IN NUMBER
5299    ,p_TOT_TXB_EE_DBT_NTG_RUN    IN NUMBER
5300    ,p_TOT_TXB_EE_DBT_NTG_PTD    IN NUMBER
5301    ,p_TOT_TXB_EE_DBT_NTG_YTD    IN NUMBER
5302    /* End NTG */
5303    ) RETURN NUMBER
5304 AS
5305    l_Dum NUMBER := 1;
5306 
5307 BEGIN
5308 -- Balances
5309    bal_TOT_TXB_AB_CMTD   := p_TOT_TXB_AB_CMTD;
5310    bal_TOT_TXB_AB_RUN    := p_TOT_TXB_AB_RUN;
5311    bal_TOT_TXB_AB_PTD    := p_TOT_TXB_AB_PTD;
5312    bal_TOT_TXB_AB_YTD    := p_TOT_TXB_AB_YTD;
5313    bal_TOT_TXB_AP_CMTD   := p_TOT_TXB_AP_CMTD;
5314    bal_TOT_TXB_AP_RUN    := p_TOT_TXB_AP_RUN;
5315    bal_TOT_TXB_AP_PTD    := p_TOT_TXB_AP_PTD;
5316    bal_TOT_TXB_AP_YTD    := p_TOT_TXB_AP_YTD;
5317    bal_TOT_TXB_FB_CMTD   := p_TOT_TXB_FB_CMTD;
5318    bal_TOT_TXB_FB_CYTD   := p_TOT_TXB_FB_CYTD;
5319    bal_TOT_TXB_FB_RUN    := p_TOT_TXB_FB_RUN;
5320    bal_TOT_TXB_FB_PTD    := p_TOT_TXB_FB_PTD;
5321    bal_TOT_TXB_FB_YTD    := p_TOT_TXB_FB_YTD;
5322    bal_TOT_TXB_NI_CMTD   := p_TOT_TXB_NI_CMTD;
5323    bal_TOT_TXB_NI_CYTD   := p_TOT_TXB_NI_CYTD;
5324    bal_TOT_TXB_NI_RUN    := p_TOT_TXB_NI_RUN;
5325    bal_TOT_TXB_NI_PTD    := p_TOT_TXB_NI_PTD;
5326    bal_TOT_TXB_NI_YTD    := p_TOT_TXB_NI_YTD;
5327    bal_TOT_TXB_PO_CMTD   := p_TOT_TXB_PO_CMTD;
5328    bal_TOT_TXB_PO_PTD    := p_TOT_TXB_PO_PTD;
5329    bal_TOT_TXB_PO_YTD    := p_TOT_TXB_PO_YTD;
5330    bal_TOT_TXB_TA_CMTD   := p_TOT_TXB_TA_CMTD;
5331    bal_TOT_TXB_TA_CYTD   := p_TOT_TXB_TA_CYTD;
5332    bal_TOT_TXB_TA_PTD    := p_TOT_TXB_TA_PTD;
5333    bal_TOT_TXB_TA_YTD    := p_TOT_TXB_TA_YTD;
5334    /* NTG */
5335    bal_TOT_TXB_AP_NTG_CMTD   := p_TOT_TXB_AP_NTG_CMTD;
5336    bal_TOT_TXB_AP_NTG_RUN    := p_TOT_TXB_AP_NTG_RUN;
5337    bal_TOT_TXB_AP_NTG_PTD    := p_TOT_TXB_AP_NTG_PTD;
5338    bal_TOT_TXB_AP_NTG_YTD    := p_TOT_TXB_AP_NTG_YTD;
5339    bal_TOT_TXB_EE_DBT_NTG_CMTD   := p_TOT_TXB_EE_DBT_NTG_CMTD;
5340    bal_TOT_TXB_EE_DBT_NTG_RUN    := p_TOT_TXB_EE_DBT_NTG_RUN;
5341    bal_TOT_TXB_EE_DBT_NTG_PTD    := p_TOT_TXB_EE_DBT_NTG_PTD;
5342    bal_TOT_TXB_EE_DBT_NTG_YTD    := p_TOT_TXB_EE_DBT_NTG_YTD;
5343    /* End NTG */
5344 
5345 
5346    RETURN l_Dum;
5347 EXCEPTION
5348    WHEN OTHERS THEN
5349       hr_utility.set_message(801, 'ZaTxBal6_01032011: '||TO_CHAR(SQLCODE));
5350       hr_utility.raise_error;
5351 END ZaTxBal6_01032011;
5352 
5353 -------------------------------------------------------------------------------
5354 -- ZaTx_01032011                                                             --
5355 -- Main Tax module function                                                  --
5356 -------------------------------------------------------------------------------
5357 FUNCTION ZaTx_01032011(
5358 /*  PARAMETERS */
5359    -- Contexts
5360      ASSIGNMENT_ACTION_ID IN NUMBER
5361    , ASSIGNMENT_ID        IN NUMBER
5362    , PAYROLL_ACTION_ID    IN NUMBER
5363    , PAYROLL_ID           IN NUMBER
5364    -- Out Parameters
5365    , p_LibWrn            OUT NOCOPY VARCHAR2
5366    , p_LibFpDR           OUT NOCOPY NUMBER
5367    , p_LibFpNI           OUT NOCOPY NUMBER
5368    , p_LibFpFB           OUT NOCOPY NUMBER
5369    , p_LibFpTA           OUT NOCOPY NUMBER
5370    , p_LibFpBP           OUT NOCOPY NUMBER
5371    , p_LibFpAB           OUT NOCOPY NUMBER
5372    , p_LibFpAP           OUT NOCOPY NUMBER
5373    , p_LibFpPO           OUT NOCOPY NUMBER
5374    , p_PayValSD          OUT NOCOPY NUMBER
5375    , p_PayValEC          OUT NOCOPY NUMBER
5376    , p_PayeVal           OUT NOCOPY NUMBER
5377    , p_SiteVal           OUT NOCOPY NUMBER
5378    , p_It3Ind            OUT NOCOPY NUMBER
5379    , p_PfUpdFig          OUT NOCOPY NUMBER
5380    , p_RaUpdFig          OUT NOCOPY NUMBER
5381    , p_OUpdFig           OUT NOCOPY NUMBER
5382    , p_NtiUpdFig         OUT NOCOPY NUMBER
5383    , p_OvrWrn            OUT NOCOPY VARCHAR2
5384    , p_LSDirNum          OUT NOCOPY VARCHAR2
5385    , p_LSDirVal          OUT NOCOPY NUMBER
5386    , p_RETLSDirNum       OUT NOCOPY VARCHAR2
5387    , p_RETLSDirVal       OUT NOCOPY NUMBER
5388     --EMP201
5389    , p_NPtiUpdFig        OUT NOCOPY NUMBER
5390    -- NTG
5391    , p_LibFpNtgAP        OUT NOCOPY NUMBER
5392    , p_LibFpNtgEEDbt     OUT NOCOPY NUMBER
5393    , p_LibFpNtg          OUT NOCOPY NUMBER
5394    )RETURN NUMBER
5395 AS
5396 -- Variables
5397 --
5398    l_Dum NUMBER := 1;
5399 -- Fix for Bug# 12351345
5400 
5401    l_lmsm_proc_cnt NUMBER;
5402    l_ret_lmsm_proc_cnt NUMBER;
5403 
5404 -- Fix for Bug# 12351345
5405 
5406    xpt_FxdPrc EXCEPTION;
5407 
5408 -------------------------------------------------------------------------------
5409 BEGIN--                           MAIN                                       --
5410 -------------------------------------------------------------------------------
5411 -- Set hr_utility globals if debugging
5412 --
5413 --    py_za_tx_utl_01032011.g_HrTraceEnabled  := TRUE;
5414 --   py_za_tx_utl_01032011.g_HrTracePipeName := 'ZATAX';
5415 
5416 -- Call hr_utility start procedure
5417    py_za_tx_utl_01032011.StartHrTrace;
5418 
5419 -- Setup Trace Header Info
5420    WrtHrTrc(' ');
5421    WrtHrTrc(' ');
5422    WrtHrTrc(' ');
5423    WrtHrTrc('------------------------------------------------------------');
5424    WrtHrTrc('-- Start of Tax Trace File');
5425    WrtHrTrc('------------------------------------------------------------');
5426    WrtHrTrc(' ');
5427    WrtHrTrc('   Processing Assignment ID :     '||to_char(ASSIGNMENT_ID       ));
5428    WrtHrTrc('   Assignment Action ID     :     '||to_char(ASSIGNMENT_ACTION_ID));
5429    WrtHrTrc('   Payroll Action ID        :     '||to_char(PAYROLL_ACTION_ID   ));
5430    WrtHrTrc('   Payroll ID               :     '||to_char(PAYROLL_ID          ));
5431    WrtHrTrc(' ');
5432    WrtHrTrc('------------------------------------------------------------');
5433    WrtHrTrc(' ');
5434    WrtHrTrc('-------------------------------------------------------------------------------');
5435    WrtHrTrc('-- Application Global Values');
5436    WrtHrTrc('-------------------------------------------------------------------------------');
5437    WrtHrTrc('   glb_ZA_ADL_TX_RBT:             '||to_char(glb_ZA_ADL_TX_RBT        ));
5438    WrtHrTrc('   glb_ZA_ARR_PF_AN_MX_ABT:       '||to_char(glb_ZA_ARR_PF_AN_MX_ABT  ));
5439    WrtHrTrc('   glb_ZA_ARR_RA_AN_MX_ABT:       '||to_char(glb_ZA_ARR_RA_AN_MX_ABT  ));
5440    WrtHrTrc('   glb_ZA_TRV_ALL_TX_PRC:         '||to_char(glb_ZA_TRV_ALL_TX_PRC    ));
5441    WrtHrTrc('   glb_ZA_CC_TX_PRC:              '||to_char(glb_ZA_CC_TX_PRC         ));
5442    WrtHrTrc('   glb_ZA_PF_AN_MX_ABT:           '||to_char(glb_ZA_PF_AN_MX_ABT      ));
5443    WrtHrTrc('   glb_ZA_PF_MX_PRC:              '||to_char(glb_ZA_PF_MX_PRC         ));
5444    WrtHrTrc('   glb_ZA_PER_SERV_COMP_PERC:     '||to_char(glb_ZA_PER_SERV_COMP_PERC));
5445    WrtHrTrc('   glb_ZA_PER_SERV_TRST_PERC:     '||to_char(glb_ZA_PER_SERV_TRST_PERC));
5446    WrtHrTrc('   glb_ZA_PRI_TX_RBT:             '||to_char(glb_ZA_PRI_TX_RBT        ));
5447    WrtHrTrc('   glb_ZA_PRI_TX_THRSHLD:         '||to_char(glb_ZA_PRI_TX_THRSHLD    ));
5448    WrtHrTrc('   glb_ZA_PBL_TX_PRC:             '||to_char(glb_ZA_PBL_TX_PRC        ));
5449    WrtHrTrc('   glb_ZA_PBL_TX_RTE:             '||to_char(glb_ZA_PBL_TX_RTE        ));
5450    WrtHrTrc('   glb_ZA_RA_AN_MX_ABT:           '||to_char(glb_ZA_RA_AN_MX_ABT      ));
5451    WrtHrTrc('   glb_ZA_RA_MX_PRC:              '||to_char(glb_ZA_RA_MX_PRC         ));
5452    WrtHrTrc('   glb_ZA_SC_TX_THRSHLD:          '||to_char(glb_ZA_SC_TX_THRSHLD     ));
5453    WrtHrTrc('   glb_ZA_SIT_LIM:                '||to_char(glb_ZA_SIT_LIM           ));
5454    WrtHrTrc('   glb_ZA_TMP_TX_RTE:             '||to_char(glb_ZA_TMP_TX_RTE        ));
5455    WrtHrTrc('   glb_ZA_WRK_DYS_PR_YR:          '||to_char(glb_ZA_WRK_DYS_PR_YR     ));
5456 /* TYS2010*/
5457    WrtHrTrc('   glb_ZA_ALLOW_DONATION_PERC:    '||to_char(glb_ZA_ALLOW_DONATION_PERC ));
5458    WrtHrTrc('   glb_ZA_LATE_PAYMENT_PERC:      '||to_char(glb_ZA_LATE_PAYMENT_PERC ));
5459    WrtHrTrc('   glb_ZA_TRI_TX_RBT:             '||to_char(glb_ZA_TRI_TX_RBT ));
5460    WrtHrTrc('   glb_ZA_TRI_TX_THRSHLD:         '||to_char(glb_ZA_TRI_TX_THRSHLD ));
5461 
5462    WrtHrTrc('-------------------------------------------------------------------------------');
5463    WrtHrTrc('-- Application Database Items');
5464    WrtHrTrc('-------------------------------------------------------------------------------');
5465    WrtHrTrc('   dbi_BP_TX_RCV:                 '||        dbi_BP_TX_RCV                        );
5466    WrtHrTrc('   dbi_PAY_PROC_PRD_DTE_PD:       '||to_char(dbi_PAY_PROC_PRD_DTE_PD,'DD/MM/YYYY'));
5467    WrtHrTrc('   dbi_PER_AGE:                   '||to_char(dbi_PER_AGE                         ));
5468    WrtHrTrc('   dbi_PER_DTE_OF_BRTH:           '||to_char(dbi_PER_DTE_OF_BRTH    ,'DD/MM/YYYY'));
5469    WrtHrTrc('   dbi_SEA_WRK_DYS_WRK:           '||to_char(dbi_SEA_WRK_DYS_WRK                 ));
5470    WrtHrTrc('   dbi_SES_DTE:                   '||to_char(dbi_SES_DTE            ,'DD/MM/YYYY'));
5471    WrtHrTrc('   dbi_TX_DIR_NUM:                '||        dbi_TX_DIR_NUM                       );
5472    WrtHrTrc('   dbi_TX_DIR_VAL:                '||to_char(dbi_TX_DIR_VAL                      ));
5473    WrtHrTrc('   dbi_TX_STA:                    '||        dbi_TX_STA                           );
5474    WrtHrTrc('   dbi_TX_MTD:                    '||        dbi_TX_MTD                           );
5475    WrtHrTrc('   dbi_ZA_ACT_END_DTE:            '||to_char(dbi_ZA_ACT_END_DTE     ,'DD/MM/YYYY'));
5476    WrtHrTrc('   dbi_ZA_ACT_STRT_DTE:           '||to_char(dbi_ZA_ACT_STRT_DTE    ,'DD/MM/YYYY'));
5477    WrtHrTrc('   dbi_ZA_ASG_TX_RTR_PRD:         '||        dbi_ZA_ASG_TX_RTR_PRD                );
5478    WrtHrTrc('   dbi_ZA_ASG_TAX_RTR_RSLTS:      '||        dbi_ZA_ASG_TAX_RTR_RSLTS              );
5479 /*
5480    WrtHrTrc('   dbi_ZA_ASG_TX_YR:              '||to_char(dbi_ZA_ASG_TX_YR                    ));
5481    WrtHrTrc('   dbi_ZA_ASG_TX_YR_END:          '||to_char(dbi_ZA_ASG_TX_YR_END   ,'DD/MM/YYYY'));
5482    WrtHrTrc('   dbi_ZA_ASG_TX_YR_STRT:         '||to_char(dbi_ZA_ASG_TX_YR_STRT  ,'DD/MM/YYYY')); */
5483    WrtHrTrc('   dbi_ZA_CUR_PRD_END_DTE:        '||to_char(dbi_ZA_CUR_PRD_END_DTE ,'DD/MM/YYYY'));
5484    WrtHrTrc('   dbi_ZA_CUR_PRD_STRT_DTE:       '||to_char(dbi_ZA_CUR_PRD_STRT_DTE,'DD/MM/YYYY'));
5485    WrtHrTrc('   dbi_ZA_DYS_IN_YR:              '||to_char(dbi_ZA_DYS_IN_YR                    ));
5486    WrtHrTrc('   dbi_ZA_PAY_PRDS_LFT:           '||to_char(dbi_ZA_PAY_PRDS_LFT                 ));
5487    WrtHrTrc('   dbi_ZA_PAY_PRDS_PER_YR:        '||to_char(dbi_ZA_PAY_PRDS_PER_YR              ));
5488    WrtHrTrc('   dbi_ZA_TX_YR_END:              '||to_char(dbi_ZA_TX_YR_END       ,'DD/MM/YYYY'));
5489    WrtHrTrc('   dbi_ZA_TX_YR_STRT:             '||to_char(dbi_ZA_TX_YR_STRT      ,'DD/MM/YYYY'));
5490    WrtHrTrc('   dbi_ZA_LS_DIR_NUM:             '||        dbi_ZA_LS_DIR_NUM                    );
5491    WrtHrTrc('   dbi_ZA_LS_DIR_VAL:             '||to_char(dbi_ZA_LS_DIR_VAL                   ));
5492    WrtHrTrc('   dbi_ZA_RET_LS_DIR_NUM:         '||        dbi_ZA_RET_LS_DIR_NUM                );
5493    WrtHrTrc('   dbi_ZA_RET_LS_DIR_VAL:             '||to_char(dbi_ZA_RET_LS_DIR_VAL           ));
5494 
5495    WrtHrTrc('-------------------------------------------------------------------------------');
5496    WrtHrTrc('-- Balances');
5497    WrtHrTrc('-------------------------------------------------------------------------------');
5498    WrtHrTrc('   bal_ANN_ARR_PF_CMTD:           '||to_char(bal_ANN_ARR_PF_CMTD          ));
5499    WrtHrTrc('   bal_ANN_ARR_PF_CYTD:           '||to_char(bal_ANN_ARR_PF_CYTD          ));
5500    WrtHrTrc('   bal_ANN_ARR_PF_RUN:            '||to_char(bal_ANN_ARR_PF_RUN           ));
5501    WrtHrTrc('   bal_ANN_ARR_PF_PTD:            '||to_char(bal_ANN_ARR_PF_PTD           ));
5502    WrtHrTrc('   bal_ANN_ARR_PF_YTD:            '||to_char(bal_ANN_ARR_PF_YTD           ));
5503    WrtHrTrc('   bal_ANN_ARR_RA_CMTD:           '||to_char(bal_ANN_ARR_RA_CMTD          ));
5504    WrtHrTrc('   bal_ANN_ARR_RA_CYTD:           '||to_char(bal_ANN_ARR_RA_CYTD          ));
5505    WrtHrTrc('   bal_ANN_ARR_RA_RUN:            '||to_char(bal_ANN_ARR_RA_RUN           ));
5506    WrtHrTrc('   bal_ANN_ARR_RA_PTD:            '||to_char(bal_ANN_ARR_RA_PTD           ));
5507    WrtHrTrc('   bal_ANN_ARR_RA_YTD:            '||to_char(bal_ANN_ARR_RA_YTD           ));
5508    WrtHrTrc('   bal_ANN_EE_INC_PRO_POL_CMTD:   '||to_char(bal_ANN_EE_INC_PRO_POL_CMTD  ));
5509    WrtHrTrc('   bal_ANN_EE_INC_PRO_POL_CYTD:   '||to_char(bal_ANN_EE_INC_PRO_POL_CYTD  ));
5510    WrtHrTrc('   bal_ANN_EE_INC_PRO_POL_RUN:    '||to_char(bal_ANN_EE_INC_PRO_POL_RUN   ));
5511    WrtHrTrc('   bal_ANN_EE_INC_PRO_POL_PTD:    '||to_char(bal_ANN_EE_INC_PRO_POL_PTD   ));
5512    WrtHrTrc('   bal_ANN_EE_INC_PRO_POL_YTD:    '||to_char(bal_ANN_EE_INC_PRO_POL_YTD   ));
5513    WrtHrTrc('   bal_ANN_MED_CNTRB_ABM_CMTD:    '||to_char(bal_ANN_MED_CNTRB_ABM_CMTD   ));
5514    WrtHrTrc('   bal_ANN_MED_CNTRB_ABM_CYTD:    '||to_char(bal_ANN_MED_CNTRB_ABM_CYTD   ));
5515    WrtHrTrc('   bal_ANN_MED_CNTRB_ABM_RUN:     '||to_char(bal_ANN_MED_CNTRB_ABM_RUN    ));
5516    WrtHrTrc('   bal_ANN_MED_CNTRB_ABM_PTD:     '||to_char(bal_ANN_MED_CNTRB_ABM_PTD    ));
5517    WrtHrTrc('   bal_ANN_MED_CNTRB_ABM_YTD:     '||to_char(bal_ANN_MED_CNTRB_ABM_YTD    ));
5518    WrtHrTrc('   bal_ANN_PF_CMTD:               '||to_char(bal_ANN_PF_CMTD              ));
5519    WrtHrTrc('   bal_ANN_PF_CYTD:               '||to_char(bal_ANN_PF_CYTD              ));
5520    WrtHrTrc('   bal_ANN_PF_RUN:                '||to_char(bal_ANN_PF_RUN               ));
5521    WrtHrTrc('   bal_ANN_PF_PTD:                '||to_char(bal_ANN_PF_PTD               ));
5522    WrtHrTrc('   bal_ANN_PF_YTD:                '||to_char(bal_ANN_PF_YTD               ));
5523    WrtHrTrc('   bal_ANN_RA_CMTD:               '||to_char(bal_ANN_RA_CMTD              ));
5524    WrtHrTrc('   bal_ANN_RA_CYTD:               '||to_char(bal_ANN_RA_CYTD              ));
5525    WrtHrTrc('   bal_ANN_RA_RUN:                '||to_char(bal_ANN_RA_RUN               ));
5526    WrtHrTrc('   bal_ANN_RA_PTD:                '||to_char(bal_ANN_RA_PTD               ));
5527    WrtHrTrc('   bal_ANN_RA_YTD:                '||to_char(bal_ANN_RA_YTD               ));
5528    /* TYS2010 */
5529    WrtHrTrc('   bal_ANN_DONAT_MD_EE_CMTD:      '||to_char(bal_ANN_DONAT_MD_EE_CMTD     ));
5530    WrtHrTrc('   bal_ANN_DONAT_MD_EE_CYTD:      '||to_char(bal_ANN_DONAT_MD_EE_CYTD     ));
5531    WrtHrTrc('   bal_ANN_DONAT_MD_EE_RUN:       '||to_char(bal_ANN_DONAT_MD_EE_RUN      ));
5532    WrtHrTrc('   bal_ANN_DONAT_MD_EE_PTD:       '||to_char(bal_ANN_DONAT_MD_EE_PTD      ));
5533    WrtHrTrc('   bal_ANN_DONAT_MD_EE_YTD:       '||to_char(bal_ANN_DONAT_MD_EE_YTD      ));
5534   /* End TYS2010 */
5535    WrtHrTrc('   bal_ARR_PF_CMTD:               '||to_char(bal_ARR_PF_CMTD              ));
5536    WrtHrTrc('   bal_ARR_PF_CYTD:               '||to_char(bal_ARR_PF_CYTD              ));
5537    WrtHrTrc('   bal_ARR_PF_PTD:                '||to_char(bal_ARR_PF_PTD               ));
5538    WrtHrTrc('   bal_ARR_PF_YTD:                '||to_char(bal_ARR_PF_YTD               ));
5539    WrtHrTrc('   bal_ARR_RA_CMTD:               '||to_char(bal_ARR_RA_CMTD              ));
5540    WrtHrTrc('   bal_ARR_RA_CYTD:               '||to_char(bal_ARR_RA_CYTD              ));
5541    WrtHrTrc('   bal_ARR_RA_PTD:                '||to_char(bal_ARR_RA_PTD               ));
5542    WrtHrTrc('   bal_ARR_RA_YTD:                '||to_char(bal_ARR_RA_YTD               ));
5543    WrtHrTrc('   bal_BP_CMTD:                   '||to_char(bal_BP_CMTD                  ));
5544    WrtHrTrc('   bal_BP_PTD:                    '||to_char(bal_BP_PTD                   ));
5545    WrtHrTrc('   bal_BP_YTD:                    '||to_char(bal_BP_YTD                   ));
5546    WrtHrTrc('   bal_CUR_PF_CMTD:               '||to_char(bal_CUR_PF_CMTD              ));
5547    WrtHrTrc('   bal_CUR_PF_CYTD:               '||to_char(bal_CUR_PF_CYTD              ));
5548    WrtHrTrc('   bal_CUR_PF_RUN:                '||to_char(bal_CUR_PF_RUN               ));
5549    WrtHrTrc('   bal_CUR_PF_PTD:                '||to_char(bal_CUR_PF_PTD               ));
5550    WrtHrTrc('   bal_CUR_PF_YTD:                '||to_char(bal_CUR_PF_YTD               ));
5551    WrtHrTrc('   bal_CUR_RA_CMTD:               '||to_char(bal_CUR_RA_CMTD              ));
5552    WrtHrTrc('   bal_CUR_RA_CYTD:               '||to_char(bal_CUR_RA_CYTD              ));
5553    WrtHrTrc('   bal_CUR_RA_RUN:                '||to_char(bal_CUR_RA_RUN               ));
5554    WrtHrTrc('   bal_CUR_RA_PTD:                '||to_char(bal_CUR_RA_PTD               ));
5555    WrtHrTrc('   bal_CUR_RA_YTD:                '||to_char(bal_CUR_RA_YTD               ));
5556    WrtHrTrc('   bal_DIR_DMD_RMN_ITD:           '||to_char(bal_DIR_DMD_RMN_ITD          ));
5557    /* TYS2010 */
5558    WrtHrTrc('   bal_DONAT_MD_EE_CMTD:          '||to_char(bal_DONAT_MD_EE_CMTD         ));
5559    WrtHrTrc('   bal_DONAT_MD_EE_CYTD:          '||to_char(bal_DONAT_MD_EE_CYTD         ));
5560    WrtHrTrc('   bal_DONAT_MD_EE_RUN:           '||to_char(bal_DONAT_MD_EE_RUN          ));
5561    WrtHrTrc('   bal_DONAT_MD_EE_PTD:           '||to_char(bal_DONAT_MD_EE_PTD          ));
5562    WrtHrTrc('   bal_DONAT_MD_EE_YTD:           '||to_char(bal_DONAT_MD_EE_YTD          ));
5563   /*End TYS2010 */
5564    WrtHrTrc('   bal_EE_INC_PRO_POL_CMTD:       '||to_char(bal_EE_INC_PRO_POL_CMTD      ));
5565    WrtHrTrc('   bal_EE_INC_PRO_POL_CYTD:       '||to_char(bal_EE_INC_PRO_POL_CYTD      ));
5566    WrtHrTrc('   bal_EE_INC_PRO_POL_RUN:        '||to_char(bal_EE_INC_PRO_POL_RUN       ));
5567    WrtHrTrc('   bal_EE_INC_PRO_POL_PTD:        '||to_char(bal_EE_INC_PRO_POL_PTD       ));
5568    WrtHrTrc('   bal_EE_INC_PRO_POL_YTD:        '||to_char(bal_EE_INC_PRO_POL_YTD       ));
5569    WrtHrTrc('   bal_EXC_ARR_PEN_ITD:           '||to_char(bal_EXC_ARR_PEN_ITD          ));
5570    WrtHrTrc('   bal_EXC_ARR_PEN_PTD:           '||to_char(bal_EXC_ARR_PEN_PTD          ));
5571    WrtHrTrc('   bal_EXC_ARR_PEN_YTD:           '||to_char(bal_EXC_ARR_PEN_YTD          ));
5572    WrtHrTrc('   bal_EXC_ARR_RA_ITD:            '||to_char(bal_EXC_ARR_RA_ITD           ));
5573    WrtHrTrc('   bal_EXC_ARR_RA_PTD:            '||to_char(bal_EXC_ARR_RA_PTD           ));
5574    WrtHrTrc('   bal_EXC_ARR_RA_YTD:            '||to_char(bal_EXC_ARR_RA_YTD           ));
5575    WrtHrTrc('   bal_MED_CONTR_CMTD:            '||to_char(bal_MED_CONTR_CMTD           ));
5576    WrtHrTrc('   bal_MED_CONTR_CYTD:            '||to_char(bal_MED_CONTR_CYTD           ));
5577    WrtHrTrc('   bal_MED_CONTR_RUN:             '||to_char(bal_MED_CONTR_RUN            ));
5578    WrtHrTrc('   bal_MED_CONTR_PTD:             '||to_char(bal_MED_CONTR_PTD            ));
5579    WrtHrTrc('   bal_MED_CONTR_YTD:             '||to_char(bal_MED_CONTR_YTD            ));
5580    WrtHrTrc('   bal_MED_CNTRB_ABM_CMTD:        '||to_char(bal_MED_CNTRB_ABM_CMTD       ));
5581    WrtHrTrc('   bal_MED_CNTRB_ABM_CYTD:        '||to_char(bal_MED_CNTRB_ABM_CYTD       ));
5582    WrtHrTrc('   bal_MED_CNTRB_ABM_RUN:         '||to_char(bal_MED_CNTRB_ABM_RUN        ));
5583    WrtHrTrc('   bal_MED_CNTRB_ABM_PTD:         '||to_char(bal_MED_CNTRB_ABM_PTD        ));
5584    WrtHrTrc('   bal_MED_CNTRB_ABM_YTD:         '||to_char(bal_MED_CNTRB_ABM_YTD        ));
5585    WrtHrTrc('   bal_NET_PAY_RUN:               '||to_char(bal_NET_PAY_RUN              ));
5586    WrtHrTrc('   bal_NET_TXB_INC_CMTD:          '||to_char(bal_NET_TXB_INC_CMTD         ));
5587    WrtHrTrc('   bal_NET_PAYE_TXB_INC_CMTD:     '||to_char(bal_NET_PAYE_TXB_INC_CMTD    ));
5588 
5589    WrtHrTrc('   bal_PAYE_YTD:                  '||to_char(bal_PAYE_YTD                 ));
5590    WrtHrTrc('   bal_SITE_YTD:                  '||to_char(bal_SITE_YTD                 ));
5591    WrtHrTrc('   bal_TAX_YTD:                   '||to_char(bal_TAX_YTD                  ));
5592    WrtHrTrc('   bal_TX_ON_AB_PTD:              '||to_char(bal_TX_ON_AB_PTD             ));
5593    WrtHrTrc('   bal_TX_ON_AB_YTD:              '||to_char(bal_TX_ON_AB_YTD             ));
5594    WrtHrTrc('   bal_TX_ON_AP_PTD:              '||to_char(bal_TX_ON_AP_PTD             ));
5595    WrtHrTrc('   bal_TX_ON_AP_YTD:              '||to_char(bal_TX_ON_AP_YTD             ));
5596    WrtHrTrc('   bal_TX_ON_BP_PTD:              '||to_char(bal_TX_ON_BP_PTD             ));
5597    WrtHrTrc('   bal_TX_ON_BP_YTD:              '||to_char(bal_TX_ON_BP_YTD             ));
5598    WrtHrTrc('   bal_TX_ON_TA_PTD:              '||to_char(bal_TX_ON_TA_PTD             ));
5599    WrtHrTrc('   bal_TX_ON_TA_YTD:              '||to_char(bal_TX_ON_TA_YTD             ));
5600    WrtHrTrc('   bal_TX_ON_DR_PTD:              '||to_char(bal_TX_ON_DR_PTD             ));
5601    WrtHrTrc('   bal_TX_ON_DR_YTD:              '||to_char(bal_TX_ON_DR_YTD             ));
5602    WrtHrTrc('   bal_TX_ON_FB_PTD:              '||to_char(bal_TX_ON_FB_PTD             ));
5603    WrtHrTrc('   bal_TX_ON_FB_YTD:              '||to_char(bal_TX_ON_FB_YTD             ));
5604    WrtHrTrc('   bal_TX_ON_NI_PTD:              '||to_char(bal_TX_ON_NI_PTD             ));
5605    WrtHrTrc('   bal_TX_ON_NI_YTD:              '||to_char(bal_TX_ON_NI_YTD             ));
5606    WrtHrTrc('   bal_TX_ON_PO_PTD:              '||to_char(bal_TX_ON_PO_PTD             ));
5607    WrtHrTrc('   bal_TX_ON_PO_YTD:              '||to_char(bal_TX_ON_PO_YTD             ));
5608    WrtHrTrc('   bal_TX_ON_LS_PTD:              '||to_char(bal_TX_ON_LS_PTD             ));
5609    WrtHrTrc('   bal_TX_ON_RET_LS_PTD:          '||to_char(bal_TX_ON_RET_LS_PTD         ));
5610    /* NTG */
5611    WrtHrTrc('   bal_TX_ON_AP_NTG_PTD:          '||to_char(bal_TX_ON_AP_NTG_PTD         ));
5612    WrtHrTrc('   bal_TX_ON_AP_NTG_YTD:          '||to_char(bal_TX_ON_AP_NTG_YTD         ));
5613    WrtHrTrc('   bal_TX_ON_EE_DBT_NTG_PTD:      '||to_char(bal_TX_ON_EE_DBT_NTG_PTD     ));
5614    WrtHrTrc('   bal_TX_ON_EE_DBT_NTG_YTD:      '||to_char(bal_TX_ON_EE_DBT_NTG_YTD     ));
5615    /* End NTG */
5616    WrtHrTrc('   bal_TOT_INC_PTD:               '||to_char(bal_TOT_INC_PTD              ));
5617    WrtHrTrc('   bal_TOT_INC_YTD:               '||to_char(bal_TOT_INC_YTD              ));
5618    WrtHrTrc('   bal_TOT_NRFI_AN_INC_CMTD:      '||to_char(bal_TOT_NRFI_AN_INC_CMTD     ));
5619    WrtHrTrc('   bal_TOT_NRFI_AN_INC_CYTD:      '||to_char(bal_TOT_NRFI_AN_INC_CYTD     ));
5620    WrtHrTrc('   bal_TOT_NRFI_AN_INC_RUN:       '||to_char(bal_TOT_NRFI_AN_INC_RUN      ));
5621    WrtHrTrc('   bal_TOT_NRFI_AN_INC_PTD:       '||to_char(bal_TOT_NRFI_AN_INC_PTD      ));
5622    WrtHrTrc('   bal_TOT_NRFI_AN_INC_YTD:       '||to_char(bal_TOT_NRFI_AN_INC_YTD      ));
5623    WrtHrTrc('   bal_TOT_NRFI_INC_CMTD:         '||to_char(bal_TOT_NRFI_INC_CMTD        ));
5624    WrtHrTrc('   bal_TOT_NRFI_INC_CYTD:         '||to_char(bal_TOT_NRFI_INC_CYTD        ));
5625    WrtHrTrc('   bal_TOT_NRFI_INC_RUN:          '||to_char(bal_TOT_NRFI_INC_RUN         ));
5626    WrtHrTrc('   bal_TOT_NRFI_INC_PTD:          '||to_char(bal_TOT_NRFI_INC_PTD         ));
5627    WrtHrTrc('   bal_TOT_NRFI_INC_YTD:          '||to_char(bal_TOT_NRFI_INC_YTD         ));
5628    WrtHrTrc('   bal_TOT_RFI_AN_INC_CMTD:       '||to_char(bal_TOT_RFI_AN_INC_CMTD      ));
5629    WrtHrTrc('   bal_TOT_RFI_AN_INC_CYTD:       '||to_char(bal_TOT_RFI_AN_INC_CYTD      ));
5630    WrtHrTrc('   bal_TOT_RFI_AN_INC_RUN:        '||to_char(bal_TOT_RFI_AN_INC_RUN       ));
5631    WrtHrTrc('   bal_TOT_RFI_AN_INC_PTD:        '||to_char(bal_TOT_RFI_AN_INC_PTD       ));
5632    WrtHrTrc('   bal_TOT_RFI_AN_INC_YTD:        '||to_char(bal_TOT_RFI_AN_INC_YTD       ));
5633    WrtHrTrc('   bal_TOT_RFI_INC_CMTD:          '||to_char(bal_TOT_RFI_INC_CMTD         ));
5634    WrtHrTrc('   bal_TOT_RFI_INC_CYTD:          '||to_char(bal_TOT_RFI_INC_CYTD         ));
5635    WrtHrTrc('   bal_TOT_RFI_INC_RUN:           '||to_char(bal_TOT_RFI_INC_RUN          ));
5636    WrtHrTrc('   bal_TOT_RFI_INC_PTD:           '||to_char(bal_TOT_RFI_INC_PTD          ));
5637    WrtHrTrc('   bal_TOT_RFI_INC_YTD:           '||to_char(bal_TOT_RFI_INC_YTD          ));
5638    --NTG
5639    WrtHrTrc('   bal_TOT_RFI_EE_DBT_NTG_CMTD:   '||to_char(bal_TOT_RFI_EE_DBT_NTG_CMTD  ));
5640    WrtHrTrc('   bal_TOT_RFI_EE_DBT_NTG_CYTD:   '||to_char(bal_TOT_RFI_EE_DBT_NTG_CYTD  ));
5641    WrtHrTrc('   bal_TOT_RFI_EE_DBT_NTG_RUN:    '||to_char(bal_TOT_RFI_EE_DBT_NTG_RUN   ));
5642    WrtHrTrc('   bal_TOT_RFI_EE_DBT_NTG_PTD:    '||to_char(bal_TOT_RFI_EE_DBT_NTG_PTD   ));
5643    WrtHrTrc('   bal_TOT_RFI_EE_DBT_NTG_YTD:    '||to_char(bal_TOT_RFI_EE_DBT_NTG_YTD   ));
5644    WrtHrTrc('   bal_TOT_NRFI_EE_DBT_NTG_CMTD:  '||to_char(bal_TOT_NRFI_EE_DBT_NTG_CMTD ));
5645    WrtHrTrc('   bal_TOT_NRFI_EE_DBT_NTG_CYTD:  '||to_char(bal_TOT_NRFI_EE_DBT_NTG_CYTD ));
5646    WrtHrTrc('   bal_TOT_NRFI_EE_DBT_NTG_RUN:   '||to_char(bal_TOT_NRFI_EE_DBT_NTG_RUN  ));
5647    WrtHrTrc('   bal_TOT_NRFI_EE_DBT_NTG_PTD:   '||to_char(bal_TOT_NRFI_EE_DBT_NTG_PTD  ));
5648    WrtHrTrc('   bal_TOT_NRFI_EE_DBT_NTG_YTD:   '||to_char(bal_TOT_NRFI_EE_DBT_NTG_YTD  ));
5649    WrtHrTrc('   bal_TOT_SKL_ANN_INC_NTG_CMTD:  '||to_char(bal_TOT_SKL_ANN_INC_NTG_CMTD));
5650    -- End NTG
5651 
5652    WrtHrTrc('   bal_TOT_SEA_WRK_DYS_WRK_YTD:   '||to_char(bal_TOT_SEA_WRK_DYS_WRK_YTD  ));
5653    WrtHrTrc('   bal_TOT_SKL_ANN_INC_CMTD:      '||to_char(bal_TOT_SKL_ANN_INC_CMTD     ));
5654    WrtHrTrc('   bal_TOT_SKL_INC_CMTD:          '||to_char(bal_TOT_SKL_INC_CMTD         ));
5655    WrtHrTrc('   bal_GROSS_REMUNERATION_CMTD:   '||to_char(bal_GROSS_REMUNERATION_CMTD  ));
5656    WrtHrTrc('   bal_ANN_PAYMENTS_CMTD:         '||to_char(bal_ANN_PAYMENTS_CMTD        ));
5657    WrtHrTrc('   bal_TOT_TXB_INC_ITD:           '||to_char(bal_TOT_TXB_INC_ITD          ));
5658    WrtHrTrc('   bal_TOT_TXB_AB_CMTD:           '||to_char(bal_TOT_TXB_AB_CMTD          ));
5659    WrtHrTrc('   bal_TOT_TXB_AB_RUN:            '||to_char(bal_TOT_TXB_AB_RUN           ));
5660    WrtHrTrc('   bal_TOT_TXB_AB_PTD:            '||to_char(bal_TOT_TXB_AB_PTD           ));
5661    WrtHrTrc('   bal_TOT_TXB_AB_YTD:            '||to_char(bal_TOT_TXB_AB_YTD           ));
5662    WrtHrTrc('   bal_TOT_TXB_AP_CMTD:           '||to_char(bal_TOT_TXB_AP_CMTD          ));
5663    WrtHrTrc('   bal_TOT_TXB_AP_RUN:            '||to_char(bal_TOT_TXB_AP_RUN           ));
5664    WrtHrTrc('   bal_TOT_TXB_AP_PTD:            '||to_char(bal_TOT_TXB_AP_PTD           ));
5665    WrtHrTrc('   bal_TOT_TXB_AP_YTD:            '||to_char(bal_TOT_TXB_AP_YTD           ));
5666    WrtHrTrc('   bal_TOT_TXB_FB_CMTD:           '||to_char(bal_TOT_TXB_FB_CMTD          ));
5667    WrtHrTrc('   bal_TOT_TXB_FB_CYTD:           '||to_char(bal_TOT_TXB_FB_CYTD          ));
5668    WrtHrTrc('   bal_TOT_TXB_FB_RUN:            '||to_char(bal_TOT_TXB_FB_RUN           ));
5669    WrtHrTrc('   bal_TOT_TXB_FB_PTD:            '||to_char(bal_TOT_TXB_FB_PTD           ));
5670    WrtHrTrc('   bal_TOT_TXB_FB_YTD:            '||to_char(bal_TOT_TXB_FB_YTD           ));
5671    WrtHrTrc('   bal_TOT_TXB_NI_CMTD:           '||to_char(bal_TOT_TXB_NI_CMTD          ));
5672    WrtHrTrc('   bal_TOT_TXB_NI_CYTD:           '||to_char(bal_TOT_TXB_NI_CYTD          ));
5673    WrtHrTrc('   bal_TOT_TXB_NI_RUN:            '||to_char(bal_TOT_TXB_NI_RUN           ));
5674    WrtHrTrc('   bal_TOT_TXB_NI_PTD:            '||to_char(bal_TOT_TXB_NI_PTD           ));
5675    WrtHrTrc('   bal_TOT_TXB_NI_YTD:            '||to_char(bal_TOT_TXB_NI_YTD           ));
5676    WrtHrTrc('   bal_TOT_TXB_PO_CMTD:           '||to_char(bal_TOT_TXB_PO_CMTD          ));
5677    WrtHrTrc('   bal_TOT_TXB_PO_PTD:            '||to_char(bal_TOT_TXB_PO_PTD           ));
5678    WrtHrTrc('   bal_TOT_TXB_PO_YTD:            '||to_char(bal_TOT_TXB_PO_YTD           ));
5679    WrtHrTrc('   bal_TOT_TXB_TA_CMTD:           '||to_char(bal_TOT_TXB_TA_CMTD          ));
5680    WrtHrTrc('   bal_TOT_TXB_TA_CYTD:           '||to_char(bal_TOT_TXB_TA_CYTD          ));
5681    WrtHrTrc('   bal_TOT_TXB_TA_PTD:            '||to_char(bal_TOT_TXB_TA_PTD           ));
5682    WrtHrTrc('   bal_TOT_TXB_TA_YTD:            '||to_char(bal_TOT_TXB_TA_YTD           ));
5683    /* NTG */
5684    WrtHrTrc('   bal_TOT_TXB_AP_NTG_CMTD:       '||to_char(bal_TOT_TXB_AP_NTG_CMTD      ));
5685    WrtHrTrc('   bal_TOT_TXB_AP_NTG_RUN:        '||to_char(bal_TOT_TXB_AP_NTG_RUN       ));
5686    WrtHrTrc('   bal_TOT_TXB_AP_NTG_PTD:        '||to_char(bal_TOT_TXB_AP_NTG_PTD       ));
5687    WrtHrTrc('   bal_TOT_TXB_AP_NTG_YTD:        '||to_char(bal_TOT_TXB_AP_NTG_YTD       ));
5688    WrtHrTrc('   bal_TOT_TXB_EE_DBT_NTG_CMTD:   '||to_char(bal_TOT_TXB_EE_DBT_NTG_CMTD  ));
5689    WrtHrTrc('   bal_TOT_TXB_EE_DBT_NTG_RUN:    '||to_char(bal_TOT_TXB_EE_DBT_NTG_RUN   ));
5690    WrtHrTrc('   bal_TOT_TXB_EE_DBT_NTG_PTD:    '||to_char(bal_TOT_TXB_EE_DBT_NTG_PTD   ));
5691    WrtHrTrc('   bal_TOT_TXB_EE_DBT_NTG_YTD:    '||to_char(bal_TOT_TXB_EE_DBT_NTG_YTD   ));
5692    /* End NTG */
5693 
5694    hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',1);
5695 
5696 -- Initialise Package Globals
5697 -- Contexts
5698    con_ASG_ACT_ID := ASSIGNMENT_ACTION_ID;
5699    con_ASG_ID     := ASSIGNMENT_ID;
5700    con_PRL_ACT_ID := PAYROLL_ACTION_ID;
5701    con_PRL_ID     := PAYROLL_ID;
5702 
5703    hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',2);
5704 
5705 -- Tax Override Validation
5706 --
5707    /*
5708    V = Amount
5709    P = Percentage
5710    S = Force Site Calculation
5711    */
5712 
5713 --  Added for Bug 9369895
5714 --  Retrieve the Pension Basis
5715 --  1 : Fixed Percentage of Total Package
5716 --  2 : Percentage of Specific Income
5717 --  If ZA_SPECIFIC_INFO is not filled for an assignment, we default it to Percentage of Specific Income
5718     begin
5719        select paei.AEI_INFORMATION8
5720        into   trc_PenBasis
5721        from   per_assignment_extra_info  paei
5722        where  paei.assignment_id    = con_ASG_ID
5723        and    paei.information_type = 'ZA_SPECIFIC_INFO';
5724        hr_utility.set_location('Pension Basis: '||to_char(trc_PenBasis),2);
5725     exception
5726         when others then
5727            trc_PenBasis:= 2;
5728            hr_utility.set_location('Pension Basis: '||to_char(trc_PenBasis),3);
5729     end;
5730 --  Tax Status Validation
5731 --
5732    /*
5733    A = Normal
5734    B = Provisional
5735    C = Directive Amount
5736    D = Directive Percentage
5737    E = Close Corporation
5738    F = Temporary Worker/Student
5739    G = Seasonal Worker
5740    H = Zero Tax
5741    J = Personal Service Company
5742    K = Personal Service Trust
5743    L = Labour Broker
5744    M = Private Director
5745    N = Private Director with Directive Amount
5746    P = Private Director with Directive Percentage
5747    Q = Private Director Zero Tax
5748    */
5749    hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',3);
5750 
5751 -- C = Directive Amount
5752 -- N = Private Director with Directive Amount
5753 --
5754    IF dbi_TX_STA IN ('C','N') THEN
5755       IF trc_OvrTxCalc AND (trc_OvrTyp = 'S' OR trc_OvrTyp = 'P') THEN
5756          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',4);
5757          IF xpt_Msg = 'No Error' THEN
5758             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',5);
5759             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_C';
5760          END IF;
5761          RAISE xpt_E;
5762          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',6);
5763       ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
5764          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',7);
5765          trc_CalTyp := 'OvrCalc';
5766          trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
5767       -- Check Directive Number First
5768       ELSIF dbi_TX_DIR_NUM = 'NULL' THEN
5769          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',8);
5770          IF xpt_Msg = 'No Error' THEN
5771             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',9);
5772             xpt_Msg := 'PY_ZA_TX_DIR_NUM';
5773          END IF;
5774          RAISE xpt_E;
5775       -- Check that directive value is filled in
5776       ELSIF dbi_TX_DIR_VAL = -1 THEN
5777          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',10);
5778          IF xpt_Msg = 'No Error' THEN
5779             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',11);
5780             xpt_Msg := 'PY_ZA_TX_DIR_MONT';
5781          END IF;
5782          RAISE xpt_E;
5783       ELSE
5784          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',12);
5785          trc_CalTyp := 'NoCalc';
5786          -- Liability = entered value
5787          trc_LibFpNI := dbi_TX_DIR_VAL;
5788          -- Standard NetPay Validation
5789          py_za_tx_utl_01032011.ValidateTaxOns;
5790       END IF;
5791 -- D = Directive Percentage
5792 -- P = Private Director wth Directive Percentage
5793 --
5794    ELSIF dbi_TX_STA IN ('D','P') THEN
5795       IF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
5796          IF xpt_Msg = 'No Error' THEN
5797             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',13);
5798             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_DEF';
5799          END IF;
5800          RAISE xpt_E;
5801          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',14);
5802       ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
5803          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',15);
5804          trc_CalTyp := 'OvrCalc';
5805          trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
5806       ELSE
5807          IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
5808             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',16);
5809             trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
5810             -- Percentage taken into account in py_za_tx_utl_01032011.TaxLiability
5811          END IF;
5812          -- Check Directive Number First
5813          IF dbi_TX_DIR_NUM = 'NULL' THEN
5814             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',17);
5815             IF xpt_Msg = 'No Error' THEN
5816                hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',18);
5817                xpt_Msg := 'PY_ZA_TX_DIR_NUM';
5818             END IF;
5819             RAISE xpt_E;
5820          -- Check that directive value is filled in
5821          ELSIF dbi_TX_DIR_VAL = -1 THEN
5822             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',19);
5823             IF xpt_Msg = 'No Error' THEN
5824                hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',20);
5825                xpt_Msg := 'PY_ZA_TX_DIR_PERC';
5826             END IF;
5827             RAISE xpt_E;
5828          ELSE
5829             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',21);
5830             DirCalc;
5831          END IF;
5832       END IF;
5833 -- E = Close Corporation
5834 -- F = Temporary Worker/Student
5835 -- J = Personal Service Company
5836 -- K = Personal Service Trust
5837 -- L = Labour Broker
5838 --
5839    ELSIF dbi_TX_STA IN ('E','F','J','K','L') THEN
5840       IF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
5841          IF xpt_Msg = 'No Error' THEN
5842             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',22);
5843             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_DEF';
5844          END IF;
5845          RAISE xpt_E;
5846          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',23);
5847       ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
5848          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',24);
5849          trc_CalTyp := 'OvrCalc';
5850          trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
5851       ELSE
5852          IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
5853             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',25);
5854             trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
5855             -- Percentage taken into account in py_za_tx_utl_01032011.TaxLiability
5856          END IF;
5857          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',26);
5858          -- Simply Execute the Directive Calculation
5859          DirCalc;
5860       END IF;
5861 -- G = Seasonal Worker
5862 --
5863    ELSIF dbi_TX_STA = 'G' THEN
5864       IF trc_OvrTxCalc AND (trc_OvrTyp = 'S' OR trc_OvrTyp = 'P') THEN
5865          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',27);
5866          IF xpt_Msg = 'No Error' THEN
5867             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',28);
5868             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_G';
5869          END IF;
5870          RAISE xpt_E;
5871          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',29);
5872       -- Check that seasonal worker days worked is filled in
5873       ELSIF dbi_SEA_WRK_DYS_WRK = 0 THEN
5874          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',30);
5875          IF xpt_Msg = 'No Error' THEN
5876             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',31);
5877             xpt_Msg := 'PY_ZA_TX_SEA_WRK_DYS';
5878          END IF;
5879          RAISE xpt_E;
5880       ELSE
5881          IF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
5882             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',32);
5883             trc_CalTyp := 'OvrCalc';
5884             trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
5885             py_za_tx_utl_01032011.SetRebates;
5886          ELSE
5887             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',33);
5888             SeaCalc;
5889          END IF;
5890       END IF;
5891 -- A = Normal
5892 -- B = Provisional
5893 -- M = Private Director
5894 --
5895    ELSIF dbi_TX_STA IN ('A','B','M') THEN
5896       IF dbi_TX_STA <> 'M' THEN
5897          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',34);
5898          -- Deemed Remuneration only applicable to 'M'
5899          bal_DIR_DMD_RMN_ITD := 0;
5900       END IF;
5901 
5902       IF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
5903          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',35);
5904          trc_CalTyp := 'OvrCalc';
5905          trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
5906          py_za_tx_utl_01032011.SetRebates;
5907          trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032011.DaysWorked;
5908       ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
5909          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',36);
5910          trc_CalTyp := 'OvrCalc';
5911          trc_OvrWrn := 'WARNING: Tax Override - Forced Site Calculation';
5912          -- Force the Site Calculation
5913          SitCalc;
5914          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',37);
5915       ELSE
5916          IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
5917             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',38);
5918             trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
5919             -- Percentage taken into account in py_za_tx_utl_01032011.TaxLiability
5920          END IF;
5921 
5922          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',39);
5923          IF py_za_tx_utl_01032011.LatePayPeriod THEN
5924             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',40);
5925             LteCalc;
5926          -- Is this a SITE Period?
5927          ELSIF py_za_tx_utl_01032011.EmpTermPrePeriod THEN
5928             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',41);
5929             SitCalc;
5930          ELSIF py_za_tx_utl_01032011.LstPeriod OR py_za_tx_utl_01032011.EmpTermInPeriod THEN
5931             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',42);
5932             IF py_za_tx_utl_01032011.PreErnPeriod THEN
5933                hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',43);
5934                --When a YtdCalc or CalCalc would be performed,
5935                --the system must do a Bascalc if the method is non-cumulative
5936                IF (dbi_TX_MTD = 'N') then
5937                   BasCalc;
5938                ELSE
5939                   YtdCalc;
5940                END IF;
5941             ELSE
5942                hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',44);
5943                SitCalc;
5944             END IF;
5945          ElSE
5946             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',45);
5947             -- The employee has NOT been terminated!
5948             IF py_za_tx_utl_01032011.PreErnPeriod THEN
5949                hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',46);
5950                --When a YtdCalc or CalCalc would be performed,
5951                --the system must do a Bascalc if the method is non-cumulative
5952                IF (dbi_TX_MTD = 'N') then
5953                   BasCalc;
5954                ELSE
5955                   YtdCalc;
5956                END IF;
5957            -- Bug 4346955 Bug 5148830
5958           /*  ELSIF dbi_ZA_ASG_TX_RTR_PRD = 'Y' THEN
5959                hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',47);
5960                IF dbi_ZA_ASG_TAX_RTR_RSLTS = 'Y' THEN
5961                   hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',48);
5962                   SitCalc;
5963                ELSIF py_za_tx_utl_01032011.NegPtd THEN
5964                   hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',49);
5965                   SitCalc;
5966                ELSE
5967                   hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',50);
5968                   NorCalc;
5969                END IF; */
5970             ELSIF py_za_tx_utl_01032011.NegPtd THEN
5971                hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',51);
5972                SitCalc;
5973             ELSE
5974                hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',52);
5975                NorCalc;
5976             END IF;
5977          END IF;
5978       END IF;
5979 -- H = Zero Tax
5980 -- Q = Private Director Zero Tax
5981 --
5982    ELSIF dbi_TX_STA IN ('H','Q') THEN
5983       IF trc_OvrTxCalc THEN
5984          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',53);
5985          IF xpt_Msg = 'No Error' THEN
5986             hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',54);
5987             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_H';
5988          END IF;
5989          RAISE xpt_E;
5990       ELSE
5991          hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',55);
5992          trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
5993          trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
5994          trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
5995          trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
5996          trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
5997          trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
5998          trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
5999       END IF;
6000    ELSE
6001       hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',56);
6002           -- Bug 8691928
6003           -- Changed the way of raising exception so as to avoid
6004           -- the text from being overwritten in exception block
6005           xpt_Msg := 'Invalid Tax Status' ;
6006           RAISE xpt_E;
6007    END IF;
6008 
6009    hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',57);
6010 
6011 -- Post Calculation Steps
6012 --
6013    py_za_tx_utl_01032011.SitPaySplit;
6014 
6015    hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',58);
6016 
6017 -- Execute the Arrear Processing
6018 --
6019    IF py_za_tx_utl_01032011.SitePeriod THEN
6020       hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',59);
6021       py_za_tx_utl_01032011.ArrearExcess;
6022    END IF;
6023 
6024    hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',60);
6025 
6026 -- Calculate Net Taxable Income
6027 --
6028    NetTxbIncCalc;
6029 
6030    hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',61);
6031 --
6032 -- Tax on Lump Sums
6033 --
6034    -- If tax on lump sums has already been calculated
6035    -- do not return the values again by resetting the
6036    -- dbi's to their default values
6037    --
6038 
6039 -- Fix for Bug# 12351345 starts
6040 
6041 -- Added additional check in case the ptd is getting 0 value with multiple runs.
6042 
6043 hr_utility.set_location('bal_TX_ON_LS_PTD' || bal_TX_ON_LS_PTD, 1);
6044 hr_utility.set_location('con_ASG_ACT_ID' || con_ASG_ACT_ID, 1);
6045 
6046    If bal_TX_ON_LS_PTD = 0 Then
6047 
6048 -- Query to check if there are multiple runs which sets the ptd as zero
6049 
6050      Select count(*)
6051          into  l_lmsm_proc_cnt
6052          from
6053                pay_balance_feeds_f               FEED,
6054                pay_run_result_values             TARGET,
6055                pay_run_results                   RR,
6056                pay_payroll_actions               PACT,
6057                pay_assignment_actions            ASSACT,
6058                pay_payroll_actions               BACT,
6059                pay_assignment_actions            BAL_ASSACT
6060          where FEED.BALANCE_TYPE_ID    = (
6061                    select BALANCE_TYPE_ID
6062                    from   pay_balance_types
6063                    where  balance_name= 'Tax on Lump Sums'
6064                    and    legislation_code = 'ZA') -- Balance_type_id for Tax on Lump Sums
6065            and BAL_ASSACT.assignment_action_id = con_ASG_ACT_ID
6066            and BAL_ASSACT.payroll_action_id    = BACT.payroll_action_id
6067            and FEED.input_value_id             = TARGET.input_value_id
6068            and TARGET.run_result_id            = RR.run_result_id
6069            and RR.assignment_action_id         = ASSACT.assignment_action_id
6070            and ASSACT.payroll_action_id        = PACT.payroll_action_id
6071            and PACT.effective_date       between FEED.effective_start_date
6072                                              and FEED.effective_end_date
6073            and RR.status                      in ('P','PA')
6074            and PACT.time_period_id             = BACT.time_period_id
6075            and ASSACT.action_sequence         <= BAL_ASSACT.action_sequence
6076            and ASSACT.assignment_id            = BAL_ASSACT.assignment_id;
6077 
6078            hr_utility.set_location('l_lmsm_proc_cnt' || l_lmsm_proc_cnt, 1);
6079 
6080        if l_lmsm_proc_cnt > 0 then
6081        dbi_ZA_LS_DIR_NUM := 'To Be Advised';
6082        dbi_ZA_LS_DIR_VAL := -1;
6083       end if;
6084    else
6085 
6086       dbi_ZA_LS_DIR_NUM := 'To Be Advised';
6087       dbi_ZA_LS_DIR_VAL := -1;
6088 
6089    end if;
6090 
6091 
6092 
6093 /*
6094    IF bal_TX_ON_LS_PTD <> 0 THEN
6095       dbi_ZA_LS_DIR_NUM := 'To Be Advised';
6096       dbi_ZA_LS_DIR_VAL := -1;
6097    END IF;
6098 */
6099 -- Setup the Out Parameters
6100 --
6101 
6102 -- Tax on Retirement Fund Lump Sums
6103 --
6104    -- If tax on retirement fund lump sums has already been calculated
6105    -- do not return the values again by resetting the
6106    -- dbi's to their default values
6107    --
6108 
6109 -- Added additional check in case the ptd is getting 0 value with multiple runs.
6110 
6111 hr_utility.set_location('bal_TX_ON_RET_LS_PTD ' || bal_TX_ON_RET_LS_PTD , 2);
6112 hr_utility.set_location('con_ASG_ACT_ID' || con_ASG_ACT_ID, 2);
6113 
6114    If bal_TX_ON_RET_LS_PTD = 0 Then
6115 
6116 -- Query to check if there are multiple runs which sets the ptd as zero
6117 
6118       Select count(*)
6119          into  l_ret_lmsm_proc_cnt
6120          from
6121                pay_balance_feeds_f               FEED,
6122                pay_run_result_values             TARGET,
6123                pay_run_results                   RR,
6124                pay_payroll_actions               PACT,
6125                pay_assignment_actions            ASSACT,
6126                pay_payroll_actions               BACT,
6127                pay_assignment_actions            BAL_ASSACT
6128          where FEED.BALANCE_TYPE_ID    = (
6129                    select BALANCE_TYPE_ID
6130                    from   pay_balance_types
6131                    where  balance_name= 'Tax on Retirement Fund Lump Sums'
6132                    and    legislation_code = 'ZA') -- Balance_type_id for Tax on Retirement Fund Lump Sums
6133            and BAL_ASSACT.assignment_action_id = con_ASG_ACT_ID
6134            and BAL_ASSACT.payroll_action_id    = BACT.payroll_action_id
6135            and FEED.input_value_id             = TARGET.input_value_id
6136            and TARGET.run_result_id            = RR.run_result_id
6137            and RR.assignment_action_id         = ASSACT.assignment_action_id
6138            and ASSACT.payroll_action_id        = PACT.payroll_action_id
6139            and PACT.effective_date       between FEED.effective_start_date
6140                                              and FEED.effective_end_date
6141            and RR.status                      in ('P','PA')
6142            and PACT.time_period_id             = BACT.time_period_id
6143            and ASSACT.action_sequence         <= BAL_ASSACT.action_sequence
6144            and ASSACT.assignment_id            = BAL_ASSACT.assignment_id;
6145 
6146        hr_utility.set_location('l_ret_lmsm_proc_cnt' || l_ret_lmsm_proc_cnt, 2);
6147 
6148        if l_ret_lmsm_proc_cnt > 0 then
6149        dbi_ZA_RET_LS_DIR_NUM := 'To Be Advised';
6150        dbi_ZA_RET_LS_DIR_VAL := 0;
6151       end if;
6152 
6153    else
6154 
6155       dbi_ZA_RET_LS_DIR_NUM := 'To Be Advised';
6156       dbi_ZA_RET_LS_DIR_VAL := 0;
6157 
6158    end if;
6159 
6160 /*   IF bal_TX_ON_RET_LS_PTD <> 0 THEN
6161       dbi_ZA_RET_LS_DIR_NUM := 'To Be Advised';
6162       dbi_ZA_RET_LS_DIR_VAL := 0;
6163    END IF;
6164 */
6165 -- Fix for Bug# 12351345 ends
6166 
6167 -- Setup the Out Parameters
6168 
6169    -- Messages
6170    p_LibWrn := trc_LibWrn;   -- Liability Warning
6171    p_OvrWrn := trc_OvrWrn;   -- Override Warning
6172 
6173    -- Pay Values
6174    trc_PayValSD := ( trc_LibFpNI
6175                    + trc_LibFpFB
6176                    + trc_LibFpTA
6177                    + trc_LibFpBP
6178                    + trc_LibFpAB
6179                    + trc_LibFpAP
6180                    + trc_LibFpPO
6181                    );
6182    trc_PayValEC := trc_LibFpDR;
6183 
6184 
6185    hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',62);
6186 
6187    -- Tax On's
6188    p_LibFpDR  := trc_LibFpDR;
6189    p_LibFpNI  := trc_LibFpNI;
6190    p_LibFpFB  := trc_LibFpFB;
6191    p_LibFpTA  := trc_LibFpTA;
6192    p_LibFpBP  := trc_LibFpBP;
6193    p_LibFpAB  := trc_LibFpAB;
6194    p_LibFpAP  := trc_LibFpAP;
6195    p_LibFpPO  := trc_LibFpPO;
6196    p_PayValSD := trc_PayValSD;
6197    p_PayValEC := trc_PayValEC;
6198    -- NTG
6199    p_LibFpNtgAP     := trc_LibFpNtgAP;
6200    p_LibFpNtgEEDbt  := trc_LibFpNtgEEDbt;
6201    p_LibFpNtg       := trc_LibFpNtgAP + trc_LibFpNtgEEDbt;
6202    -- End NTG
6203 
6204 
6205    hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',63);
6206 
6207    -- Indicators, Splits and Updates
6208    p_PayeVal              := trc_PayeVal;
6209    p_SiteVal              := trc_SiteVal;
6210    p_It3Ind               := trc_It3Ind;
6211    p_PfUpdFig             := trc_PfUpdFig;
6212    p_RaUpdFig             := trc_RaUpdFig;
6213    p_OUpdFig              := trc_OUpdFig;
6214    p_NtiUpdFig            := trc_NtiUpdFig;
6215    p_NPtiUpdFig           := trc_NPtiUpdFig;  --EMP201
6216 
6217    hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',64);
6218 
6219    p_LSDirNum  := dbi_ZA_LS_DIR_NUM;
6220    p_LSDirVal  := dbi_ZA_LS_DIR_VAL;
6221    p_RETLSDirNum  := dbi_ZA_RET_LS_DIR_NUM;
6222    p_RETLSDirVal  := dbi_ZA_RET_LS_DIR_VAL;
6223 
6224 
6225 -- Execute The Tax Trace
6226 --
6227    py_za_tx_utl_01032011.Trace;
6228 
6229    hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',65);
6230 
6231 -- Clear Globals
6232 --
6233    py_za_tx_utl_01032011.ClearGlobals;
6234 
6235    hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',66);
6236 
6237 -- End off Trace File
6238    WrtHrTrc('------------------------------------------------------------');
6239    WrtHrTrc('--                End of Tax Trace File                   --');
6240    WrtHrTrc('------------------------------------------------------------');
6241    WrtHrTrc('                             --                             ');
6242 
6243 -- Call hr_utility stop procedure
6244    py_za_tx_utl_01032011.StopHrTrace;
6245 
6246   --dbms_debug.debug_off;
6247 
6248    RETURN l_Dum;
6249 
6250 EXCEPTION
6251    WHEN xpt_FxdPrc THEN
6252       hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',67);
6253       WrtHrTrc('Sql error msg: Fixed Percentage was not entered');
6254       py_za_tx_utl_01032011.StopHrTrace;
6255       hr_utility.set_message(801, 'Fixed Percentage not entered');
6256       py_za_tx_utl_01032011.ClearGlobals;
6257       hr_utility.raise_error;
6258    WHEN xpt_E  THEN
6259       hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',68);
6260       WrtHrTrc('xpt_Msg: '||xpt_Msg);
6261       py_za_tx_utl_01032011.StopHrTrace;
6262       hr_utility.set_message(801, xpt_Msg);
6263       py_za_tx_utl_01032011.ClearGlobals;
6264       hr_utility.raise_error;
6265    WHEN OTHERS THEN
6266       hr_utility.set_location('py_za_tx_01032011.ZaTx_01032011',69);
6267       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
6268       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
6269       py_za_tx_utl_01032011.StopHrTrace;
6270       hr_utility.set_message(801, 'ZaTx_01032011: '||TO_CHAR(SQLCODE));
6271       py_za_tx_utl_01032011.ClearGlobals;
6272       hr_utility.raise_error;
6273 END ZaTx_01032011;
6274 
6275 END PY_ZA_TX_01032011;