DBA Data[Home] [Help]

PACKAGE BODY: APPS.PY_ZA_TX_01032009

Source


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