DBA Data[Home] [Help]

PACKAGE BODY: APPS.PY_ZA_TX_01032000

Source


1 PACKAGE BODY py_za_tx_01032000 AS
2 /* $Header: pyzat002.pkb 120.2 2005/06/28 00:10:09 kapalani noship $ */
3 /* Copyright (c) Oracle Corporation 1999. All rights reserved. */
4 /*
5    PRODUCT
6       Oracle Payroll - ZA Localisation Tax Module
7 
8    NAME
9       py_za_tx_01032000.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_01032000
19       ZaTxGlb_01032000
20       ZaTxDbi_01032000
21       ZaTxBal1_01032000
22       ZaTxBal2_01032000
23       ZaTxBal3_01032000
24       ZaTx_01032000
25 
26    PRIVATE FUNCTIONS
27       <none>
28 
29 
30    PRIVATE PROCEDURES
31       NetTxbIncCalc
32          Procedure to calculate a Net Taxable Income figure used
33          to properly calculate the Skills Development Levy
34       LteCalc
35          A main tax calculation.
36          For a complete description see the tax module design document.
37       SeaCalc
38          A main tax calculation.
39          For a complete description see the tax module design document.
40       SitCalc
41          A main tax calculation.
42          For a complete description see the tax module design document.
43       DirCalc
44          A main tax calculation.
45          For a complete description see the tax module design document.
46       BasCalc
47          A main tax calculation.
48          For a complete description see the tax module design document.
49       CalCalc
50          A main tax calculation.
51          For a complete description see the tax module design document.
52       YtdCalc
53          A main tax calculation.
54          For a complete description see the tax module design document.
55       NorCalc
56          A main tax calculation.
57          For a complete description see the tax module design document.
58 
59    NOTES
60       .
61 
62    MODIFICATION HISTORY
63       Person      Date(DD-MM-YYYY)   Version   Comments
64       ---------   ----------------   -------   ---------------------------------------------
65       A. Mahanty  14/04/2005         115.4     Bug 3491357 :BRA Enhancement
66                                                Balance Value retrieval modified.
67       J.N. Louw   17/01/2001         110.13    Added Negative Check Category
68                                                   Calculation Logic - AB/AP
69       J.N. Louw   13/12/2000         110.12    Upped Header Ver for Patch
70       J.N. Louw   06/12/2000         110.11    Added SetRebates procedure call
71                                                Modified ZaTx_01032000 with new
72                                                   logic
73       L.J. Kloppers  22-11-2000      115.1     Changed per_time_periods.attribute1
74                                                to per_time_periods.prd_information1
75       J.N. Louw   28/09/2000         110.10    Check for negative dbi_TX_DIR_VAL
76                                                   dbi_ZA_TX_YR_STRT - 1 for CalCalc
77                                                Updated SeaCalc
78                                                   Removed Tax on Public Office
79                                                   Fixed Cascading Bug
80                                                Override Functionality
81                                                Added hr_utility trace
82                                                Moved private functions and
83                                                 procedures to utility package
84       J.N. Louw   12/04/2000         110.9     Added Calendar Month to Date
85                                                 Balances to cater for the
86                                                 calculation of Net Taxable Income
87                                                 Used in the calculation of the
88                                                 Skills Development Levy
89       J.N. Louw   16-03-2000         110.8     bal_TXB_SUBS* deleted:
90                                                 Subsistence Allowance change
91       J.N. Louw   06-03-2000         110.7     SitePayeSplit for 'G'
92                                                 Added balance:
93                                                 Total Seasonal Workers Days
94                                                   Worked:
95                                                   bal_TOT_SEA_WRK_DYS_WRK
96                                               trc_MsgTxStatus Now Error State:
97                                                 FATAL error level
98                                               trc_MsgTxStatus removed -
99                                                 replaced by utility msg
100                                                 in FND_NEW_MESSAGES -
101                                                 Fatal message - error state
102       J.N. Louw   17-02-2000         110.6     Added LteCalc - Late Payments
103                                               Merged and Expanded
104                                               py_za_tx_utl_01032000.TrvAllYtd
105                                                 and py_za_tx_utl_01032000.TrvAllCal into
106                                                 py_za_tx_utl_01032000.TrvAll
107                                               Created py_za_tx_utl_01032000.GlbVal function
108                                               Created py_za_tx_utl_01032000.LatePayPeriod function
109                                               Updated ZaTx_01032000 with
110                                                 Late Payments checks
111                                               Updated py_za_tx_utl_01032000.Abatements with
112                                                 Late Payments checks
113                                               trc_SitFactor now defaults
114                                                 to 1(One)
115                                               Updated Balance Functions
116                                                 with new balances and
117                                                 re-ordered
118                                               Fixed Excess Arrear Carryover
119                                               Fixed 'G' py_za_tx_utl_01032000.SitPaySplit
120                                               c/p_PAYE_PTD,p_SITE_PTD,
121                                                 bal_PAYE_PTD,bal_SITE_PTD
122                                                /p_PAYE_YTD,p_SITE_YTD,
123                                                 bal_PAYE_YTD,bal_SITE_YTD
124                                               Updated py_za_tx_utl_01032000.SitPaySplit:
125                                                 Reset SITE in case of
126                                                 directive status(C,D,E,F)
127       J.N. Louw   09-02-2000         110.5     Fixed 65 Rebate and Threshold
128                                                 Check
129                                               Altered Threshold Validation:
130                                                 NorCalc, SitCalc
131                                                 Tax on ... Refund
132                                               Altered Ytd Income Validation:
133                                                 DirCalc, NorCalc, SitCalc
134                                                 Tax on ... Refund
135                                               Altered ZaTx_01032000:
136                                                 Tax Status Validation
137                                               Altered py_za_tx_utl_01032000.NpVal:
138                                                 Override of Liability
139       J.N. Louw   02-02-2000         110.4     Added
140                                                py_za_tx_utl_01032000.PreErnPeriod Function
141                                               Addded Balance Feed Functionality
142                                                 for the Total Taxable Income
143                                                 balance
144                                               bal_PRCH_ANU_TXB_RFI_RUN
145                                               Added bal_PAYE_PTD,bal_SITE_PTD
146                                               Fixed BasCalc
147                                               Added py_za_tx_utl_01032000.LstPeriod
148                                               ,py_za_tx_utl_01032000.EmpTermInPeriod,
149                                               py_za_tx_utl_01032000.EmpTermPrePeriod Functions
150                                               Removed TxbIncYtd check in
151                                                 SitCalc
152                                               Fixed De-annualisation of Public
153                                                 Office Allowance - SitCalc,
154                                                 SeaCalc
155       J.N. Louw   20-01-2000         110.3     Fixed bug on py_za_tx_utl_01032000.NpVal
156                                                when Net Pay
157                                                 is zero
158       J.N. Louw   14-01-2000         110.2     Removed Tot RFI vs
159                                                 Taxable Income Check from
160                                                 abatements calculation
161       J.N. Louw   09-12-1999         110.1     Arrear Excess Processing
162       J.N. Louw   13-09-1999         110.0     First Created
163 */
164 
165 
166 
167 
168 /* PACKAGE BODY */
169 
170 PROCEDURE NetTxbIncCalc AS
171 
172    -- Variable Declaration
173    nti_CurMthStrtDte DATE;
174    nti_CurMthEndDte  DATE;
175    nti_SitFactor     NUMBER;
176    nti_PerTypInc     NUMBER(15,2) DEFAULT 0;
177    nti_PerTypErn     NUMBER(15,2) DEFAULT 0;
178    nti_AnnTypErn     NUMBER(15,2) DEFAULT 0;
179    nti_PerPenFnd     NUMBER(15,2) DEFAULT 0;
180    nti_PerRfiCon     NUMBER(15,2) DEFAULT 0;
181    nti_PerPenFndMax  NUMBER(15,2) DEFAULT 0;
182    nti_PerPenFndAbm  NUMBER(15,2) DEFAULT 0;
183    nti_AnnPenFnd     NUMBER(15,2) DEFAULT 0;
184    nti_AnnRfiCon     NUMBER(15,2) DEFAULT 0;
185    nti_AnnPenFndMax  NUMBER(15,2) DEFAULT 0;
186    nti_AnnPenFndAbm  NUMBER(15,2) DEFAULT 0;
187    nti_ArrPenFnd     NUMBER(15,2) DEFAULT 0;
188    nti_ArrPenFndAbm  NUMBER(15,2) DEFAULT 0;
189    nti_RetAnu        NUMBER(15,2) DEFAULT 0;
190    nti_NrfiCon       NUMBER(15,2) DEFAULT 0;
191    nti_RetAnuMax     NUMBER(15,2) DEFAULT 0;
192    nti_RetAnuAbm     NUMBER(15,2) DEFAULT 0;
193    nti_ArrRetAnu     NUMBER(15,2) DEFAULT 0;
194    nti_ArrRetAnuAbm  NUMBER(15,2) DEFAULT 0;
195    nti_MedAidAbm     NUMBER(15,2) DEFAULT 0;
196    nti_PerTotAbm     NUMBER(15,2) DEFAULT 0;
197    nti_AnnTotAbm     NUMBER(15,2) DEFAULT 0;
198    nti_TxbPerTypInc  NUMBER(15,2) DEFAULT 0;
199    nti_TxbAnnTypInc  NUMBER(15,2) DEFAULT 0;
200    nti_NetPerTxbInc  NUMBER(15,2) DEFAULT 0;
201    nti_NetAnnTxbInc  NUMBER(15,2) DEFAULT 0;
202    l_65Year          DATE;
203 
204 BEGIN
205    hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',1);
206 -- Calculate the Current Effective Calendar Month to Date Start Date
207 --
208    SELECT trunc(dbi_SES_DTE,'Month')
209      INTO nti_CurMthStrtDte
210      FROM dual;
211 
212    hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',2);
213 
214 -- Calculate the Current Effective Calendar Month to Date End Date
215 --
216    SELECT last_day(dbi_SES_DTE)
217      INTO nti_CurMthEndDte
218      FROM dual;
219 
220    hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',3);
221 
222 -- Calculate Site Factor
223 --
224    -- Based on the number of days in the calendar year over days in the calendar month
225    nti_SitFactor := dbi_ZA_DYS_IN_YR / (nti_CurMthEndDte - nti_CurMthStrtDte + 1);
226    hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',4);
227    py_za_tx_utl_01032000.WriteHrTrace('nti_CurMthEndDte: '||to_char(nti_CurMthEndDte,'DD/MM/YYYY'));
228    py_za_tx_utl_01032000.WriteHrTrace('nti_CurMthStrtDte: '||to_char(nti_CurMthStrtDte,'DD/MM/YYYY'));
229 
230 -- Calculate the Taxable Portion of the Not-Fully Taxable Income Balances
231 --
232    bal_TA_RFI_CMTD := bal_TA_RFI_CMTD * glb_ZA_TRV_ALL_TX_PRC / 100;
233    bal_TA_NRFI_CMTD := bal_TA_NRFI_CMTD * glb_ZA_TRV_ALL_TX_PRC / 100;
234 
235    bal_PO_RFI_CMTD := bal_PO_RFI_CMTD * glb_ZA_PBL_TX_PRC / 100;
236    bal_PO_NRFI_CMTD := bal_PO_NRFI_CMTD * glb_ZA_PBL_TX_PRC / 100;
237 
238 -- Sum Period Type Income Calendar Month to Date Balances
239 --
240    nti_PerTypInc :=
241       ( bal_AST_PRCHD_RVAL_NRFI_CMTD
242       + bal_AST_PRCHD_RVAL_RFI_CMTD
243       + bal_BP_CMTD
244       + bal_BUR_AND_SCH_NRFI_CMTD
245       + bal_BUR_AND_SCH_RFI_CMTD
246       + bal_COMM_NRFI_CMTD
247       + bal_COMM_RFI_CMTD
248       + bal_COMP_ALL_NRFI_CMTD
249       + bal_COMP_ALL_RFI_CMTD
250       + bal_ENT_ALL_NRFI_CMTD
251       + bal_ENT_ALL_RFI_CMTD
252       + bal_FREE_ACCOM_NRFI_CMTD
253       + bal_FREE_ACCOM_RFI_CMTD
254       + bal_FREE_SERV_NRFI_CMTD
255       + bal_FREE_SERV_RFI_CMTD
256       + bal_LOW_LOANS_NRFI_CMTD
257       + bal_LOW_LOANS_RFI_CMTD
258       + bal_MED_PAID_NRFI_CMTD
259       + bal_MED_PAID_RFI_CMTD
260       + bal_MLS_AND_VOUCH_NRFI_CMTD
261       + bal_MLS_AND_VOUCH_RFI_CMTD
262       + bal_OTHER_TXB_ALL_NRFI_CMTD
263       + bal_OTHER_TXB_ALL_RFI_CMTD
264       + bal_OVTM_NRFI_CMTD
265       + bal_OVTM_RFI_CMTD
266       + bal_PO_NRFI_CMTD
267       + bal_PO_RFI_CMTD
268       + bal_PYM_DBT_NRFI_CMTD
269       + bal_PYM_DBT_RFI_CMTD
270       + bal_RGT_AST_NRFI_CMTD
271       + bal_RGT_AST_RFI_CMTD
272       + bal_TA_NRFI_CMTD
273       + bal_TA_RFI_CMTD
274       + bal_TEL_ALL_NRFI_CMTD
275       + bal_TEL_ALL_RFI_CMTD
276       + bal_TOOL_ALL_NRFI_CMTD
277       + bal_TOOL_ALL_RFI_CMTD
278       + bal_TXB_INC_NRFI_CMTD
279       + bal_TXB_INC_RFI_CMTD
280       + bal_TXB_PEN_NRFI_CMTD
281       + bal_TXB_PEN_RFI_CMTD
282       + bal_USE_VEH_NRFI_CMTD
283       + bal_USE_VEH_RFI_CMTD
284       );
285 
286 -- Annualise by the Site Factor the Period Type Income
287 --
288    nti_PerTypErn := nti_PerTypInc * nti_SitFactor;
289 
290 -- Sum Annual Type Income Calendar Month to Date Balances
291 --
292    nti_AnnTypErn :=
293       nti_PerTypErn + ( bal_AB_NRFI_CMTD
294                       + bal_AB_RFI_CMTD
295                       + bal_ANU_FRM_RET_FND_NRFI_CMTD
296                       + bal_ANU_FRM_RET_FND_RFI_CMTD
297                       + bal_PRCH_ANU_TXB_NRFI_CMTD
298                       + bal_PRCH_ANU_TXB_RFI_CMTD
299                       + bal_TXB_AP_NRFI_CMTD
300                       + bal_TXB_AP_RFI_CMTD
301                       );
302 
303 -- Calculate Abatement Values
304 --
305    -- Pension Fund Abatement
306    --
307       -- Period Calculation
308       --
309          -- Annualise Period Pension Fund Contribution
310          nti_PerPenFnd := bal_CUR_PF_CMTD * nti_SitFactor;
311          -- Annualise Period Rfiable Contributions
312          nti_PerRfiCon := bal_TOT_RFI_INC_CMTD * nti_SitFactor;
313          -- Calculate the Pension Fund Maximum
314          nti_PerPenFndMax := GREATEST(glb_ZA_PF_AN_MX_ABT
315                                     ,(glb_ZA_PF_MX_PRC / 100 * nti_PerRfiCon)
316                                      );
317          -- Calculate Period Pension Fund Abatement
318          nti_PerPenFndAbm := LEAST(nti_PerPenFnd, nti_PerPenFndMax);
319 
320       -- Annual Calculation
321       --
322          -- Annual Pension Fund Contribution
323          nti_AnnPenFnd := nti_PerPenFnd + bal_ANN_PF_CMTD;
324          -- Annual Rfi Contribution
325          nti_AnnRfiCon := nti_PerRfiCon + bal_TOT_RFI_AN_INC_CMTD;
326          -- Calculate the Pension Fund Maximum
327          nti_AnnPenFndMax := GREATEST(glb_ZA_PF_AN_MX_ABT
328                                      ,glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiCon
329                                      );
330          -- Calculate Annual Pension Fund Abatement
331          nti_AnnPenFndAbm := LEAST(nti_AnnPenFnd,nti_AnnPenFndMax);
332 
333    -- Arrear Pension Fund Abatement
334    --
335       -- Check Arrear Pension Fund Frequency
336       IF dbi_ARR_PF_FRQ = 'M' THEN
337          hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',5);
338          nti_ArrPenFnd := (bal_ARR_PF_CMTD * nti_SitFactor) + bal_EXC_ARR_PEN_ITD;
339       ELSE
340          hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',6);
341          nti_ArrPenFnd := bal_ARR_PF_CMTD + bal_EXC_ARR_PEN_ITD;
342       END IF;
343       -- Calculate the Abatement
344       nti_ArrPenFndAbm := LEAST(nti_ArrPenFnd, glb_ZA_ARR_PF_AN_MX_ABT);
345 
346    -- Retirement Annuity Abatement
347    --
348       -- Calculate RA Contribution
349       IF dbi_RA_FRQ = 'M' THEN
350          hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',7);
351          nti_RetAnu := bal_CUR_RA_CMTD * nti_SitFactor;
352       ELSE
353          hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',8);
354          nti_RetAnu := bal_CUR_RA_CMTD;
355       END IF;
356       -- Calculate Nrfi Contribution based on Pension Fund
357       -- Contributions
358       IF bal_CUR_PF_CMTD = 0 THEN
359          hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',9);
360          nti_NrfiCon :=
361          (( bal_TOT_RFI_INC_CMTD
362           + bal_TOT_NRFI_INC_CMTD)* nti_SitFactor)
363           + bal_TOT_NRFI_AN_INC_CMTD
364           + bal_TOT_RFI_AN_INC_CMTD;
365       ELSE
366          hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',10);
367          nti_NrfiCon := (bal_TOT_NRFI_INC_CMTD * nti_SitFactor) + bal_TOT_NRFI_AN_INC_CMTD;
368       END IF;
369       -- Calculate the Retirement Annuity Maximum
370       nti_RetAnuMax := GREATEST(glb_ZA_PF_AN_MX_ABT
371                                ,glb_ZA_RA_AN_MX_ABT - nti_AnnPenFndAbm
372                                ,glb_ZA_RA_MX_PRC / 100 * nti_NrfiCon
373                                );
374       -- Calculate Retirement Annuity Abatement
375       nti_RetAnuAbm := LEAST(nti_RetAnu, nti_RetAnuMax);
376 
377    -- Arrear Retirement Annuity Abatement
378    --
379       -- Check Arrear Retirement Annuity Frequency
380       IF dbi_ARR_RA_FRQ = 'M' THEN
381          hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',11);
382          nti_ArrRetAnu := (bal_ARR_RA_CMTD * nti_SitFactor) + bal_EXC_ARR_RA_ITD;
383       ELSE
384          hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',12);
385          nti_ArrRetAnu := bal_ARR_RA_CMTD + bal_EXC_ARR_RA_ITD;
386       END IF;
387       -- Calculate the Abatement
388       nti_ArrRetAnuAbm := LEAST(nti_ArrRetAnu, glb_ZA_ARR_RA_AN_MX_ABT);
389 
390    -- Medical Aid Abatement
391    --
392      -- Calculate the assignments 65 Year Date
393      l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
394      -- Calculate the Abatement
395      IF l_65Year <= dbi_ZA_TX_YR_END THEN
396         hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',13);
397         nti_MedAidAbm := bal_MED_CONTR_CMTD * nti_SitFactor;
398      ELSE
399         hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',14);
400         nti_MedAidAbm := 0;
401      END IF;
402 
403    hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',15);
404 
405    -- Total Abatements
406    --
407       -- Period Total Abatement
408       nti_PerTotAbm := ( nti_PerPenFndAbm
409                        + nti_ArrPenFndAbm
410                        + nti_RetAnuAbm
411                        + nti_ArrRetAnuAbm
412                        + nti_MedAidAbm
413                        );
414       -- Annual Total Abatements
415       nti_AnnTotAbm := ( nti_AnnPenFndAbm
416                        + nti_ArrPenFndAbm
417                        + nti_RetAnuAbm
418                        + nti_ArrRetAnuAbm
419                        + nti_MedAidAbm
420                        );
421 
422 -- Calculate New O Figures
423 --
424    nti_TxbPerTypInc := nti_PerTypErn - nti_PerTotAbm;
425    nti_TxbAnnTypInc := nti_AnnTypErn - nti_AnnTotAbm;
426 
427 -- Deannualise Period O Figure
428 --
429    nti_NetPerTxbInc := nti_TxbPerTypInc / nti_SitFactor;
430 -- Calculate the Net Taxable Annual Type Income
431 --
432    nti_NetAnnTxbInc := nti_TxbAnnTypInc - nti_TxbPerTypInc;
433 
434 -- Calculate New Net Taxable Income Balance
435 --
436    trc_NtiUpdFig := (nti_NetPerTxbInc + nti_NetAnnTxbInc) - bal_NET_TXB_INC_CMTD;
437 
438    py_za_tx_utl_01032000.WriteHrTrace('nti_SitFactor: '||to_char(nti_SitFactor));
439    py_za_tx_utl_01032000.WriteHrTrace('nti_PerPenFndAbm: '||to_char(nti_PerPenFndAbm));
440    py_za_tx_utl_01032000.WriteHrTrace('nti_AnnPenFndAbm: '||to_char(nti_AnnPenFndAbm));
441    py_za_tx_utl_01032000.WriteHrTrace('nti_ArrPenFndAbm: '||to_char(nti_ArrPenFndAbm));
442    py_za_tx_utl_01032000.WriteHrTrace('nti_RetAnuAbm: '||to_char(nti_RetAnuAbm));
443    py_za_tx_utl_01032000.WriteHrTrace('nti_ArrRetAnuAbm: '||to_char(nti_ArrRetAnuAbm));
444    py_za_tx_utl_01032000.WriteHrTrace('nti_MedAidAbm: '||to_char(nti_MedAidAbm));
445    py_za_tx_utl_01032000.WriteHrTrace('nti_PerTotAbm: '||to_char(nti_PerTotAbm));
446    py_za_tx_utl_01032000.WriteHrTrace('nti_AnnTotAbm: '||to_char(nti_AnnTotAbm));
447    py_za_tx_utl_01032000.WriteHrTrace('nti_PerTypErn: '||to_char(nti_PerTypErn));
448    py_za_tx_utl_01032000.WriteHrTrace('nti_AnnTypErn: '||to_char(nti_AnnTypErn));
449    py_za_tx_utl_01032000.WriteHrTrace('nti_NetPerTxbInc: '||to_char(nti_NetPerTxbInc));
450    py_za_tx_utl_01032000.WriteHrTrace('nti_NetAnnTxbInc: '||to_char(nti_NetAnnTxbInc));
451    py_za_tx_utl_01032000.WriteHrTrace('bal_NET_TXB_INC_CMTD: '||to_char(bal_NET_TXB_INC_CMTD));
452    py_za_tx_utl_01032000.WriteHrTrace('trc_NtiUpdFig: '||to_char(trc_NtiUpdFig));
453 
454 EXCEPTION
455    WHEN OTHERS THEN
456       IF xpt_Msg = 'No Error' THEN
457          xpt_Msg := 'NetTxbIncCalc: '||TO_CHAR(SQLCODE);
458       END IF;
459        RAISE xpt_E;
460 END NetTxbIncCalc;
461 
462 
463 FUNCTION ZaTxOvr_01032000(
464     p_OvrTyp IN VARCHAR2
465    ,p_TxOnNI IN NUMBER DEFAULT 0
466    ,p_TxOnAP IN NUMBER DEFAULT 0
467    ,p_TxPrc  IN NUMBER DEFAULT 0
468    )RETURN NUMBER
469 AS
470    l_Dum NUMBER := 1;
471 BEGIN
472 -- Set the Override Global
473    trc_OvrTxCalc := TRUE;
474 
475 -- Set Override Values
476    trc_OvrTyp  := p_OvrTyp;
477 
478    IF p_OvrTyp = 'V' THEN
479       trc_LibFpNI := p_TxOnNI;
480       trc_LibFpAP := p_TxOnAP;
481    ELSIF p_OvrTyp = 'P' THEN
482       trc_OvrPrc  := p_TxPrc;
483    END IF;
484    RETURN l_Dum;
485 
486 EXCEPTION
487    WHEN OTHERS THEN
488       hr_utility.set_message(801, 'ZaTxOvr_01032000: '||TO_CHAR(SQLCODE));
489       hr_utility.raise_error;
490 END ZaTxOvr_01032000;
491 
492 -- Main Tax Calculations
493 --
494 --
495 --
496 --
497 --
498 --
499 
500 PROCEDURE LteCalc AS
501 
502    -- Variables
503    l_EndDate DATE;
504    l_StrtDte DATE;
505    l_65Year DATE;
506    l_ZA_TX_YR_END        DATE;
507    l_ZA_ADL_TX_RBT       NUMBER;
508    l_ZA_PRI_TX_RBT       NUMBER;
509    l_ZA_PRI_TX_THRSHLD   NUMBER;
510    l_ZA_SC_TX_THRSHLD    NUMBER;
511 
512    l_Sl       BOOLEAN;
513    l_Np       NUMBER(15,2) DEFAULT 0;
514 
515 
516    -- Private Functions
517    --
518       FUNCTION getBalVal
519          (p_BalNme IN pay_balance_types.balance_name%TYPE
520          ,p_EffDte   IN DATE
521          ) RETURN NUMBER
522       AS
523       -- Variables
524          l_BalVal NUMBER(15,2);
525          l_BalTypId pay_balance_types.balance_type_id%TYPE;
526          l_dimension pay_balance_dimensions.dimension_name%TYPE ;
527 
528       BEGIN
529          hr_utility.set_location('py_za_tx_01032000.LteCalc',1);
530       -- Get the Balance Type ID
531          SELECT pbt.balance_type_id
532            INTO l_BalTypId
533            FROM pay_balance_types pbt
534           WHERE pbt.balance_name = p_BalNme;
535 
536          hr_utility.set_location('py_za_tx_01032000.LteCalc',2);
537 
538       -- Get the Balance Value
539       -- 3491357
540          /*l_BalVal := py_za_bal.calc_asg_tax_ytd_date
541                         ( con_ASG_ID
542                         , l_BalTypId
543                         , p_EffDte
544                         );*/
545          l_dimension := '_ASG_TAX_YTD';
546          l_BalVal := py_za_bal.get_balance_value
547                                       ( con_ASG_ID
548                                       , l_BalTypId
549                                       , l_dimension
550                                       , p_EffDte
551                                       );
552          RETURN l_BalVal;
553       END getBalVal;
554 
555       FUNCTION getBalVal2
556          (p_BalNme IN pay_balance_types.balance_name%TYPE
557          ,p_EffDte   IN DATE
558          ) RETURN NUMBER
559       AS
560       -- Variables
561          l_BalVal NUMBER(15,2);
562          l_BalTypId pay_balance_types.balance_type_id%TYPE;
563          l_dimension pay_balance_dimensions.dimension_name%TYPE ;
564       BEGIN
565          hr_utility.set_location('py_za_tx_01032000.LteCalc',3);
566       -- Get the Balance Type ID
567          SELECT pbt.balance_type_id
568            INTO l_BalTypId
569            FROM pay_balance_types pbt
570           WHERE pbt.balance_name = p_BalNme;
571 
572          hr_utility.set_location('py_za_tx_01032000.LteCalc',4);
573 
574       -- Get the Balance Value
575       -- 3491357
576          /*l_BalVal := py_za_bal.calc_asg_itd_date
577                         ( con_ASG_ID
578                         , l_BalTypId
579                         , p_EffDte
580                         );*/
581          l_dimension := '_ASG_ITD';
582          l_BalVal := py_za_bal.get_balance_value
583                                        ( con_ASG_ID
584                                        , l_BalTypId
585                                        , l_dimension
586                                        , p_EffDte
587                                        );
588          RETURN l_BalVal;
589       END getBalVal2;
590 
591 BEGIN
592    hr_utility.set_location('py_za_tx_01032000.LteCalc',5);
593 -- Does the Assignment have an OFigure?
594 --
595    IF bal_TOT_TXB_INC_ITD <= 0 THEN
596       hr_utility.set_location('py_za_tx_01032000.LteCalc',6);
597    -- Calculate the 'O' Figure
598    -- Set the Global
599       trc_CalTyp := 'PstCalc';
600    -- Set the Site Factor to the value of the previous tax year
601       -- Get the tax year start date
602       SELECT min(ptp.start_date)
603         INTO l_StrtDte
604         FROM per_time_periods ptp
605        WHERE ptp.prd_information1 = trc_AsgTxYear
606          AND ptp.payroll_id = con_PRL_ID;
607 
608       hr_utility.set_location('py_za_tx_01032000.LteCalc',7);
609 
610       -- Get the tax year end date
611       SELECT max(ptp.end_date)
612         INTO l_EndDate
613         FROM per_time_periods ptp
614        WHERE ptp.prd_information1 = trc_AsgTxYear
615          AND ptp.payroll_id = con_PRL_ID;
616 
617       hr_utility.set_location('py_za_tx_01032000.LteCalc',8);
618 
619       trc_SitFactor := (l_EndDate - l_StrtDte + 1) / py_za_tx_utl_01032000.DaysWorked;
620 
621    -- Get the assignment's previous tax year end date
622       SELECT MAX(ptp.end_date) "EndDate"
623         INTO l_EndDate
624         FROM per_time_periods ptp
625        WHERE ptp.payroll_id = con_PRL_ID
626          AND ptp.prd_information1 = trc_AsgTxYear
627        GROUP BY ptp.prd_information1;
628 
629       hr_utility.set_location('py_za_tx_01032000.LteCalc',9);
630 
631    -- Populate Local Balance Variables
632    -- The PTD Globals are used as dummy to store the previous tax year's
633    -- Balance values
634 
635       bal_AB_NRFI_PTD              := getBalVal('Annual Bonus NRFI',l_EndDate);
636       bal_AB_RFI_PTD               := getBalVal('Annual Bonus RFI',l_EndDate);
637       bal_AC_NRFI_PTD              := getBalVal('Annual Commission NRFI',l_EndDate);
638       bal_AC_RFI_PTD               := getBalVal('Annual Commission RFI',l_EndDate);
639       bal_ANN_PF_PTD               := getBalVal('Annual Pension Fund',l_EndDate);
640       bal_ANU_FRM_RET_FND_NRFI_PTD := getBalVal('Annuity from Retirement Fund NRFI',l_EndDate);
641       bal_ANU_FRM_RET_FND_RFI_PTD  := getBalVal('Annuity from Retirement Fund RFI',l_EndDate);
642       bal_ARR_PF_PTD               := getBalVal('Arrear Pension Fund',l_EndDate);
643       bal_ARR_RA_PTD               := getBalVal('Arrear Retirement Annuity',l_EndDate);
644       bal_AST_PRCHD_RVAL_NRFI_PTD  := getBalVal('Asset Purchased at Reduced Value NRFI',l_EndDate);
645       bal_AST_PRCHD_RVAL_RFI_PTD   := getBalVal('Asset Purchased at Reduced Value RFI',l_EndDate);
646       bal_BP_PTD                   := getBalVal('Bonus Provision',l_EndDate);
647       bal_BUR_AND_SCH_NRFI_PTD     := getBalVal('Bursaries and Scholarships NRFI',l_EndDate);
648       bal_BUR_AND_SCH_RFI_PTD      := getBalVal('Bursaries and Scholarships RFI',l_EndDate);
649       bal_COMM_NRFI_PTD            := getBalVal('Commission NRFI',l_EndDate);
650       bal_COMM_RFI_PTD             := getBalVal('Commission RFI',l_EndDate);
651       bal_COMP_ALL_NRFI_PTD        := getBalVal('Computer Allowance NRFI',l_EndDate);
652       bal_COMP_ALL_RFI_PTD         := getBalVal('Computer Allowance RFI',l_EndDate);
653       bal_CUR_PF_PTD               := getBalVal('Current Pension Fund',l_EndDate);
654       bal_CUR_RA_PTD               := getBalVal('Current Retirement Annuity',l_EndDate);
655       bal_ENT_ALL_NRFI_PTD         := getBalVal('Entertainment Allowance NRFI',l_EndDate);
656       bal_ENT_ALL_RFI_PTD          := getBalVal('Entertainment Allowance RFI',l_EndDate);
657       bal_EXC_ARR_PEN_PTD          := getBalVal2('Excess Arrear Pension',l_EndDate);
658       bal_EXC_ARR_RA_PTD           := getBalVal2('Excess Arrear Retirement Annuity',l_EndDate);
659       bal_FREE_ACCOM_NRFI_PTD      := getBalVal('Free or Cheap Accommodation NRFI',l_EndDate);
660       bal_FREE_ACCOM_RFI_PTD       := getBalVal('Free or Cheap Accommodation RFI',l_EndDate);
661       bal_FREE_SERV_NRFI_PTD       := getBalVal('Free or Cheap Services NRFI',l_EndDate);
662       bal_FREE_SERV_RFI_PTD        := getBalVal('Free or Cheap Services RFI',l_EndDate);
663       bal_LOW_LOANS_NRFI_PTD       := getBalVal('Low or Interest Free Loans NRFI',l_EndDate);
664       bal_LOW_LOANS_RFI_PTD        := getBalVal('Low or Interest Free Loans RFI',l_EndDate);
665       bal_MLS_AND_VOUCH_NRFI_PTD   := getBalVal('Meals Refreshments and Vouchers NRFI',l_EndDate);
666       bal_MLS_AND_VOUCH_RFI_PTD    := getBalVal('Meals Refreshments and Vouchers RFI',l_EndDate);
667       bal_MED_CONTR_PTD            := getBalVal('Medical Aid Contribution',l_EndDate);
668       bal_MED_PAID_NRFI_PTD        := getBalVal('Medical Aid Paid on Behalf of Employee NRFI',l_EndDate);
669       bal_MED_PAID_RFI_PTD         := getBalVal('Medical Aid Paid on Behalf of Employee RFI',l_EndDate);
670       bal_OTHER_TXB_ALL_NRFI_PTD   := getBalVal('Other Taxable Allowance NRFI',l_EndDate);
671       bal_OTHER_TXB_ALL_RFI_PTD    := getBalVal('Other Taxable Allowance RFI',l_EndDate);
672       bal_OVTM_NRFI_PTD            := getBalVal('Overtime NRFI',l_EndDate);
673       bal_OVTM_RFI_PTD             := getBalVal('Overtime RFI',l_EndDate);
674       bal_PYM_DBT_NRFI_PTD         := getBalVal('Payment of Employee Debt NRFI',l_EndDate);
675       bal_PYM_DBT_RFI_PTD          := getBalVal('Payment of Employee Debt RFI',l_EndDate);
676       bal_PO_NRFI_PTD              := getBalVal('Public Office Allowance NRFI',l_EndDate);
677       bal_PO_RFI_PTD               := getBalVal('Public Office Allowance RFI',l_EndDate);
678       bal_PRCH_ANU_TXB_NRFI_PTD    := getBalVal('Purchased Annuity Taxable NRFI',l_EndDate);
679       bal_PRCH_ANU_TXB_RFI_PTD     := getBalVal('Purchased Annuity Taxable RFI',l_EndDate);
680       bal_RGT_AST_NRFI_PTD         := getBalVal('Right of Use of Asset NRFI',l_EndDate);
681       bal_RGT_AST_RFI_PTD          := getBalVal('Right of Use of Asset RFI',l_EndDate);
682       bal_TXB_AP_NRFI_PTD          := getBalVal('Taxable Annual Payment NRFI',l_EndDate);
683       bal_TXB_AP_RFI_PTD           := getBalVal('Taxable Annual Payment RFI',l_EndDate);
684       bal_TXB_INC_NRFI_PTD         := getBalVal('Taxable Income NRFI',l_EndDate);
685       bal_TXB_INC_RFI_PTD          := getBalVal('Taxable Income RFI',l_EndDate);
686       bal_TXB_PEN_NRFI_PTD         := getBalVal('Taxable Pension NRFI',l_EndDate);
687       bal_TXB_PEN_RFI_PTD          := getBalVal('Taxable Pension RFI',l_EndDate);
688       bal_TEL_ALL_NRFI_PTD         := getBalVal('Telephone Allowance NRFI',l_EndDate);
689       bal_TEL_ALL_RFI_PTD          := getBalVal('Telephone Allowance RFI',l_EndDate);
690       bal_TOOL_ALL_NRFI_PTD        := getBalVal('Tool Allowance NRFI',l_EndDate);
691       bal_TOOL_ALL_RFI_PTD         := getBalVal('Tool Allowance RFI',l_EndDate);
692       bal_TOT_INC_PTD              := getBalVal('Total Income',l_EndDate);
693       bal_TOT_NRFI_AN_INC_PTD      := getBalVal('Total NRFIable Annual Income',l_EndDate);
694       bal_TOT_NRFI_INC_PTD         := getBalVal('Total NRFIable Income',l_EndDate);
695       bal_TOT_RFI_AN_INC_PTD       := getBalVal('Total RFIable Annual Income',l_EndDate);
696       bal_TOT_RFI_INC_PTD          := getBalVal('Total RFIable Income',l_EndDate);
697       bal_TA_NRFI_PTD              := getBalVal('Travel Allowance NRFI',l_EndDate);
698       bal_TA_RFI_PTD               := getBalVal('Travel Allowance RFI',l_EndDate);
699       bal_USE_VEH_NRFI_PTD         := getBalVal('Use of Motor Vehicle NRFI',l_EndDate);
700       bal_USE_VEH_RFI_PTD          := getBalVal('Use of Motor Vehicle RFI',l_EndDate);
701 
702    hr_utility.set_location('py_za_tx_01032000.LteCalc',10);
703 
704    -- Update Globals with Correct Taxable Values
705       py_za_tx_utl_01032000.TrvAll;
706 
707       bal_PO_NRFI_PTD := bal_PO_NRFI_PTD * py_za_tx_utl_01032000.GlbVal('ZA_PUBL_TAX_PERC',l_EndDate) / 100;
708       bal_PO_RFI_PTD := bal_PO_RFI_PTD * py_za_tx_utl_01032000.GlbVal('ZA_PUBL_TAX_PERC',l_EndDate) / 100;
709 
710    hr_utility.set_location('py_za_tx_01032000.LteCalc',11);
711 
712    -- Rebates
713       py_za_tx_utl_01032000.SetRebates;
714    -- Abatements
715       py_za_tx_utl_01032000.Abatements;
716 
717    hr_utility.set_location('py_za_tx_01032000.LteCalc',12);
718 
719    -- Base Earnings
720    --
721       trc_BseErn :=
722          (( bal_AST_PRCHD_RVAL_NRFI_PTD
723          + bal_AST_PRCHD_RVAL_RFI_PTD
724          + bal_BP_PTD
725          + bal_BUR_AND_SCH_NRFI_PTD
726          + bal_BUR_AND_SCH_RFI_PTD
727          + bal_COMM_NRFI_PTD
728          + bal_COMM_RFI_PTD
729          + bal_COMP_ALL_NRFI_PTD
730          + bal_COMP_ALL_RFI_PTD
731          + bal_ENT_ALL_NRFI_PTD
732          + bal_ENT_ALL_RFI_PTD
733          + bal_FREE_ACCOM_NRFI_PTD
734          + bal_FREE_ACCOM_RFI_PTD
735          + bal_FREE_SERV_NRFI_PTD
736          + bal_FREE_SERV_RFI_PTD
737          + bal_LOW_LOANS_NRFI_PTD
738          + bal_LOW_LOANS_RFI_PTD
739          + bal_MED_PAID_NRFI_PTD
740          + bal_MED_PAID_RFI_PTD
741          + bal_MLS_AND_VOUCH_NRFI_PTD
742          + bal_MLS_AND_VOUCH_RFI_PTD
743          + bal_OTHER_TXB_ALL_NRFI_PTD
744          + bal_OTHER_TXB_ALL_RFI_PTD
745          + bal_OVTM_NRFI_PTD
746          + bal_OVTM_RFI_PTD
747          + bal_PO_NRFI_PTD
748          + bal_PO_RFI_PTD
749          + bal_PYM_DBT_NRFI_PTD
750          + bal_PYM_DBT_RFI_PTD
751          + bal_RGT_AST_NRFI_PTD
752          + bal_RGT_AST_RFI_PTD
753          + bal_TA_NRFI_PTD
754          + bal_TA_RFI_PTD
755          + bal_TEL_ALL_NRFI_PTD
756          + bal_TEL_ALL_RFI_PTD
757          + bal_TOOL_ALL_NRFI_PTD
758          + bal_TOOL_ALL_RFI_PTD
759          + bal_TXB_INC_NRFI_PTD
760          + bal_TXB_INC_RFI_PTD
761          + bal_TXB_PEN_NRFI_PTD
762          + bal_TXB_PEN_RFI_PTD
763          + bal_USE_VEH_NRFI_PTD
764          + bal_USE_VEH_RFI_PTD)* trc_SitFactor)
765          + bal_AB_NRFI_PTD
766          + bal_AB_RFI_PTD
767          + bal_AC_NRFI_PTD
768          + bal_AC_RFI_PTD
769          + bal_ANU_FRM_RET_FND_NRFI_PTD
770          + bal_ANU_FRM_RET_FND_RFI_PTD
771          + bal_PRCH_ANU_TXB_NRFI_PTD
772          + bal_PRCH_ANU_TXB_RFI_PTD
773          + bal_TXB_AP_NRFI_PTD
774          + bal_TXB_AP_RFI_PTD;
775 
776    -- Taxable Base Income
777       trc_TxbBseInc := trc_BseErn - trc_AnnTotAbm;
778    -- Threshold Check
779       IF trc_TxbBseInc >= trc_Threshold THEN
780          hr_utility.set_location('py_za_tx_01032000.LteCalc',13);
781       -- Tax Liability
782          trc_TotLibBse := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbBseInc);
783       ELSE
784          hr_utility.set_location('py_za_tx_01032000.LteCalc',14);
785          trc_TotLibBse := 0;
786       END IF;
787 
788    -- Populate the O Figure
789       trc_OUpdFig := trc_TxbBseInc - bal_TOT_TXB_INC_ITD;
790 
791       -- Base Income
792       py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
793       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
794       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
795 
796    ELSE
797       hr_utility.set_location('py_za_tx_01032000.LteCalc',15);
798    -- Use the 'O' Figure as Base
799    -- Set the Global
800       trc_CalTyp := 'LteCalc';
801 
802    -- Get the assignment's previous tax year's
803    --   threshold and rebate figures
804       -- Employee Tax Year Start and End Dates
805      SELECT MAX(ptp.end_date) "EndDate"
806        INTO l_EndDate
807        FROM per_time_periods ptp
808       WHERE ptp.payroll_id = con_PRL_ID
809         AND ptp.prd_information1 = trc_AsgTxYear
810       GROUP BY ptp.prd_information1;
811 
812       hr_utility.set_location('py_za_tx_01032000.LteCalc',16);
813 
814    -- Global Values
815       l_ZA_TX_YR_END        := l_EndDate;
816       l_ZA_ADL_TX_RBT       := py_za_tx_utl_01032000.GlbVal('ZA_ADDITIONAL_TAX_REBATE',l_EndDate);
817       l_ZA_PRI_TX_RBT       := py_za_tx_utl_01032000.GlbVal('ZA_PRIMARY_TAX_REBATE',l_EndDate);
818       l_ZA_PRI_TX_THRSHLD   := py_za_tx_utl_01032000.GlbVal('ZA_PRIM_TAX_THRESHOLD',l_EndDate);
819       l_ZA_SC_TX_THRSHLD    := py_za_tx_utl_01032000.GlbVal('ZA_SEC_TAX_THRESHOLD',l_EndDate);
820 
821    -- Calculate the assignments 65 Year Date
822       l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
823 
824       IF l_65Year <= l_ZA_TX_YR_END THEN
825          hr_utility.set_location('py_za_tx_01032000.LteCalc',17);
826       -- give the extra abatement
827          trc_Rebate := l_ZA_PRI_TX_RBT + l_ZA_ADL_TX_RBT;
828          trc_Threshold := l_ZA_SC_TX_THRSHLD;
829       ELSE
830          hr_utility.set_location('py_za_tx_01032000.LteCalc',18);
831       -- not eligable for extra abatement
832          trc_Rebate := l_ZA_PRI_TX_RBT;
833          trc_Threshold := l_ZA_PRI_TX_THRSHLD;
834       END IF;
835 
836 
837    -- Base Earnings
838    --
839       -- Take the OFigure as Taxable Base Income
840       trc_TxbBseInc := bal_TOT_TXB_INC_ITD;
841       -- Threshold Check
842       IF trc_TxbBseInc >= trc_Threshold THEN
843          hr_utility.set_location('py_za_tx_01032000.LteCalc',19);
844       -- Tax Liability
845          trc_TotLibBse := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbBseInc);
846       ELSE
847          hr_utility.set_location('py_za_tx_01032000.LteCalc',20);
848          trc_TotLibBse := 0;
849       END IF;
850 
851       -- Base Income
852       py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
853       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
854       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
855    END IF;
856 
857 -- Override the Global
858    trc_CalTyp := 'LteCalc';
859 -- Set the SitFactor back to 1
860    trc_SitFactor := 1;
861 
862    hr_utility.set_location('py_za_tx_01032000.LteCalc',21);
863 
864 -- Rebates
865    py_za_tx_utl_01032000.SetRebates;
866 -- Abatements
867    py_za_tx_utl_01032000.Abatements;
868 
869    hr_utility.set_location('py_za_tx_01032000.LteCalc',22);
870 
871 -- Update Global Balance Values with correct TAXABLE values
872    py_za_tx_utl_01032000.TrvAll;
873 
874    bal_PO_RFI_YTD := bal_PO_RFI_YTD * glb_ZA_PBL_TX_PRC / 100;
875    bal_PO_NRFI_YTD := bal_PO_NRFI_YTD * glb_ZA_PBL_TX_PRC / 100;
876 
877 -- Normal Income
878 --
879    -- Ytd Normal Income
880    trc_NorIncYtd :=
881       ( bal_COMM_NRFI_YTD
882       + bal_COMM_RFI_YTD
883       + bal_COMP_ALL_NRFI_YTD
884       + bal_COMP_ALL_RFI_YTD
885       + bal_ENT_ALL_NRFI_YTD
886       + bal_ENT_ALL_RFI_YTD
887       + bal_OTHER_TXB_ALL_NRFI_YTD
888       + bal_OTHER_TXB_ALL_RFI_YTD
889       + bal_OVTM_NRFI_YTD
890       + bal_OVTM_RFI_YTD
891       + bal_TXB_INC_NRFI_YTD
892       + bal_TXB_INC_RFI_YTD
893       + bal_TXB_PEN_NRFI_YTD
894       + bal_TXB_PEN_RFI_YTD
895       + bal_TEL_ALL_NRFI_YTD
896       + bal_TEL_ALL_RFI_YTD
897       + bal_TOOL_ALL_NRFI_YTD
898       + bal_TOOL_ALL_RFI_YTD
899       );
900    -- Skip the calculation if there is No Income
901    IF trc_NorIncYtd <> 0 THEN
902       hr_utility.set_location('py_za_tx_01032000.LteCalc',23);
903    -- Normal Earnings
904       trc_NorErn := trc_NorIncYtd + trc_TxbBseInc;
905    -- Taxable Normal Income
906       trc_TxbNorInc := trc_NorErn - trc_PerTotAbm;
907    -- Threshold Check
908       IF trc_TxbNorInc >= trc_Threshold THEN
909          hr_utility.set_location('py_za_tx_01032000.LteCalc',24);
910       -- Tax Liability
911          trc_TotLibNI := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbNorInc);
912          trc_LibFyNI := trc_TotLibNI - least(trc_TotLibNI,trc_TotLibBse);
913          trc_LibFpNI := trc_LibFyNI - bal_TX_ON_NI_YTD;
914       ELSE
915          hr_utility.set_location('py_za_tx_01032000.LteCalc',25);
916          trc_TotLibNI := 0;
917       -- Refund any tax paid
918          trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
919          trc_NpValNIOvr := TRUE;
920       END IF;
921    ELSE
922       hr_utility.set_location('py_za_tx_01032000.LteCalc',26);
923       trc_NorErn := trc_TxbBseInc;
924       trc_TxbNorInc := 0;
925       trc_TotLibNI := trc_TotLibBse;
926    -- Refund any tax paid
927       trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
928       trc_NpValNIOvr := TRUE;
929    END IF;
930 
931 -- Fringe Benefits
932 --
933    -- Ytd Fringe Benefits
934    trc_FrnBenYtd :=
935       ( bal_AST_PRCHD_RVAL_NRFI_YTD
936       + bal_AST_PRCHD_RVAL_RFI_YTD
937       + bal_BUR_AND_SCH_NRFI_YTD
938       + bal_BUR_AND_SCH_RFI_YTD
939       + bal_FREE_ACCOM_NRFI_YTD
940       + bal_FREE_ACCOM_RFI_YTD
941       + bal_FREE_SERV_NRFI_YTD
942       + bal_FREE_SERV_RFI_YTD
943       + bal_LOW_LOANS_NRFI_YTD
944       + bal_LOW_LOANS_RFI_YTD
945       + bal_MLS_AND_VOUCH_NRFI_YTD
946       + bal_MLS_AND_VOUCH_RFI_YTD
947       + bal_MED_PAID_NRFI_YTD
948       + bal_MED_PAID_RFI_YTD
949       + bal_PYM_DBT_NRFI_YTD
950       + bal_PYM_DBT_RFI_YTD
951       + bal_RGT_AST_NRFI_YTD
952       + bal_RGT_AST_RFI_YTD
953       + bal_USE_VEH_NRFI_YTD
954       + bal_USE_VEH_RFI_YTD
955       );
956    -- Skip the calculation if there is No Income
957    IF trc_FrnBenYtd <> 0 THEN
958       hr_utility.set_location('py_za_tx_01032000.LteCalc',27);
959    -- Fringe Benefit Earnings
960       trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
961    -- Taxable Fringe Income
962       trc_TxbFrnInc := trc_FrnBenErn - trc_PerTotAbm;
963    -- Threshold Check
964       IF trc_TxbFrnInc >= trc_Threshold THEN
965          hr_utility.set_location('py_za_tx_01032000.LteCalc',28);
966       -- Tax Liability
967          trc_TotLibFB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbFrnInc);
968          trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
969          trc_LibFpFB := trc_LibFyFB - bal_TX_ON_FB_YTD;
970       ElSE
971          hr_utility.set_location('py_za_tx_01032000.LteCalc',29);
972          trc_TotLibFB := trc_TotLibNI;
973       -- Refund any tax paid
974          trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
975          trc_NpValFBOvr := TRUE;
976       END IF;
977    ELSE
978       hr_utility.set_location('py_za_tx_01032000.LteCalc',30);
979       trc_FrnBenErn := trc_NorErn;
980       trc_TxbFrnInc := trc_TxbNorInc;
981       trc_TotLibFB := trc_TotLibNI;
982    -- Refund any tax paid
983       trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
984       trc_NpValFBOvr := TRUE;
985    END IF;
986 
987 -- Travel allowance
988 --
989    -- Ytd Travel Allowance
990    trc_TrvAllYtd :=
991    ( bal_TA_NRFI_YTD
992    + bal_TA_RFI_YTD
993    );
994    -- Skip the calculation if there is No Income
995    IF trc_TrvAllYtd <> 0 THEN
996       hr_utility.set_location('py_za_tx_01032000.LteCalc',31);
997    -- Travel Earnings
998       trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
999    -- Taxable Travel Income
1000       trc_TxbTrvInc := trc_TrvAllErn - trc_PerTotAbm;
1001    -- Threshold Check
1002       IF trc_TxbTrvInc >= trc_Threshold THEN
1003          hr_utility.set_location('py_za_tx_01032000.LteCalc',32);
1004       -- Tax Liability
1005          trc_TotLibTA := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbTrvInc);
1006          trc_LibFyTA := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
1007          trc_LibFpTA := trc_LibFyTA - bal_TX_ON_TA_YTD;
1008       ELSE
1009          hr_utility.set_location('py_za_tx_01032000.LteCalc',33);
1010          trc_TotLibTA := trc_TotLibFB;
1011       -- Refund any tax paid
1012          trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
1013          trc_NpValTAOvr := TRUE;
1014       END IF;
1015    ELSE
1016       hr_utility.set_location('py_za_tx_01032000.LteCalc',34);
1017       trc_TrvAllErn := trc_FrnBenErn;
1018       trc_TxbTrvInc := trc_TxbFrnInc;
1019       trc_TotLibTA := trc_TotLibFB;
1020    -- Refund any tax paid
1021       trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
1022       trc_NpValTAOvr := TRUE;
1023    END IF;
1024 
1025 -- Annual Bonus
1026 --
1027    -- Ytd Annual Bonus
1028    trc_AnnBonYtd :=
1029    ( bal_AB_NRFI_YTD
1030    + bal_AB_RFI_YTD
1031    );
1032    -- Skip the calculation if there is No Income
1033    IF trc_AnnBonYtd <> 0 THEN
1034       hr_utility.set_location('py_za_tx_01032000.LteCalc',35);
1035    -- Annual Bonus Earnings
1036       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
1037    -- Taxable Annual Bonus Income
1038       trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
1039    -- Threshold Check
1040       IF trc_TxbAnnBonInc >= trc_Threshold THEN
1041          hr_utility.set_location('py_za_tx_01032000.LteCalc',36);
1042       -- Tax Liability
1043          trc_TotLibAB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnBonInc);
1044          trc_LibFyAB := trc_TotLibAB - trc_TotLibTA;
1045       -- Negative Check
1046          IF trc_LibFyAB < 0 THEN
1047             hr_utility.set_location('py_za_tx_01032000.LteCalc',37);
1048             trc_TotLibAB := trc_TotLibTA;
1049          -- Refund any tax paid
1050             trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1051             trc_NpValABOvr := TRUE;
1052          ELSE
1053             hr_utility.set_location('py_za_tx_01032000.LteCalc',38);
1054             trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
1055          END IF;
1056       ELSE
1057          hr_utility.set_location('py_za_tx_01032000.LteCalc',39);
1058          trc_TotLibAB := trc_TotLibTA;
1059       -- Refund any tax paid
1060          trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1061          trc_NpValABOvr := TRUE;
1062       END IF;
1063    ELSE
1064       hr_utility.set_location('py_za_tx_01032000.LteCalc',40);
1065       trc_AnnBonErn := trc_TrvAllErn;
1066       trc_TxbAnnBonInc := trc_TxbTrvInc;
1067       trc_TotLibAB := trc_TotLibTA;
1068    -- Refund any tax paid
1069       trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1070       trc_NpValABOvr := TRUE;
1071    END IF;
1072 
1073 -- Annual Payments
1074 --
1075    -- Ytd Annual Payments
1076    trc_AnnPymYtd :=
1077       ( bal_AC_NRFI_YTD
1078       + bal_AC_RFI_YTD
1079       + bal_ANU_FRM_RET_FND_NRFI_YTD
1080       + bal_ANU_FRM_RET_FND_RFI_YTD
1081       + bal_PRCH_ANU_TXB_NRFI_YTD
1082       + bal_PRCH_ANU_TXB_RFI_YTD
1083       + bal_TXB_AP_NRFI_YTD
1084       + bal_TXB_AP_RFI_YTD
1085       );
1086    -- Skip the calculation if there is No Income
1087    IF trc_AnnPymYtd <> 0 THEN
1088       hr_utility.set_location('py_za_tx_01032000.LteCalc',41);
1089    -- Annual Payments Earnings
1090       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
1091    -- Taxable Annual Payments Income
1092       trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
1093    -- Threshold Check
1094       IF trc_TxbAnnPymInc >= trc_Threshold THEN
1095          hr_utility.set_location('py_za_tx_01032000.LteCalc',42);
1096       -- Tax Liability
1097          trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1098          trc_LibFyAP := trc_TotLibAP - trc_TotLibAB;
1099       -- Negative Check
1100          IF trc_LibFyAP < 0 THEN
1101             hr_utility.set_location('py_za_tx_01032000.LteCalc',43);
1102             trc_TotLibAP := trc_TotLibAB;
1103          -- Refund any tax paid
1104             trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
1105             trc_NpValAPOvr := TRUE;
1106          ELSE
1107             hr_utility.set_location('py_za_tx_01032000.LteCalc',44);
1108             trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
1109          END IF;
1110       ELSE
1111          hr_utility.set_location('py_za_tx_01032000.LteCalc',45);
1112          trc_TotLibAP := trc_TotLibAB;
1113       -- Refund any tax paid
1114          trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
1115          trc_NpValAPOvr := TRUE;
1116       END IF;
1117    ELSE
1118       hr_utility.set_location('py_za_tx_01032000.LteCalc',46);
1119       trc_AnnPymErn := trc_AnnBonErn;
1120       trc_TxbAnnPymInc := trc_TxbAnnBonInc;
1121       trc_TotLibAP := trc_TotLibAB;
1122    -- Refund any tax paid
1123       trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
1124       trc_NpValAPOvr := TRUE;
1125    END IF;
1126 
1127 -- Public Office Allowance
1128 --
1129    -- Ytd Public Office Allowance
1130    trc_PblOffYtd :=
1131       ( bal_PO_NRFI_YTD
1132       + bal_PO_RFI_YTD
1133       );
1134    -- Skip the calculation if there is No Income
1135    IF trc_PblOffYtd <> 0 THEN
1136       hr_utility.set_location('py_za_tx_01032000.LteCalc',47);
1137    -- Public Office Earnings
1138       trc_PblOffErn := trc_PblOffYtd;
1139    -- Tax Liability
1140       trc_LibFyPO := trc_PblOffErn * glb_ZA_PBL_TX_RTE / 100;
1141       trc_LibFpPO := trc_LibFyPO -  bal_TX_ON_PO_YTD;
1142    ELSE
1143       hr_utility.set_location('py_za_tx_01032000.LteCalc',48);
1144       trc_LibFyPO := 0;
1145    -- Refund any tax paid
1146       trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
1147       trc_NpValPOOvr := TRUE;
1148    END IF;
1149 
1150 -- Net Pay Validation
1151 --
1152    -- Net Pay of the Employee
1153    l_Np := bal_NET_PAY_RUN;
1154    -- Site Limit Check
1155    IF trc_TxbAnnPymInc + trc_PblOffErn < glb_ZA_SIT_LIM THEN
1156       hr_utility.set_location('py_za_tx_01032000.LteCalc',49);
1157       l_Sl := TRUE;
1158    ELSE
1159       hr_utility.set_location('py_za_tx_01032000.LteCalc',50);
1160       l_Sl := FALSE;
1161    END IF;
1162 
1163    py_za_tx_utl_01032000.NpVal(p_Rf => l_Sl);
1164 
1165 -- Set IT3A Indicator
1166 --
1167    IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
1168       hr_utility.set_location('py_za_tx_01032000.LteCalc',51);
1169       trc_It3Ind := 0; -- Over Lim
1170    ELSE
1171       hr_utility.set_location('py_za_tx_01032000.LteCalc',52);
1172       trc_It3Ind := 1; -- Under Lim
1173    END IF;
1174 
1175    -- Normal Income
1176    py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
1177    py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
1178    py_za_tx_utl_01032000.WriteHrTrace('trc_NorErn: '||to_char(trc_NorErn));
1179    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
1180    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibNI: '||to_char(trc_TotLibNI));
1181    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyNI: '||to_char(trc_LibFyNI));
1182    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpNI: '||to_char(trc_LibFpNI));
1183    -- Fringe Benefits
1184    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
1185    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
1186    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
1187    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
1188    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibFB: '||to_char(trc_TotLibFB));
1189    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyFB: '||to_char(trc_LibFyFB));
1190    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpFB: '||to_char(trc_LibFpFB));
1191    -- Travel Allowance
1192    py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
1193    py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
1194    py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
1195    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
1196    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibTA: '||to_char(trc_TotLibTA));
1197    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyTA: '||to_char(trc_LibFyTA));
1198    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpTA: '||to_char(trc_LibFpTA));
1199    -- Annual Bonus
1200    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
1201    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
1202    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
1203    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
1204    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAB: '||to_char(trc_TotLibAB));
1205    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAB: '||to_char(trc_LibFyAB));
1206    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAB: '||to_char(trc_LibFpAB));
1207    -- Annual Payments
1208    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
1209    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
1210    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
1211    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
1212    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
1213    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
1214    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
1215    -- Pubilc Office Allowance
1216    py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
1217    py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
1218    py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffErn: '||to_char(trc_PblOffErn));
1219    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyPO: '||to_char(trc_LibFyPO));
1220    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpPO: '||to_char(trc_LibFpPO));
1221 
1222 EXCEPTION
1223    WHEN OTHERS THEN
1224       IF xpt_Msg = 'No Error' THEN
1225          xpt_Msg := 'LteCalc: '||TO_CHAR(SQLCODE);
1226       END IF;
1227       RAISE xpt_E;
1228 END LteCalc;
1229 
1230 
1231 PROCEDURE SeaCalc AS
1232 -- Variables
1233 --
1234    l_Np       NUMBER(15,2) DEFAULT 0;
1235    l_65Year   DATE;
1236 
1237 BEGIN
1238    hr_utility.set_location('py_za_tx_01032000.SeaCalc',1);
1239 -- Identify the calculation
1240 --
1241    trc_CalTyp := 'SeaCalc';
1242 
1243 -- Period Type Income
1244 --
1245    trc_TxbIncPtd :=
1246       ( bal_AST_PRCHD_RVAL_NRFI_RUN
1247       + bal_AST_PRCHD_RVAL_RFI_RUN
1248       + bal_BUR_AND_SCH_NRFI_RUN
1249       + bal_BUR_AND_SCH_RFI_RUN
1250       + bal_COMM_NRFI_RUN
1251       + bal_COMM_RFI_RUN
1252       + bal_COMP_ALL_NRFI_RUN
1253       + bal_COMP_ALL_RFI_RUN
1254       + bal_ENT_ALL_NRFI_RUN
1255       + bal_ENT_ALL_RFI_RUN
1256       + bal_FREE_ACCOM_NRFI_RUN
1257       + bal_FREE_ACCOM_RFI_RUN
1258       + bal_FREE_SERV_NRFI_RUN
1259       + bal_FREE_SERV_RFI_RUN
1260       + bal_LOW_LOANS_NRFI_RUN
1261       + bal_LOW_LOANS_RFI_RUN
1262       + bal_MLS_AND_VOUCH_NRFI_RUN
1263       + bal_MLS_AND_VOUCH_RFI_RUN
1264       + bal_MED_PAID_NRFI_RUN
1265       + bal_MED_PAID_RFI_RUN
1266       + bal_OTHER_TXB_ALL_NRFI_RUN
1267       + bal_OTHER_TXB_ALL_RFI_RUN
1268       + bal_OVTM_NRFI_RUN
1269       + bal_OVTM_RFI_RUN
1270       + bal_PYM_DBT_NRFI_RUN
1271       + bal_PYM_DBT_RFI_RUN
1272       + bal_RGT_AST_NRFI_RUN
1273       + bal_RGT_AST_RFI_RUN
1274       + bal_TXB_INC_NRFI_RUN
1275       + bal_TXB_INC_RFI_RUN
1276       + bal_TXB_PEN_NRFI_RUN
1277       + bal_TXB_PEN_RFI_RUN
1278       + bal_TEL_ALL_NRFI_RUN
1279       + bal_TEL_ALL_RFI_RUN
1280       + bal_TOOL_ALL_NRFI_RUN
1281       + bal_TOOL_ALL_RFI_RUN
1282       + bal_USE_VEH_NRFI_RUN
1283       + bal_USE_VEH_RFI_RUN
1284       );
1285 
1286 -- Check if any Period Income Exists
1287 --
1288    hr_utility.set_location('py_za_tx_01032000.SeaCalc',2);
1289    IF trc_TxbIncPtd = 0 THEN -- Pre-Earnings Calc
1290       hr_utility.set_location('py_za_tx_01032000.SeaCalc',3);
1291    -- Site Factor
1292    --
1293       trc_SitFactor := glb_ZA_WRK_DYS_PR_YR / dbi_SEA_WRK_DYS_WRK;
1294 
1295    -- Tax Rebates, Threshold Figure and Medical Aid
1296    -- Abatements
1297       -- Calculate the assignments 65 Year Date
1298       l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
1299 
1300       IF l_65Year BETWEEN dbi_ZA_TX_YR_STRT AND dbi_ZA_TX_YR_END THEN
1301          hr_utility.set_location('py_za_tx_01032000.SeaCalc',4);
1302       -- give the extra abatement
1303          trc_Rebate := glb_ZA_PRI_TX_RBT + glb_ZA_ADL_TX_RBT;
1304          trc_Threshold := glb_ZA_SC_TX_THRSHLD;
1305       ELSE
1306          hr_utility.set_location('py_za_tx_01032000.SeaCalc',5);
1307       -- not eligable for extra abatement
1308          trc_Rebate := glb_ZA_PRI_TX_RBT;
1309          trc_Threshold := glb_ZA_PRI_TX_THRSHLD;
1310       END IF;
1311 
1312    -- Base Income
1313    --
1314       -- Base Income
1315       trc_BseErn :=
1316          ( bal_AC_NRFI_RUN
1317          + bal_AC_RFI_RUN
1318          + bal_ANU_FRM_RET_FND_NRFI_RUN
1319          + bal_ANU_FRM_RET_FND_RFI_RUN
1320          + bal_PRCH_ANU_TXB_NRFI_RUN
1321          + bal_PRCH_ANU_TXB_RFI_RUN
1322          + bal_TXB_AP_NRFI_RUN
1323          + bal_TXB_AP_RFI_RUN
1324          );
1325       -- Taxable Base Income
1326       trc_TxbBseInc := trc_BseErn * trc_SitFactor;
1327       -- Threshold Check
1328       IF trc_TxbBseInc >= trc_Threshold THEN
1329          hr_utility.set_location('py_za_tx_01032000.SeaCalc',6);
1330       -- Tax Liability
1331          trc_TotLibBse := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbBseInc);
1332       ELSE
1333          hr_utility.set_location('py_za_tx_01032000.SeaCalc',7);
1334          trc_TotLibBse := 0;
1335       END IF;
1336 
1337    -- Annual Payments
1338    --
1339       -- Taxable Annual Payments Income
1340       trc_TxbAnnPymInc := trc_BseErn + trc_TxbBseInc;-- AP was taken as base!
1341       -- Threshold Check
1342       IF trc_TxbAnnPymInc >= trc_Threshold THEN
1343          hr_utility.set_location('py_za_tx_01032000.SeaCalc',8);
1344       -- Tax Liability
1345          trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1346          trc_LibFpAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibBse);
1347       ElSE
1348          hr_utility.set_location('py_za_tx_01032000.SeaCalc',9);
1349          trc_LibFpAP := 0;
1350       END IF;
1351 
1352       -- Base Income
1353       py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
1354       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
1355       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
1356 
1357       -- Annual Payments
1358       py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
1359       py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
1360       py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
1361       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
1362       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
1363       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
1364       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
1365 
1366 
1367    ELSE
1368       hr_utility.set_location('py_za_tx_01032000.SeaCalc',10);
1369    -- Site Factor
1370    --
1371       trc_SitFactor := glb_ZA_WRK_DYS_PR_YR / dbi_SEA_WRK_DYS_WRK;
1372 
1373    -- Rebates
1374       py_za_tx_utl_01032000.SetRebates;
1375 
1376    -- Abatements
1377       py_za_tx_utl_01032000.Abatements;
1378 
1379    hr_utility.set_location('py_za_tx_01032000.SeaCalc',11);
1380 
1381    -- Normal Income
1382    --
1383       -- Run Normal Income
1384       trc_NorIncPtd :=
1385          (bal_COMM_NRFI_RUN
1386          + bal_COMM_RFI_RUN
1387          + bal_COMP_ALL_NRFI_RUN
1388          + bal_COMP_ALL_RFI_RUN
1389          + bal_ENT_ALL_NRFI_RUN
1390          + bal_ENT_ALL_RFI_RUN
1391          + bal_OTHER_TXB_ALL_NRFI_RUN
1392          + bal_OTHER_TXB_ALL_RFI_RUN
1393          + bal_OVTM_NRFI_RUN
1394          + bal_OVTM_RFI_RUN
1395          + bal_TXB_INC_NRFI_RUN
1396          + bal_TXB_INC_RFI_RUN
1397          + bal_TXB_PEN_NRFI_RUN
1398          + bal_TXB_PEN_RFI_RUN
1399          + bal_TEL_ALL_NRFI_RUN
1400          + bal_TEL_ALL_RFI_RUN
1401          + bal_TOOL_ALL_NRFI_RUN
1402          + bal_TOOL_ALL_RFI_RUN
1403          );
1404       -- Skip the calculation if there is No Income
1405       IF trc_NorIncPtd <> 0 THEN
1406          hr_utility.set_location('py_za_tx_01032000.SeaCalc',12);
1407       -- Normal Earnings
1408          trc_NorErn := trc_NorIncPtd * trc_SitFactor;
1409       -- Taxable Normal Income
1410          trc_TxbNorInc := trc_NorErn - trc_PerTotAbm;
1411       -- Threshold Check
1412          IF trc_TxbNorInc >= trc_Threshold THEN
1413             hr_utility.set_location('py_za_tx_01032000.SeaCalc',13);
1414          -- Tax Liability
1415             trc_TotLibNI := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbNorInc);
1416             trc_LibFyNI := trc_TotLibNI - 0;
1417             trc_LibFpNI := trc_LibFyNI / trc_SitFactor;
1418          ELSE
1419             hr_utility.set_location('py_za_tx_01032000.SeaCalc',14);
1420             trc_TotLibNI := 0;
1421          END IF;
1422       ELSE
1423          hr_utility.set_location('py_za_tx_01032000.SeaCalc',15);
1424          trc_NorErn := 0;
1425          trc_TxbNorInc := 0;
1426          trc_TotLibNI := 0;
1427       END IF;
1428 
1429    -- Fringe Benefits
1430    --
1431       -- Run Fringe Benefits
1432       trc_FrnBenPtd :=
1433          ( bal_AST_PRCHD_RVAL_NRFI_RUN
1434          + bal_AST_PRCHD_RVAL_RFI_RUN
1435          + bal_BUR_AND_SCH_NRFI_RUN
1436          + bal_BUR_AND_SCH_RFI_RUN
1437          + bal_FREE_ACCOM_NRFI_RUN
1438          + bal_FREE_ACCOM_RFI_RUN
1439          + bal_FREE_SERV_NRFI_RUN
1440          + bal_FREE_SERV_RFI_RUN
1441          + bal_LOW_LOANS_NRFI_RUN
1442          + bal_LOW_LOANS_RFI_RUN
1443          + bal_MLS_AND_VOUCH_NRFI_RUN
1444          + bal_MLS_AND_VOUCH_RFI_RUN
1445          + bal_MED_PAID_NRFI_RUN
1446          + bal_MED_PAID_RFI_RUN
1447          + bal_PYM_DBT_NRFI_RUN
1448          + bal_PYM_DBT_RFI_RUN
1449          + bal_RGT_AST_NRFI_RUN
1450          + bal_RGT_AST_RFI_RUN
1451          + bal_USE_VEH_NRFI_RUN
1452          + bal_USE_VEH_RFI_RUN
1453          );
1454 
1455       -- Skip the calculation if there is No Income
1456       IF trc_FrnBenPtd <> 0 THEN
1457          hr_utility.set_location('py_za_tx_01032000.SeaCalc',16);
1458       -- Fringe Benefit Earnings
1459          trc_FrnBenErn := trc_FrnBenPtd * trc_SitFactor + trc_NorErn;
1460       -- Taxable Fringe Income
1461          trc_TxbFrnInc := trc_FrnBenErn - trc_PerTotAbm;
1462       -- Threshold Check
1463          IF trc_TxbFrnInc >= trc_Threshold THEN
1464             hr_utility.set_location('py_za_tx_01032000.SeaCalc',17);
1465          -- Tax Liability
1466             trc_TotLibFB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbFrnInc);
1467             trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
1468             trc_LibFpFB := trc_LibFyFB / trc_SitFactor;
1469          ELSE
1470             hr_utility.set_location('py_za_tx_01032000.SeaCalc',18);
1471             trc_TotLibFB := trc_TotLibNI;
1472          END IF;
1473       ELSE
1474          hr_utility.set_location('py_za_tx_01032000.SeaCalc',19);
1475          trc_FrnBenErn := trc_NorErn;
1476          trc_TxbFrnInc := trc_TxbNorInc;
1477          trc_TotLibFB := trc_TotLibNI;
1478       END IF;
1479 
1480    -- Annual Payments
1481    --
1482       -- Run Annual Payments
1483       trc_AnnPymPtd :=
1484          ( bal_AC_NRFI_RUN
1485          + bal_AC_RFI_RUN
1486          + bal_ANU_FRM_RET_FND_NRFI_RUN
1487          + bal_ANU_FRM_RET_FND_RFI_RUN
1488          + bal_PRCH_ANU_TXB_NRFI_RUN
1489          + bal_PRCH_ANU_TXB_RFI_RUN
1490          + bal_TXB_AP_NRFI_RUN
1491          + bal_TXB_AP_RFI_RUN
1492          );
1493       -- Skip the calculation if there is No Income
1494       IF trc_AnnPymPtd <> 0 THEN
1495          hr_utility.set_location('py_za_tx_01032000.SeaCalc',20);
1496       -- Annual Payments Earnings
1497          trc_AnnPymErn := trc_AnnPymPtd + trc_FrnBenErn;
1498       -- Taxable Annual Payments Income
1499          trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
1500       -- Threshold Check
1501          IF trc_TxbAnnPymInc >= trc_Threshold THEN
1502             hr_utility.set_location('py_za_tx_01032000.SeaCalc',21);
1503          -- Tax Liability
1504             trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1505             trc_LibFyAP := trc_TotLibAP - trc_TotLibFB;
1506          -- Negative Check
1507             IF trc_LibFyAP < 0 THEN
1508                hr_utility.set_location('py_za_tx_01032000.SeaCalc',22);
1509                trc_TotLibAP := trc_TotLibFB;
1510             -- Refund any tax paid
1511                trc_LibFpAP := 0;
1512             ELSE
1513                hr_utility.set_location('py_za_tx_01032000.SeaCalc',23);
1514                trc_LibFpAP := trc_LibFyAP;
1515             END IF;
1516          ELSE
1517             hr_utility.set_location('py_za_tx_01032000.SeaCalc',24);
1518             trc_TotLibAP := trc_TotLibFB;
1519          END IF;
1520       ELSE
1521          hr_utility.set_location('py_za_tx_01032000.SeaCalc',25);
1522          trc_AnnPymErn := trc_FrnBenErn;
1523          trc_TxbAnnPymInc := trc_TxbFrnInc;
1524          trc_TotLibAP := trc_TotLibFB;
1525       END IF;
1526 
1527 
1528    -- Net Pay Validation
1529    --
1530       py_za_tx_utl_01032000.NpVal;
1531 
1532    hr_utility.set_location('py_za_tx_01032000.SeaCalc',26);
1533 
1534    -- Set IT3A Indicator
1535    --
1536       IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
1537          hr_utility.set_location('py_za_tx_01032000.SeaCalc',27);
1538          trc_It3Ind := 0; -- Over Lim
1539       ELSE
1540          hr_utility.set_location('py_za_tx_01032000.SeaCalc',28);
1541          trc_It3Ind := 1; -- Under Lim
1542       END IF;
1543    END IF;
1544 
1545    -- Normal Income
1546    py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
1547    py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
1548    py_za_tx_utl_01032000.WriteHrTrace('trc_NorErn: '||to_char(trc_NorErn));
1549    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
1550    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibNI: '||to_char(trc_TotLibNI));
1551    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyNI: '||to_char(trc_LibFyNI));
1552    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpNI: '||to_char(trc_LibFpNI));
1553    -- Fringe Benefits
1554    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
1555    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
1556    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
1557    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
1558    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibFB: '||to_char(trc_TotLibFB));
1559    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyFB: '||to_char(trc_LibFyFB));
1560    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpFB: '||to_char(trc_LibFpFB));
1561    -- Annual Payments
1562    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
1563    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
1564    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
1565    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
1566    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
1567    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
1568    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
1569 
1570 EXCEPTION
1571    WHEN OTHERS THEN
1572       IF xpt_Msg = 'No Error' THEN
1573          xpt_Msg := 'SeaCalc: '||TO_CHAR(SQLCODE);
1574       END IF;
1575       RAISE xpt_E;
1576 END SeaCalc;
1577 
1578 
1579 PROCEDURE SitCalc AS
1580 -- Variables
1581 --
1582    l_Sl       BOOLEAN;
1583    l_Np       NUMBER(15,2);
1584 
1585 BEGIN
1586    hr_utility.set_location('py_za_tx_01032000.SitCalc',1);
1587 -- Identify the calculation
1588 --
1589    trc_CalTyp := 'SitCalc';
1590 
1591 -- Update Global Balance Values with correct TAXABLE values
1592 --
1593    py_za_tx_utl_01032000.TrvAll;
1594 
1595    hr_utility.set_location('py_za_tx_01032000.SitCalc',2);
1596 
1597    bal_PO_RFI_YTD :=
1598    bal_PO_RFI_YTD * glb_ZA_PBL_TX_PRC / 100;
1599 
1600    bal_PO_NRFI_YTD :=
1601    bal_PO_NRFI_YTD * glb_ZA_PBL_TX_PRC / 100;
1602 
1603 -- Ytd Taxable Income
1604 --
1605    trc_TxbIncYtd :=
1606    ( bal_AST_PRCHD_RVAL_NRFI_YTD
1607    + bal_AST_PRCHD_RVAL_RFI_YTD
1608    + bal_BP_YTD
1609    + bal_BUR_AND_SCH_NRFI_YTD
1610    + bal_BUR_AND_SCH_RFI_YTD
1611    + bal_COMM_NRFI_YTD
1612    + bal_COMM_RFI_YTD
1613    + bal_COMP_ALL_NRFI_YTD
1614    + bal_COMP_ALL_RFI_YTD
1615    + bal_ENT_ALL_NRFI_YTD
1616    + bal_ENT_ALL_RFI_YTD
1617    + bal_FREE_ACCOM_NRFI_YTD
1618    + bal_FREE_ACCOM_RFI_YTD
1619    + bal_FREE_SERV_NRFI_YTD
1620    + bal_FREE_SERV_RFI_YTD
1621    + bal_LOW_LOANS_NRFI_YTD
1622    + bal_LOW_LOANS_RFI_YTD
1623    + bal_MLS_AND_VOUCH_NRFI_YTD
1624    + bal_MLS_AND_VOUCH_RFI_YTD
1625    + bal_MED_PAID_NRFI_YTD
1626    + bal_MED_PAID_RFI_YTD
1627    + bal_OTHER_TXB_ALL_NRFI_YTD
1628    + bal_OTHER_TXB_ALL_RFI_YTD
1629    + bal_OVTM_NRFI_YTD
1630    + bal_OVTM_RFI_YTD
1631    + bal_PYM_DBT_NRFI_YTD
1632    + bal_PYM_DBT_RFI_YTD
1633    + bal_RGT_AST_NRFI_YTD
1634    + bal_RGT_AST_RFI_YTD
1635    + bal_TXB_INC_NRFI_YTD
1636    + bal_TXB_INC_RFI_YTD
1637    + bal_TXB_PEN_NRFI_YTD
1638    + bal_TXB_PEN_RFI_YTD
1639    + bal_TEL_ALL_NRFI_YTD
1640    + bal_TEL_ALL_RFI_YTD
1641    + bal_TOOL_ALL_NRFI_YTD
1642    + bal_TOOL_ALL_RFI_YTD
1643    + bal_TA_NRFI_YTD
1644    + bal_TA_RFI_YTD
1645    + bal_USE_VEH_NRFI_YTD
1646    + bal_USE_VEH_RFI_YTD
1647    );
1648 
1649    hr_utility.set_location('py_za_tx_01032000.SitCalc',3);
1650 
1651 -- Site Factor
1652 --
1653    trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032000.DaysWorked;
1654 
1655    hr_utility.set_location('py_za_tx_01032000.SitCalc',4);
1656 
1657 -- Rebates
1658    py_za_tx_utl_01032000.SetRebates;
1659 
1660 -- Abatements
1661    py_za_tx_utl_01032000.Abatements;
1662 
1663    hr_utility.set_location('py_za_tx_01032000.SitCalc',5);
1664 
1665 -- Normal Income
1666 --
1667    -- Ytd Normal Income
1668    trc_NorIncYtd :=
1669       ( bal_COMM_NRFI_YTD
1670       + bal_COMM_RFI_YTD
1671       + bal_COMP_ALL_NRFI_YTD
1672       + bal_COMP_ALL_RFI_YTD
1673       + bal_ENT_ALL_NRFI_YTD
1674       + bal_ENT_ALL_RFI_YTD
1675       + bal_OTHER_TXB_ALL_NRFI_YTD
1676       + bal_OTHER_TXB_ALL_RFI_YTD
1677       + bal_OVTM_NRFI_YTD
1678       + bal_OVTM_RFI_YTD
1679       + bal_TXB_INC_NRFI_YTD
1680       + bal_TXB_INC_RFI_YTD
1681       + bal_TXB_PEN_NRFI_YTD
1682       + bal_TXB_PEN_RFI_YTD
1683       + bal_TEL_ALL_NRFI_YTD
1684       + bal_TEL_ALL_RFI_YTD
1685       + bal_TOOL_ALL_NRFI_YTD
1686       + bal_TOOL_ALL_RFI_YTD
1687       );
1688    -- Skip the calculation if there is No Income
1689    IF trc_NorIncYtd <> 0 THEN
1690       hr_utility.set_location('py_za_tx_01032000.SitCalc',6);
1691    -- Normal Earnings
1692       trc_NorErn := trc_NorIncYtd * trc_SitFactor;
1693    -- Taxable Normal Income
1694       trc_TxbNorInc := trc_NorErn - trc_PerTotAbm;
1695    -- Threshold Check
1696       IF trc_TxbNorInc >= trc_Threshold THEN
1697          hr_utility.set_location('py_za_tx_01032000.SitCalc',7);
1698       -- Tax Liability
1699          trc_TotLibNI := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbNorInc);
1700          trc_LibFyNI := (trc_TotLibNI - 0) / trc_SitFactor;
1701          trc_LibFpNI := trc_LibFyNI - bal_TX_ON_NI_YTD;
1702       ELSE
1703          hr_utility.set_location('py_za_tx_01032000.SitCalc',8);
1704          trc_TotLibNI := 0;
1705       -- Refund any tax paid
1706          trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
1707          trc_NpValNIOvr := TRUE;
1708       END IF;
1709    ELSE
1710       hr_utility.set_location('py_za_tx_01032000.SitCalc',9);
1711       trc_NorErn := 0;
1712       trc_TxbNorInc := 0;
1713       trc_TotLibNI := 0;
1714    -- Refund any tax paid
1715       trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
1716       trc_NpValNIOvr := TRUE;
1717    END IF;
1718 
1719 -- Fringe Benefits
1720 --
1721    -- Ytd Fringe Benefits
1722    trc_FrnBenYtd :=
1723       ( bal_AST_PRCHD_RVAL_NRFI_YTD
1724       + bal_AST_PRCHD_RVAL_RFI_YTD
1725       + bal_BUR_AND_SCH_NRFI_YTD
1726       + bal_BUR_AND_SCH_RFI_YTD
1727       + bal_FREE_ACCOM_NRFI_YTD
1728       + bal_FREE_ACCOM_RFI_YTD
1729       + bal_FREE_SERV_NRFI_YTD
1730       + bal_FREE_SERV_RFI_YTD
1731       + bal_LOW_LOANS_NRFI_YTD
1732       + bal_LOW_LOANS_RFI_YTD
1733       + bal_MLS_AND_VOUCH_NRFI_YTD
1734       + bal_MLS_AND_VOUCH_RFI_YTD
1735       + bal_MED_PAID_NRFI_YTD
1736       + bal_MED_PAID_RFI_YTD
1737       + bal_PYM_DBT_NRFI_YTD
1738       + bal_PYM_DBT_RFI_YTD
1739       + bal_RGT_AST_NRFI_YTD
1740       + bal_RGT_AST_RFI_YTD
1741       + bal_USE_VEH_NRFI_YTD
1742       + bal_USE_VEH_RFI_YTD
1743       );
1744 
1745    -- Skip the calculation if there is No Income
1746    IF trc_FrnBenYtd <> 0 THEN
1747       hr_utility.set_location('py_za_tx_01032000.SitCalc',10);
1748    -- Fringe Benefit Earnings
1749       trc_FrnBenErn := trc_FrnBenYtd * trc_SitFactor + trc_NorErn;
1750    -- Taxable Fringe Income
1751       trc_TxbFrnInc := trc_FrnBenErn - trc_PerTotAbm;
1752    -- Threshold Check
1753       IF trc_TxbFrnInc >= trc_Threshold THEN
1754          hr_utility.set_location('py_za_tx_01032000.SitCalc',11);
1755       -- Tax Liability
1756          trc_TotLibFB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbFrnInc);
1757          trc_LibFyFB := (trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI)) / trc_SitFactor;
1758          trc_LibFpFB := trc_LibFyFB - bal_TX_ON_FB_YTD;
1759       ElSE
1760          hr_utility.set_location('py_za_tx_01032000.SitCalc',12);
1761          trc_TotLibFB := trc_TotLibNI;
1762       -- Refund any tax paid
1763          trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
1764          trc_NpValFBOvr := TRUE;
1765       END IF;
1766    ELSE
1767       hr_utility.set_location('py_za_tx_01032000.SitCalc',13);
1768       trc_FrnBenErn := trc_NorErn;
1769       trc_TxbFrnInc := trc_TxbNorInc;
1770       trc_TotLibFB := trc_TotLibNI;
1771    -- Refund any tax paid
1772       trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
1773       trc_NpValFBOvr := TRUE;
1774    END IF;
1775 
1776 -- Travel allowance
1777 --
1778    -- Ytd Travel Allowance
1779    trc_TrvAllYtd :=
1780       ( bal_TA_NRFI_YTD
1781       + bal_TA_RFI_YTD
1782       );
1783    -- Skip the calculation if there is No Income
1784    IF trc_TrvAllYtd <> 0 THEN
1785       hr_utility.set_location('py_za_tx_01032000.SitCalc',14);
1786    -- Travel Earnings
1787       trc_TrvAllErn := trc_TrvAllYtd * trc_SitFactor + trc_FrnBenErn;
1788    -- Taxable Travel Income
1789       trc_TxbTrvInc := trc_TrvAllErn - trc_PerTotAbm;
1790    -- Threshold Check
1791       IF trc_TxbTrvInc >= trc_Threshold THEN
1792          hr_utility.set_location('py_za_tx_01032000.SitCalc',15);
1793       -- Tax Liability
1794          trc_TotLibTA := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbTrvInc);
1795          trc_LibFyTA := (trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB)) / trc_SitFactor;
1796          trc_LibFpTA := trc_LibFyTA - bal_TX_ON_TA_YTD;
1797       ELSE
1798          hr_utility.set_location('py_za_tx_01032000.SitCalc',16);
1799          trc_TotLibTA := trc_TotLibFB;
1800       -- Refund any tax paid
1801          trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
1802          trc_NpValTAOvr := TRUE;
1803       END IF;
1804    ELSE
1805       hr_utility.set_location('py_za_tx_01032000.SitCalc',17);
1806       trc_TrvAllErn := trc_FrnBenErn;
1807       trc_TxbTrvInc := trc_TxbFrnInc;
1808       trc_TotLibTA := trc_TotLibFB;
1809    -- Refund any tax paid
1810       trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
1811       trc_NpValTAOvr := TRUE;
1812    END IF;
1813 
1814 -- Bonus Provision
1815 --
1816    -- Ytd Bonus Prvision
1817    trc_BonProYtd := bal_BP_YTD;
1818    -- Skip the calculation if there is No Income
1819    IF trc_BonProYtd <> 0 THEN
1820       hr_utility.set_location('py_za_tx_01032000.SitCalc',18);
1821    -- Bonus Provision Earnings
1822       trc_BonProErn := trc_BonProYtd * trc_SitFactor + trc_TrvAllErn;
1823    -- Taxable Bonus Provision Income
1824       trc_TxbBonProInc := trc_BonProErn - trc_PerTotAbm;
1825    -- Threshold Check
1826       IF trc_TxbBonProInc >= trc_Threshold THEN
1827          hr_utility.set_location('py_za_tx_01032000.SitCalc',19);
1828       -- Tax Liability
1829          trc_TotLibBP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbBonProInc);
1830          trc_LibFyBP := (trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA)) / trc_SitFactor;
1831          trc_LibFpBP := trc_LibFyBP - bal_TX_ON_BP_YTD;
1832       ELSE
1833          hr_utility.set_location('py_za_tx_01032000.SitCalc',20);
1834          trc_TotLibBP := trc_TotLibTA;
1835       -- Refund any tax paid
1836          trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
1837          trc_NpValBPOvr := TRUE;
1838       END IF;
1839    ELSE
1840       hr_utility.set_location('py_za_tx_01032000.SitCalc',21);
1841       trc_BonProErn := trc_TrvAllErn;
1842       trc_TxbBonProInc := trc_TxbTrvInc;
1843       trc_TotLibBP := trc_TotLibTA;
1844    -- Refund any tax paid
1845       trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
1846       trc_NpValBPOvr := TRUE;
1847    END IF;
1848 
1849 -- Annual Bonus
1850 --
1851    -- Ytd Annual Bonus
1852    trc_AnnBonYtd :=
1853       ( bal_AB_NRFI_YTD
1854       + bal_AB_RFI_YTD
1855       );
1856    -- Skip the calculation if there is No Income
1857    IF trc_AnnBonYtd <> 0 THEN
1858       hr_utility.set_location('py_za_tx_01032000.SitCalc',22);
1859    -- Annual Bonus Earnings
1860       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
1861    -- Taxable Annual Bonus Income
1862       trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
1863    -- Threshold Check
1864       IF trc_TxbAnnBonInc >= trc_Threshold THEN
1865          hr_utility.set_location('py_za_tx_01032000.SitCalc',23);
1866       -- Tax Liability
1867          trc_TotLibAB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnBonInc);
1868          trc_LibFyAB := trc_TotLibAB - trc_TotLibTA;
1869       -- Negative Check
1870          IF trc_LibFyAB < 0 THEN
1871             hr_utility.set_location('py_za_tx_01032000.SitCalc',24);
1872             trc_TotLibAB := trc_TotLibTA;
1873          -- Refund any tax paid
1874             trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1875             trc_NpValABOvr := TRUE;
1876          ELSE
1877             hr_utility.set_location('py_za_tx_01032000.SitCalc',25);
1878          -- Check Bonus Provision
1879             IF trc_BonProYtd <> 0 THEN
1880                hr_utility.set_location('py_za_tx_01032000.SitCalc',26);
1881                trc_LibFpAB := trc_LibFyAB - (bal_TX_ON_BP_YTD
1882                                             + trc_LibFpBP
1883                                             + bal_TX_ON_AB_YTD
1884                                             );
1885             ELSE
1886                hr_utility.set_location('py_za_tx_01032000.SitCalc',27);
1887                trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
1888             END IF;
1889          END IF;
1890       ELSE
1891          hr_utility.set_location('py_za_tx_01032000.SitCalc',28);
1892          trc_TotLibAB := trc_TotLibTA;
1893       -- Refund any tax paid
1894          trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1895          trc_NpValABOvr := TRUE;
1896       END IF;
1897    ELSE
1898       hr_utility.set_location('py_za_tx_01032000.SitCalc',29);
1899       trc_AnnBonErn := trc_TrvAllErn;
1900       trc_TxbAnnBonInc := trc_TxbTrvInc;
1901       trc_TotLibAB := trc_TotLibTA;
1902    -- Refund any tax paid
1903       trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1904       trc_NpValABOvr := TRUE;
1905    END IF;
1906 
1907 -- Annual Payments
1908 --
1909    -- Ytd Annual Payments
1910    trc_AnnPymYtd :=
1911       ( bal_AC_NRFI_YTD
1912       + bal_AC_RFI_YTD
1913       + bal_ANU_FRM_RET_FND_NRFI_YTD
1914       + bal_ANU_FRM_RET_FND_RFI_YTD
1915       + bal_PRCH_ANU_TXB_NRFI_YTD
1916       + bal_PRCH_ANU_TXB_RFI_YTD
1917       + bal_TXB_AP_NRFI_YTD
1918       + bal_TXB_AP_RFI_YTD
1919       );
1920    -- Skip the calculation if there is No Income
1921    IF trc_AnnPymYtd <> 0 THEN
1922       hr_utility.set_location('py_za_tx_01032000.SitCalc',30);
1923    -- Annual Payments Earnings
1924       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
1925    -- Taxable Annual Payments Income
1926       trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
1927    -- Threshold Check
1928       IF trc_TxbAnnPymInc >= trc_Threshold THEN
1929          hr_utility.set_location('py_za_tx_01032000.SitCalc',31);
1930       -- Tax Liability
1931          trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1932          trc_LibFyAP := trc_TotLibAP - trc_TotLibAB;
1933       -- Negative Check
1934          IF trc_LibFyAP < 0 THEN
1935             hr_utility.set_location('py_za_tx_01032000.SitCalc',32);
1936             trc_TotLibAP := trc_TotLibAB;
1937          -- Refund any tax paid
1938             trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
1939             trc_NpValAPOvr := TRUE;
1940          ELSE
1941             hr_utility.set_location('py_za_tx_01032000.SitCalc',33);
1942             trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
1943          END IF;
1944       ELSE
1945          hr_utility.set_location('py_za_tx_01032000.SitCalc',34);
1946          trc_TotLibAP := trc_TotLibAB;
1947       -- Refund any tax paid
1948          trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
1949          trc_NpValAPOvr := TRUE;
1950       END IF;
1951    ELSE
1952       hr_utility.set_location('py_za_tx_01032000.SitCalc',35);
1953       trc_AnnPymErn := trc_AnnBonErn;
1954       trc_TxbAnnPymInc := trc_TxbAnnBonInc;
1955       trc_TotLibAP := trc_TotLibAB;
1956    -- Refund any tax paid
1957       trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
1958       trc_NpValAPOvr := TRUE;
1959    END IF;
1960 
1961 -- Public Office Allowance
1962 --
1963    -- Ytd Public Office Allowance
1964    trc_PblOffYtd :=
1965       ( bal_PO_NRFI_YTD
1966       + bal_PO_RFI_YTD
1967       );
1968    -- Skip the calculation if there is No Income
1969    IF trc_PblOffYtd <> 0 THEN
1970       hr_utility.set_location('py_za_tx_01032000.SitCalc',36);
1971    -- Public Office Earnings
1972       trc_PblOffErn := trc_PblOffYtd * trc_SitFactor;
1973    -- Tax Liability
1974       trc_LibFyPO := (trc_PblOffErn * glb_ZA_PBL_TX_RTE / 100)/trc_SitFactor;
1975       trc_LibFpPO := trc_LibFyPO -  bal_TX_ON_PO_YTD;
1976    ELSE
1977       hr_utility.set_location('py_za_tx_01032000.SitCalc',37);
1978       trc_LibFyPO := 0;
1979    -- Refund any tax paid
1980       trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
1981       trc_NpValPOOvr := TRUE;
1982    END IF;
1983 
1984 -- Net Pay Validation
1985 --
1986    -- Net Pay of the Employee
1987    l_Np := bal_NET_PAY_RUN;
1988    -- Site Limit Check
1989    IF trc_TxbAnnPymInc + trc_PblOffErn < glb_ZA_SIT_LIM THEN
1990       hr_utility.set_location('py_za_tx_01032000.SitCalc',38);
1991       l_Sl := TRUE;
1992    ELSE
1993       hr_utility.set_location('py_za_tx_01032000.SitCalc',39);
1994       l_Sl := FALSE;
1995    END IF;
1996 
1997    py_za_tx_utl_01032000.NpVal(p_Rf => l_Sl);
1998 
1999    hr_utility.set_location('py_za_tx_01032000.SitCalc',40);
2000 
2001 -- Set IT3A Indicator
2002 --
2003    IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
2004       hr_utility.set_location('py_za_tx_01032000.SitCalc',41);
2005       trc_It3Ind := 0; -- Over Lim
2006    ELSE
2007       hr_utility.set_location('py_za_tx_01032000.SitCalc',42);
2008       trc_It3Ind := 1; -- Under Lim
2009    END IF;
2010 
2011 -- Calculate Total Taxable Income and pass out
2012 --
2013    trc_OUpdFig := (trc_TxbAnnPymInc + trc_PblOffErn) - bal_TOT_TXB_INC_ITD;
2014 
2015    hr_utility.set_location('py_za_tx_01032000.SitCalc',43);
2016 
2017    -- Base Income
2018    py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
2019    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
2020    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
2021    -- Normal Income
2022    py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
2023    py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
2024    py_za_tx_utl_01032000.WriteHrTrace('trc_NorErn: '||to_char(trc_NorErn));
2025    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
2026    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibNI: '||to_char(trc_TotLibNI));
2027    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyNI: '||to_char(trc_LibFyNI));
2028    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpNI: '||to_char(trc_LibFpNI));
2029    -- Fringe Benefits
2030    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
2031    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
2032    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
2033    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
2034    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibFB: '||to_char(trc_TotLibFB));
2035    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyFB: '||to_char(trc_LibFyFB));
2036    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpFB: '||to_char(trc_LibFpFB));
2037    -- Travel Allowance
2038    py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
2039    py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
2040    py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
2041    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
2042    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibTA: '||to_char(trc_TotLibTA));
2043    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyTA: '||to_char(trc_LibFyTA));
2044    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpTA: '||to_char(trc_LibFpTA));
2045    -- Bonus Provision
2046    py_za_tx_utl_01032000.WriteHrTrace('trc_BonProYtd: '||to_char(trc_BonProYtd));
2047    py_za_tx_utl_01032000.WriteHrTrace('trc_BonProPtd: '||to_char(trc_BonProPtd));
2048    py_za_tx_utl_01032000.WriteHrTrace('trc_BonProErn: '||to_char(trc_BonProErn));
2049    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
2050    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBP: '||to_char(trc_TotLibBP));
2051    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyBP: '||to_char(trc_LibFyBP));
2052    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpBP: '||to_char(trc_LibFpBP));
2053    -- Annual Bonus
2054    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
2055    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
2056    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
2057    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
2058    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAB: '||to_char(trc_TotLibAB));
2059    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAB: '||to_char(trc_LibFyAB));
2060    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAB: '||to_char(trc_LibFpAB));
2061    -- Annual Payments
2062    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
2063    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
2064    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
2065    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2066    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
2067    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
2068    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
2069 
2070 EXCEPTION
2071    WHEN OTHERS THEN
2072       IF xpt_Msg = 'No Error' THEN
2073          xpt_Msg := 'SitCalc: '||TO_CHAR(SQLCODE);
2074       END IF;
2075       RAISE xpt_E;
2076 END SitCalc;
2077 
2078 
2079 PROCEDURE DirCalc AS
2080 -- Variables
2081 --
2082    l_Np       NUMBER(15,2) DEFAULT 0;
2083 
2084 BEGIN
2085    hr_utility.set_location('py_za_tx_01032000.DirCalc',1);
2086 -- Identify the calculation
2087 --
2088    trc_CalTyp := 'DirCalc';
2089 
2090 -- Update Global Balance Values with correct TAXABLE values
2091 --
2092    py_za_tx_utl_01032000.TrvAll;
2093 
2094    hr_utility.set_location('py_za_tx_01032000.DirCalc',2);
2095 
2096    bal_PO_RFI_YTD :=
2097    bal_PO_RFI_YTD * glb_ZA_PBL_TX_PRC / 100;
2098 
2099    bal_PO_NRFI_YTD :=
2100    bal_PO_NRFI_YTD * glb_ZA_PBL_TX_PRC / 100;
2101 
2102 -- Normal Income
2103 --
2104    -- Ytd Normal Income
2105    trc_NorIncYtd :=
2106       ( bal_COMM_NRFI_YTD
2107       + bal_COMM_RFI_YTD
2108       + bal_COMP_ALL_NRFI_YTD
2109       + bal_COMP_ALL_RFI_YTD
2110       + bal_ENT_ALL_NRFI_YTD
2111       + bal_ENT_ALL_RFI_YTD
2112       + bal_OTHER_TXB_ALL_NRFI_YTD
2113       + bal_OTHER_TXB_ALL_RFI_YTD
2114       + bal_OVTM_NRFI_YTD
2115       + bal_OVTM_RFI_YTD
2116       + bal_TXB_INC_NRFI_YTD
2117       + bal_TXB_INC_RFI_YTD
2118       + bal_TXB_PEN_NRFI_YTD
2119       + bal_TXB_PEN_RFI_YTD
2120       + bal_TEL_ALL_NRFI_YTD
2121       + bal_TEL_ALL_RFI_YTD
2122       + bal_TOOL_ALL_NRFI_YTD
2123       + bal_TOOL_ALL_RFI_YTD
2124       );
2125    -- Skip the calculation if there is No Income
2126    IF trc_NorIncYtd <> 0 THEN
2127       hr_utility.set_location('py_za_tx_01032000.DirCalc',3);
2128    -- Normal Earnings
2129       trc_NorErn := trc_NorIncYtd;
2130    -- Tax Liability
2131       trc_TotLibNI := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_NorErn);
2132       trc_LibFyNI := trc_TotLibNI - 0;
2133       trc_LibFpNI := trc_LibFyNI - bal_TX_ON_NI_YTD;
2134    ELSE
2135       hr_utility.set_location('py_za_tx_01032000.DirCalc',4);
2136       trc_NorErn := 0;
2137       trc_TotLibNI := 0;
2138    -- Refund any tax paid
2139       trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
2140       trc_NpValNIOvr := TRUE;
2141    END IF;
2142 
2143 -- Fringe Benefits
2144 --
2145    -- Ytd Fringe Benefits
2146    trc_FrnBenYtd :=
2147       ( bal_AST_PRCHD_RVAL_NRFI_YTD
2148       + bal_AST_PRCHD_RVAL_RFI_YTD
2149       + bal_BUR_AND_SCH_NRFI_YTD
2150       + bal_BUR_AND_SCH_RFI_YTD
2151       + bal_FREE_ACCOM_NRFI_YTD
2152       + bal_FREE_ACCOM_RFI_YTD
2153       + bal_FREE_SERV_NRFI_YTD
2154       + bal_FREE_SERV_RFI_YTD
2155       + bal_LOW_LOANS_NRFI_YTD
2156       + bal_LOW_LOANS_RFI_YTD
2157       + bal_MLS_AND_VOUCH_NRFI_YTD
2158       + bal_MLS_AND_VOUCH_RFI_YTD
2159       + bal_MED_PAID_NRFI_YTD
2160       + bal_MED_PAID_RFI_YTD
2161       + bal_PYM_DBT_NRFI_YTD
2162       + bal_PYM_DBT_RFI_YTD
2163       + bal_RGT_AST_NRFI_YTD
2164       + bal_RGT_AST_RFI_YTD
2165       + bal_USE_VEH_NRFI_YTD
2166       + bal_USE_VEH_RFI_YTD
2167       );
2168    -- Skip the calculation if there is No Income
2169    IF trc_FrnBenYtd <> 0 THEN
2170       hr_utility.set_location('py_za_tx_01032000.DirCalc',5);
2171    -- Fringe Benefit Earnings
2172       trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
2173    -- Tax Liability
2174       trc_TotLibFB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_FrnBenErn);
2175       trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
2176       trc_LibFpFB := trc_LibFyFB - bal_TX_ON_FB_YTD;
2177    ELSE
2178       hr_utility.set_location('py_za_tx_01032000.DirCalc',6);
2179       trc_FrnBenErn := trc_NorErn;
2180       trc_TotLibFB := trc_TotLibNI;
2181    -- Refund any tax paid
2182       trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
2183       trc_NpValFBOvr := TRUE;
2184    END IF;
2185 
2186 -- Travel Allowance
2187 --
2188    -- Ytd Travel Allowance
2189    trc_TrvAllYtd :=
2190       ( bal_TA_NRFI_YTD
2191       + bal_TA_RFI_YTD
2192       );
2193    -- Skip the calculation if there is No Income
2194    IF trc_TrvAllYtd <> 0 THEN
2195       hr_utility.set_location('py_za_tx_01032000.DirCalc',7);
2196    -- Travel Allowance Earnings
2197       trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
2198    -- Tax Liability
2199       trc_TotLibTA := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TrvAllErn);
2200       trc_LibFyTA := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
2201       trc_LibFpTA := trc_LibFyTA - bal_TX_ON_TA_YTD;
2202    ELSE
2203       hr_utility.set_location('py_za_tx_01032000.DirCalc',8);
2204       trc_TrvAllErn := trc_FrnBenErn; --Cascade Figure
2205       trc_TotLibTA := trc_TotLibFB;
2206    -- Refund any tax paid
2207       trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
2208       trc_NpValTAOvr := TRUE;
2209    END IF;
2210 
2211 -- Bonus Provision
2212 --
2213    -- Ytd Bonus Provision
2214    trc_BonProYtd := bal_BP_YTD;
2215    -- Skip the calculation if there is No Income
2216    IF trc_BonProYtd <> 0 THEN
2217       hr_utility.set_location('py_za_tx_01032000.DirCalc',9);
2218    -- Bonus Provision Earnings
2219       trc_BonProErn := trc_BonProYtd + trc_TrvAllErn;
2220    -- Tax Liability
2221       trc_TotLibBP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_BonProErn);
2222       trc_LibFyBP := trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA);
2223       trc_LibFpBP := trc_LibFyBP - bal_TX_ON_BP_YTD;
2224    ELSE
2225       hr_utility.set_location('py_za_tx_01032000.DirCalc',10);
2226       trc_BonProErn := trc_TrvAllErn;
2227       trc_TotLibBP := trc_TotLibTA;
2228    -- Refund any tax paid
2229       trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
2230       trc_NpValBPOvr := TRUE;
2231    END IF;
2232 
2233 -- Annual Bonus
2234 --
2235    -- Ytd Annual Bonus
2236    trc_AnnBonYtd :=
2237       ( bal_AB_NRFI_YTD
2238       + bal_AB_RFI_YTD
2239       );
2240    -- Skip the calculation if there is No Income
2241    IF trc_AnnBonYtd <> 0 THEN
2242       hr_utility.set_location('py_za_tx_01032000.DirCalc',11);
2243    -- Annual Bonus Earnings
2244       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
2245    -- Tax Liability
2246       trc_TotLibAB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_AnnBonErn);
2247       trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
2248    -- Check Bonus Provision
2249       IF trc_BonProYtd <> 0 THEN
2250          hr_utility.set_location('py_za_tx_01032000.DirCalc',12);
2251       -- Check Bonus Provision Frequency
2252          IF dbi_BP_TX_RCV = 'A' THEN
2253             hr_utility.set_location('py_za_tx_01032000.DirCalc',13);
2254             trc_LibFpAB := 0;
2255          ELSE
2256             hr_utility.set_location('py_za_tx_01032000.DirCalc',14);
2257             trc_LibFpAB :=
2258             trc_LibFyAB - (bal_TX_ON_BP_YTD
2259                           + trc_LibFpBP
2260                           + bal_TX_ON_AB_YTD);
2261          END IF;
2262       ELSE
2263          hr_utility.set_location('py_za_tx_01032000.DirCalc',15);
2264          trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
2265       END IF;
2266    ELSE
2267       hr_utility.set_location('py_za_tx_01032000.DirCalc',16);
2268       trc_AnnBonErn := trc_TrvAllErn;
2269       trc_TotLibAB := trc_TotLibTA;
2270    -- Refund any tax paid
2271       trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
2272       trc_NpValABOvr := TRUE;
2273    END IF;
2274 
2275 -- Annual Payments
2276 --
2277    -- Ytd Annual Payments
2278    trc_AnnPymYtd :=
2279       ( bal_AC_NRFI_YTD
2280       + bal_AC_RFI_YTD
2281       + bal_ANU_FRM_RET_FND_NRFI_YTD
2282       + bal_ANU_FRM_RET_FND_RFI_YTD
2283       + bal_PRCH_ANU_TXB_NRFI_YTD
2284       + bal_PRCH_ANU_TXB_RFI_YTD
2285       + bal_TXB_AP_NRFI_YTD
2286       + bal_TXB_AP_RFI_YTD
2287       );
2288    -- Skip the calculation if there is No Income
2289    IF trc_AnnPymYtd <> 0 THEN
2290       hr_utility.set_location('py_za_tx_01032000.DirCalc',17);
2291    -- Annual Payments Earnings
2292       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
2293    -- Tax Liability
2294       trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_AnnPymErn);
2295       trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
2296       trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
2297    ElSE
2298       hr_utility.set_location('py_za_tx_01032000.DirCalc',18);
2299       trc_AnnPymErn := trc_AnnBonErn;
2300       trc_TotLibAP := trc_TotLibAB;
2301    -- Refund any tax paid
2302       trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
2303       trc_NpValAPOvr := TRUE;
2304    END IF;
2305 
2306 -- Public Office Allowance
2307 --
2308    -- Ytd Public Office Allowance
2309    trc_PblOffYtd :=
2310       ( bal_PO_NRFI_YTD
2311       + bal_PO_RFI_YTD
2312       );
2313    -- Skip the calculation if there is No Income
2314    IF trc_PblOffYtd <> 0 THEN
2315       hr_utility.set_location('py_za_tx_01032000.DirCalc',19);
2316    -- Tax Liability
2317       trc_LibFyPO := trc_PblOffYtd * glb_ZA_PBL_TX_RTE / 100;
2318       trc_LibFpPO := trc_LibFyPO -  bal_TX_ON_PO_YTD;
2319    ELSE
2320       hr_utility.set_location('py_za_tx_01032000.DirCalc',20);
2321       trc_LibFyPO := 0;
2322    -- Refund any tax paid
2323       trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
2324       trc_NpValPOOvr := TRUE;
2325    END IF;
2326 
2327 -- Net Pay Validation
2328 --
2329    py_za_tx_utl_01032000.NpVal(p_Rf => TRUE);
2330 
2331    hr_utility.set_location('py_za_tx_01032000.DirCalc',21);
2332 
2333 -- Tax Percentage Indicator
2334 --
2335    IF dbi_TX_STA = 'D' THEN
2336       hr_utility.set_location('py_za_tx_01032000.DirCalc',22);
2337       trc_TxPercVal := dbi_TX_DIR_VAL;
2338    ELSIF dbi_TX_STA = 'E' THEN
2339       hr_utility.set_location('py_za_tx_01032000.DirCalc',23);
2340       trc_TxPercVal := glb_ZA_CC_TX_PRC;
2341    ELSIF dbi_TX_STA = 'F' THEN
2342       hr_utility.set_location('py_za_tx_01032000.DirCalc',24);
2343       trc_TxPercVal := glb_ZA_TMP_TX_RTE;
2344    ELSE
2345       hr_utility.set_location('py_za_tx_01032000.DirCalc',25);
2346       trc_TxPercVal := 0;
2347    END IF;
2348 
2349    hr_utility.set_location('py_za_tx_01032000.DirCalc',26);
2350 
2351    -- Base Income
2352    py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
2353    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
2354    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
2355    -- Normal Income
2356    py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
2357    py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
2358    py_za_tx_utl_01032000.WriteHrTrace('trc_NorErn: '||to_char(trc_NorErn));
2359    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
2360    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibNI: '||to_char(trc_TotLibNI));
2361    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyNI: '||to_char(trc_LibFyNI));
2362    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpNI: '||to_char(trc_LibFpNI));
2363    -- Fringe Benefits
2364    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
2365    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
2366    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
2367    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
2368    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibFB: '||to_char(trc_TotLibFB));
2369    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyFB: '||to_char(trc_LibFyFB));
2370    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpFB: '||to_char(trc_LibFpFB));
2371    -- Travel Allowance
2372    py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
2373    py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
2374    py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
2375    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
2376    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibTA: '||to_char(trc_TotLibTA));
2377    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyTA: '||to_char(trc_LibFyTA));
2378    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpTA: '||to_char(trc_LibFpTA));
2379    -- Bonus Provision
2380    py_za_tx_utl_01032000.WriteHrTrace('trc_BonProYtd: '||to_char(trc_BonProYtd));
2381    py_za_tx_utl_01032000.WriteHrTrace('trc_BonProPtd: '||to_char(trc_BonProPtd));
2382    py_za_tx_utl_01032000.WriteHrTrace('trc_BonProErn: '||to_char(trc_BonProErn));
2383    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
2384    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBP: '||to_char(trc_TotLibBP));
2385    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyBP: '||to_char(trc_LibFyBP));
2386    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpBP: '||to_char(trc_LibFpBP));
2387    -- Annual Bonus
2388    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
2389    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
2390    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
2391    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
2392    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAB: '||to_char(trc_TotLibAB));
2393    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAB: '||to_char(trc_LibFyAB));
2394    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAB: '||to_char(trc_LibFpAB));
2395    -- Annual Payments
2396    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
2397    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
2398    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
2399    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2400    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
2401    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
2402    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
2403    -- Pubilc Office Allowance
2404    py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
2405    py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
2406    py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffErn: '||to_char(trc_PblOffErn));
2407    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyPO: '||to_char(trc_LibFyPO));
2408    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpPO: '||to_char(trc_LibFpPO));
2409 
2410 EXCEPTION
2411    WHEN OTHERS THEN
2412       IF xpt_Msg = 'No Error' THEN
2413          xpt_Msg := 'DirCalc: '||TO_CHAR(SQLCODE);
2414       END IF;
2415       RAISE xpt_E;
2416 END DirCalc;
2417 
2418 
2419 PROCEDURE BasCalc AS
2420 -- Variables
2421 --
2422    l_Np       NUMBER(15,2);
2423    l_65Year   DATE;
2424 
2425 BEGIN
2426    hr_utility.set_location('py_za_tx_01032000.BasCalc',1);
2427 -- Identify the Calculation
2428 --
2429    trc_CalTyp := 'BasCalc';
2430 
2431 -- Tax Rebates, Threshold Figure and Medical Aid
2432 -- Abatements
2433    -- Calculate the assignments 65 Year Date
2434    l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
2435 
2436    hr_utility.set_location('py_za_tx_01032000.BasCalc',2);
2437 
2438    IF l_65Year BETWEEN dbi_ZA_TX_YR_STRT AND dbi_ZA_TX_YR_END THEN
2439       hr_utility.set_location('py_za_tx_01032000.BasCalc',3);
2440    -- give the extra abatement
2441       trc_Rebate := glb_ZA_PRI_TX_RBT + glb_ZA_ADL_TX_RBT;
2442       trc_Threshold := glb_ZA_SC_TX_THRSHLD;
2443    ELSE
2444       hr_utility.set_location('py_za_tx_01032000.BasCalc',4);
2445    -- not eligable for extra abatement
2446       trc_Rebate := glb_ZA_PRI_TX_RBT;
2447       trc_Threshold := glb_ZA_PRI_TX_THRSHLD;
2448    END IF;
2449 
2450 -- Base Earnings
2451 --
2452    --Base Earnings
2453    trc_BseErn :=
2454       ( bal_AB_NRFI_PTD
2455       + bal_AB_RFI_PTD
2456       + bal_AC_NRFI_PTD
2457       + bal_AC_RFI_PTD
2458       + bal_ANU_FRM_RET_FND_NRFI_PTD
2459       + bal_ANU_FRM_RET_FND_RFI_PTD
2460       + bal_PRCH_ANU_TXB_NRFI_PTD
2461       + bal_PRCH_ANU_TXB_RFI_PTD
2462       + bal_TXB_AP_NRFI_PTD
2463       + bal_TXB_AP_RFI_PTD
2464       );
2465    -- Estimate Base Taxable Income
2466       trc_TxbBseInc := trc_BseErn * dbi_ZA_PAY_PRDS_PER_YR;
2467    -- Threshold Check
2468    IF trc_TxbBseInc >= trc_Threshold THEN
2469       hr_utility.set_location('py_za_tx_01032000.BasCalc',5);
2470    -- Tax Liability
2471       trc_TotLibBse := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbBseInc);
2472    ELSE
2473       hr_utility.set_location('py_za_tx_01032000.BasCalc',6);
2474       trc_TotLibBse := 0;
2475    END IF;
2476 
2477 -- Annual Bonus
2478 --
2479    -- Ytd Annual Bonus
2480    trc_AnnBonYtd :=
2481       ( bal_AB_NRFI_YTD
2482       + bal_AB_RFI_YTD
2483       );
2484    -- Skip the calculation if there is No Income
2485    IF trc_AnnBonYtd <> 0 THEN
2486       hr_utility.set_location('py_za_tx_01032000.BasCalc',7);
2487    -- Taxable Annual Bonus Income
2488       trc_TxbAnnBonInc := trc_AnnBonYtd + trc_TxbBseInc;
2489    -- Threshold Check
2490       IF trc_TxbAnnBonInc >= trc_Threshold THEN
2491          hr_utility.set_location('py_za_tx_01032000.BasCalc',8);
2492       -- Tax Liability
2493          trc_TotLibAB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnBonInc);
2494          trc_LibFyAB := trc_TotLibAB - trc_TotLibBse;
2495       -- Negative Check
2496          IF trc_LibFyAB < 0 THEN
2497             hr_utility.set_location('py_za_tx_01032000.BasCalc',9);
2498             trc_TotLibAB := trc_TotLibBse;
2499          -- Refund any tax paid
2500             trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
2501             trc_NpValABOvr := TRUE;
2502          ELSE
2503          -- Check Bonus Provision
2504             IF bal_BP_YTD <> 0 THEN
2505                hr_utility.set_location('py_za_tx_01032000.BasCalc',10);
2506             -- Check Bonus Provision Frequency
2507                IF dbi_BP_TX_RCV = 'A' THEN
2508                   hr_utility.set_location('py_za_tx_01032000.BasCalc',11);
2509                   trc_LibFpAB := 0;
2510                ELSE
2511                   hr_utility.set_location('py_za_tx_01032000.BasCalc',12);
2512                   trc_LibFpAB :=
2513                   trc_LibFyAB - ( bal_TX_ON_BP_YTD
2514                                 + bal_TX_ON_AB_YTD);
2515                END IF;
2516             ELSE
2517                hr_utility.set_location('py_za_tx_01032000.BasCalc',13);
2518                trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
2519             END IF;
2520          END IF;
2521       ELSE
2522          hr_utility.set_location('py_za_tx_01032000.BasCalc',14);
2523          trc_TotLibAB := trc_TotLibBse;
2524       END IF;
2525    ELSE
2526       hr_utility.set_location('py_za_tx_01032000.BasCalc',15);
2527       trc_TotLibAB := trc_TotLibBse;
2528       trc_TxbAnnBonInc := trc_TxbBseInc;
2529    END IF;
2530 
2531 -- Annual Payments
2532 --
2533    -- Ytd Annual Payments
2534    trc_AnnPymYtd :=
2535       ( bal_AC_NRFI_YTD
2536       + bal_AC_RFI_YTD
2537       + bal_ANU_FRM_RET_FND_NRFI_YTD
2538       + bal_ANU_FRM_RET_FND_RFI_YTD
2539       + bal_PRCH_ANU_TXB_NRFI_YTD
2540       + bal_PRCH_ANU_TXB_RFI_YTD
2541       + bal_TXB_AP_NRFI_YTD
2542       + bal_TXB_AP_RFI_YTD
2543       );
2544    -- Skip the calculation if there is No Income
2545    IF trc_AnnPymYtd <> 0 THEN
2546       hr_utility.set_location('py_za_tx_01032000.BasCalc',16);
2547    -- Taxable Annual Payments Income
2548       trc_TxbAnnPymInc := trc_AnnPymYtd + trc_TxbAnnBonInc;
2549    -- Threshold Check
2550       IF trc_TxbAnnPymInc >= trc_Threshold THEN
2551          hr_utility.set_location('py_za_tx_01032000.BasCalc',17);
2552       -- Tax Liability
2553          trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2554          trc_LibFyAP := trc_TotLibAP - trc_TotLibAB;
2555       -- Negative Check
2556          IF trc_LibFyAP < 0 THEN
2557             hr_utility.set_location('py_za_tx_01032000.BasCalc',18);
2558             trc_TotLibAP := trc_TotLibAB;
2559          -- Refund any tax paid
2560             trc_LibFpAP := -1 * bal_TX_ON_AB_YTD;
2561             trc_NpValAPOvr := TRUE;
2562          ELSE
2563             hr_utility.set_location('py_za_tx_01032000.BasCalc',19);
2564             trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
2565          END IF;
2566       ELSE
2567          hr_utility.set_location('py_za_tx_01032000.BasCalc',20);
2568          NULL;
2569       END IF;
2570    ELSE
2571       hr_utility.set_location('py_za_tx_01032000.BasCalc',21);
2572       NULL;
2573    END IF;
2574 
2575 -- Net Pay Validation
2576 --
2577    py_za_tx_utl_01032000.NpVal;
2578 
2579    -- Base Income
2580    py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
2581    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
2582    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
2583    -- Normal Income
2584    py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
2585    py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
2586    py_za_tx_utl_01032000.WriteHrTrace('trc_NorErn: '||to_char(trc_NorErn));
2587    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
2588    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibNI: '||to_char(trc_TotLibNI));
2589    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyNI: '||to_char(trc_LibFyNI));
2590    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpNI: '||to_char(trc_LibFpNI));
2591    -- Fringe Benefits
2592    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
2593    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
2594    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
2595    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
2596    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibFB: '||to_char(trc_TotLibFB));
2597    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyFB: '||to_char(trc_LibFyFB));
2598    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpFB: '||to_char(trc_LibFpFB));
2599    -- Travel Allowance
2600    py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
2601    py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
2602    py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
2603    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
2604    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibTA: '||to_char(trc_TotLibTA));
2605    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyTA: '||to_char(trc_LibFyTA));
2606    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpTA: '||to_char(trc_LibFpTA));
2607    -- Bonus Provision
2608    py_za_tx_utl_01032000.WriteHrTrace('trc_BonProYtd: '||to_char(trc_BonProYtd));
2609    py_za_tx_utl_01032000.WriteHrTrace('trc_BonProPtd: '||to_char(trc_BonProPtd));
2610    py_za_tx_utl_01032000.WriteHrTrace('trc_BonProErn: '||to_char(trc_BonProErn));
2611    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
2612    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBP: '||to_char(trc_TotLibBP));
2613    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyBP: '||to_char(trc_LibFyBP));
2614    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpBP: '||to_char(trc_LibFpBP));
2615    -- Annual Bonus
2616    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
2617    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
2618    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
2619    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
2620    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAB: '||to_char(trc_TotLibAB));
2621    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAB: '||to_char(trc_LibFyAB));
2622    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAB: '||to_char(trc_LibFpAB));
2623    -- Annual Payments
2624    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
2625    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
2626    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
2627    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2628    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
2629    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
2630    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
2631    -- Pubilc Office Allowance
2632    py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
2633    py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
2634    py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffErn: '||to_char(trc_PblOffErn));
2635    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyPO: '||to_char(trc_LibFyPO));
2636    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpPO: '||to_char(trc_LibFpPO));
2637 
2638 EXCEPTION
2639    WHEN OTHERS THEN
2640       IF xpt_Msg = 'No Error' THEN
2641          xpt_Msg := 'BasCalc: '||TO_CHAR(SQLCODE);
2642       END IF;
2643       RAISE xpt_E;
2644 END BasCalc;
2645 
2646 
2647 PROCEDURE CalCalc AS
2648 -- Variables
2649 --
2650    l_Np       NUMBER(15,2);
2651 
2652 BEGIN
2653    hr_utility.set_location('py_za_tx_01032000.CalCalc',1);
2654 -- Identify the calculation
2655 --
2656    trc_CalTyp := 'CalCalc';
2657 
2658 -- Update Global Balance Values with correct TAXABLE values
2659 --
2660    py_za_tx_utl_01032000.TrvAll;
2661 
2662    hr_utility.set_location('py_za_tx_01032000.CalCalc',2);
2663 
2664 -- Calendar Ytd Taxable Income
2665 --
2666    trc_TxbIncYtd :=
2667       ( bal_AST_PRCHD_RVAL_NRFI_CYTD
2668       + bal_AST_PRCHD_RVAL_RFI_CYTD
2669       + bal_BUR_AND_SCH_NRFI_CYTD
2670       + bal_BUR_AND_SCH_RFI_CYTD
2671       + bal_COMM_NRFI_CYTD
2672       + bal_COMM_RFI_CYTD
2673       + bal_COMP_ALL_NRFI_CYTD
2674       + bal_COMP_ALL_RFI_CYTD
2675       + bal_ENT_ALL_NRFI_CYTD
2676       + bal_ENT_ALL_RFI_CYTD
2677       + bal_FREE_ACCOM_NRFI_CYTD
2678       + bal_FREE_ACCOM_RFI_CYTD
2679       + bal_FREE_SERV_NRFI_CYTD
2680       + bal_FREE_SERV_RFI_CYTD
2681       + bal_LOW_LOANS_NRFI_CYTD
2682       + bal_LOW_LOANS_RFI_CYTD
2683       + bal_MLS_AND_VOUCH_NRFI_CYTD
2684       + bal_MLS_AND_VOUCH_RFI_CYTD
2685       + bal_MED_PAID_NRFI_CYTD
2686       + bal_MED_PAID_RFI_CYTD
2687       + bal_OTHER_TXB_ALL_NRFI_CYTD
2688       + bal_OTHER_TXB_ALL_RFI_CYTD
2689       + bal_OVTM_NRFI_CYTD
2690       + bal_OVTM_RFI_CYTD
2691       + bal_PYM_DBT_NRFI_CYTD
2692       + bal_PYM_DBT_RFI_CYTD
2693       + bal_RGT_AST_NRFI_CYTD
2694       + bal_RGT_AST_RFI_CYTD
2695       + bal_TXB_INC_NRFI_CYTD
2696       + bal_TXB_INC_RFI_CYTD
2697       + bal_TXB_PEN_NRFI_CYTD
2698       + bal_TXB_PEN_RFI_CYTD
2699       + bal_TEL_ALL_NRFI_CYTD
2700       + bal_TEL_ALL_RFI_CYTD
2701       + bal_TOOL_ALL_NRFI_CYTD
2702       + bal_TOOL_ALL_RFI_CYTD
2703       + bal_TA_NRFI_CYTD
2704       + bal_TA_RFI_CYTD
2705       + bal_USE_VEH_NRFI_CYTD
2706       + bal_USE_VEH_RFI_CYTD
2707       );
2708 
2709 -- If there is no Income Execute the Base calculation
2710 --
2711    IF trc_TxbIncYtd = 0 THEN
2712       hr_utility.set_location('py_za_tx_01032000.CalCalc',3);
2713       BasCalc;
2714    ELSE -- continue CalCalc
2715       hr_utility.set_location('py_za_tx_01032000.CalCalc',4);
2716    -- Site Factor
2717    --
2718       trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032000.DaysWorked;
2719 
2720    -- Rebates
2721       py_za_tx_utl_01032000.SetRebates;
2722 
2723    -- Abatements
2724       py_za_tx_utl_01032000.Abatements;
2725 
2726       hr_utility.set_location('py_za_tx_01032000.CalCalc',5);
2727 
2728    -- Base Earnings
2729    --
2730       -- Base Earnings
2731       trc_BseErn := trc_TxbIncYtd * trc_SitFactor;
2732       -- Taxable Base Income
2733       trc_TxbBseInc := trc_BseErn - trc_PerTotAbm;
2734       -- Threshold Check
2735       IF trc_TxbBseInc >= trc_Threshold THEN
2736          hr_utility.set_location('py_za_tx_01032000.CalCalc',6);
2737       -- Tax Liability
2738          trc_TotLibBse := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbBseInc);
2739       ELSE
2740          hr_utility.set_location('py_za_tx_01032000.CalCalc',7);
2741          trc_TotLibBse := 0;
2742       END IF;
2743 
2744    -- Annual Bonus
2745    --
2746       -- Ytd Annual Bonus
2747       trc_AnnBonYtd :=
2748          ( bal_AB_NRFI_YTD
2749          + bal_AB_RFI_YTD
2750          );
2751       -- Skip the calculation if there is No Income
2752       IF trc_AnnBonYtd <> 0 THEN
2753          hr_utility.set_location('py_za_tx_01032000.CalCalc',8);
2754       -- Annual Bonus Earnings
2755          trc_AnnBonErn := trc_AnnBonYtd + trc_BseErn;
2756       -- Taxable Annual Bonus Income
2757          trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
2758       -- Threshold Check
2759          IF trc_TxbAnnBonInc >= trc_Threshold THEN
2760             hr_utility.set_location('py_za_tx_01032000.CalCalc',9);
2761          -- Tax Liability
2762             trc_TotLibAB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnBonInc);
2763             trc_LibFyAB := trc_TotLibAB - trc_TotLibBse;
2764          -- Negative Check
2765             IF trc_LibFyAB < 0 THEN
2766                hr_utility.set_location('py_za_tx_01032000.CalCalc',10);
2767                trc_TotLibAB := trc_TotLibBse;
2768             -- Refund any tax paid
2769                trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
2770                trc_NpValABOvr := TRUE;
2771             ELSE
2772             -- Check Bonus Provision
2773                IF bal_BP_YTD <> 0 THEN
2774                   hr_utility.set_location('py_za_tx_01032000.CalCalc',11);
2775                -- Check Bonus Provision Frequency
2776                   IF dbi_BP_TX_RCV = 'A' THEN
2777                      hr_utility.set_location('py_za_tx_01032000.CalCalc',12);
2778                      trc_LibFpAB := 0;
2779                   ELSE
2780                      hr_utility.set_location('py_za_tx_01032000.CalCalc',13);
2781                      trc_LibFpAB :=
2782                      trc_LibFyAB - ( bal_TX_ON_BP_YTD
2783                                    + bal_TX_ON_AB_YTD);
2784                   END IF;
2785                ELSE
2786                   hr_utility.set_location('py_za_tx_01032000.CalCalc',14);
2787                   trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
2788                END IF;
2789             END IF;
2790          ELSE
2791             hr_utility.set_location('py_za_tx_01032000.CalCalc',15);
2792             trc_TotLibAB := trc_TotLibBse;
2793          END IF;
2794       ELSE
2795          hr_utility.set_location('py_za_tx_01032000.CalCalc',16);
2796          trc_AnnBonErn := trc_BseErn;-- Cascade Figure
2797          trc_TxbAnnBonInc := trc_TxbBseInc;
2798          trc_TotLibAB := trc_TotLibBse;
2799       END IF;
2800 
2801    -- Annual Payments
2802    --
2803       -- Ytd Annual Payments
2804       trc_AnnPymYtd :=
2805          ( bal_AC_NRFI_YTD
2806          + bal_AC_RFI_YTD
2807          + bal_ANU_FRM_RET_FND_NRFI_YTD
2808          + bal_ANU_FRM_RET_FND_RFI_YTD
2809          + bal_PRCH_ANU_TXB_NRFI_YTD
2810          + bal_PRCH_ANU_TXB_RFI_YTD
2811          + bal_TXB_AP_NRFI_YTD
2812          + bal_TXB_AP_RFI_YTD
2813          );
2814       -- Skip the calculation if there is No Income
2815       IF trc_AnnPymYtd <> 0 THEN
2816          hr_utility.set_location('py_za_tx_01032000.CalCalc',17);
2817       -- Annual Payments Earnings
2818          trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
2819       -- Taxable Annual Payments Income
2820          trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
2821       -- Threshold Check
2822          IF trc_TxbAnnPymInc >= trc_Threshold THEN
2823             hr_utility.set_location('py_za_tx_01032000.CalCalc',18);
2824          -- Tax Liability
2825             trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2826             trc_LibFyAP := trc_TotLibAP - trc_TotLibAB;
2827          -- Negative Check
2828             IF trc_LibFyAP < 0 THEN
2829                hr_utility.set_location('py_za_tx_01032000.CalCalc',19);
2830                trc_TotLibAP := trc_TotLibAB;
2831             -- Refund any tax paid
2832                trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
2833                trc_NpValAPOvr := TRUE;
2834             ELSE
2835                hr_utility.set_location('py_za_tx_01032000.CalCalc',20);
2836                trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
2837             END IF;
2838          ELSE
2839             hr_utility.set_location('py_za_tx_01032000.CalCalc',21);
2840             trc_TotLibAP := trc_TotLibAB;
2841          END IF;
2842       ELSE
2843          hr_utility.set_location('py_za_tx_01032000.CalCalc',22);
2844          trc_AnnPymErn := trc_AnnBonErn;
2845          trc_TxbAnnPymInc := trc_TxbAnnBonInc;
2846          trc_TotLibAP := trc_TotLibAB;
2847       END IF;
2848 
2849    -- Net pay Validation
2850    --
2851       py_za_tx_utl_01032000.NpVal;
2852 
2853       -- Base Income
2854       py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
2855       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
2856       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
2857       -- Normal Income
2858       py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
2859       py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
2860       py_za_tx_utl_01032000.WriteHrTrace('trc_NorErn: '||to_char(trc_NorErn));
2861       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
2862       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibNI: '||to_char(trc_TotLibNI));
2863       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyNI: '||to_char(trc_LibFyNI));
2864       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpNI: '||to_char(trc_LibFpNI));
2865       -- Fringe Benefits
2866       py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
2867       py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
2868       py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
2869       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
2870       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibFB: '||to_char(trc_TotLibFB));
2871       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyFB: '||to_char(trc_LibFyFB));
2872       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpFB: '||to_char(trc_LibFpFB));
2873       -- Travel Allowance
2874       py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
2875       py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
2876       py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
2877       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
2878       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibTA: '||to_char(trc_TotLibTA));
2879       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyTA: '||to_char(trc_LibFyTA));
2880       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpTA: '||to_char(trc_LibFpTA));
2881       -- Bonus Provision
2882       py_za_tx_utl_01032000.WriteHrTrace('trc_BonProYtd: '||to_char(trc_BonProYtd));
2883       py_za_tx_utl_01032000.WriteHrTrace('trc_BonProPtd: '||to_char(trc_BonProPtd));
2884       py_za_tx_utl_01032000.WriteHrTrace('trc_BonProErn: '||to_char(trc_BonProErn));
2885       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
2886       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBP: '||to_char(trc_TotLibBP));
2887       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyBP: '||to_char(trc_LibFyBP));
2888       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpBP: '||to_char(trc_LibFpBP));
2889       -- Annual Bonus
2890       py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
2891       py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
2892       py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
2893       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
2894       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAB: '||to_char(trc_TotLibAB));
2895       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAB: '||to_char(trc_LibFyAB));
2896       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAB: '||to_char(trc_LibFpAB));
2897       -- Annual Payments
2898       py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
2899       py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
2900       py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
2901       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2902       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
2903       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
2904       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
2905       -- Pubilc Office Allowance
2906       py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
2907       py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
2908       py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffErn: '||to_char(trc_PblOffErn));
2909       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyPO: '||to_char(trc_LibFyPO));
2910       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpPO: '||to_char(trc_LibFpPO));
2911 
2912    END IF;
2913 
2914    hr_utility.set_location('py_za_tx_01032000.CalCalc',23);
2915 
2916 EXCEPTION
2917    WHEN OTHERS THEN
2918       IF xpt_Msg = 'No Error' THEN
2919          xpt_Msg := 'CalCalc: '||TO_CHAR(SQLCODE);
2920       END IF;
2921       RAISE xpt_E;
2922 END CalCalc;
2923 
2924 
2925 PROCEDURE YtdCalc AS
2926 -- Variables
2927 --
2928    l_Np       NUMBER(15,2);
2929 
2930 BEGIN
2931    hr_utility.set_location('py_za_tx_01032000.YtdCalc',1);
2932 -- Identify the calculation
2933 --
2934    trc_CalTyp := 'YtdCalc';
2935 
2936 -- Update Global Balance Values with correct TAXABLE values
2937    py_za_tx_utl_01032000.TrvAll;
2938 
2939    hr_utility.set_location('py_za_tx_01032000.YtdCalc',2);
2940 
2941 -- Ytd Taxable Income
2942    trc_TxbIncYtd :=
2943       ( bal_AST_PRCHD_RVAL_NRFI_YTD
2944       + bal_AST_PRCHD_RVAL_RFI_YTD
2945       + bal_BP_YTD
2946       + bal_BUR_AND_SCH_NRFI_YTD
2947       + bal_BUR_AND_SCH_RFI_YTD
2948       + bal_COMM_NRFI_YTD
2949       + bal_COMM_RFI_YTD
2950       + bal_COMP_ALL_NRFI_YTD
2951       + bal_COMP_ALL_RFI_YTD
2952       + bal_ENT_ALL_NRFI_YTD
2953       + bal_ENT_ALL_RFI_YTD
2954       + bal_FREE_ACCOM_NRFI_YTD
2955       + bal_FREE_ACCOM_RFI_YTD
2956       + bal_FREE_SERV_NRFI_YTD
2957       + bal_FREE_SERV_RFI_YTD
2958       + bal_LOW_LOANS_NRFI_YTD
2959       + bal_LOW_LOANS_RFI_YTD
2960       + bal_MLS_AND_VOUCH_NRFI_YTD
2961       + bal_MLS_AND_VOUCH_RFI_YTD
2962       + bal_MED_PAID_NRFI_YTD
2963       + bal_MED_PAID_RFI_YTD
2964       + bal_OTHER_TXB_ALL_NRFI_YTD
2965       + bal_OTHER_TXB_ALL_RFI_YTD
2966       + bal_OVTM_NRFI_YTD
2967       + bal_OVTM_RFI_YTD
2968       + bal_PYM_DBT_NRFI_YTD
2969       + bal_PYM_DBT_RFI_YTD
2970       + bal_RGT_AST_NRFI_YTD
2971       + bal_RGT_AST_RFI_YTD
2972       + bal_TXB_INC_NRFI_YTD
2973       + bal_TXB_INC_RFI_YTD
2974       + bal_TXB_PEN_NRFI_YTD
2975       + bal_TXB_PEN_RFI_YTD
2976       + bal_TEL_ALL_NRFI_YTD
2977       + bal_TEL_ALL_RFI_YTD
2978       + bal_TOOL_ALL_NRFI_YTD
2979       + bal_TOOL_ALL_RFI_YTD
2980       + bal_TA_NRFI_YTD
2981       + bal_TA_RFI_YTD
2982       + bal_USE_VEH_NRFI_YTD
2983       + bal_USE_VEH_RFI_YTD
2984       );
2985 
2986 -- If the Ytd Taxable Income = 0, execute the CalCalc
2987    IF trc_TxbIncYtd = 0 THEN
2988       hr_utility.set_location('py_za_tx_01032000.YtdCalc',3);
2989       CalCalc;
2990    ELSE --Continue YtdCalc
2991       hr_utility.set_location('py_za_tx_01032000.YtdCalc',4);
2992    -- Site Factor
2993       trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032000.DaysWorked;
2994 
2995    -- Rebates
2996       py_za_tx_utl_01032000.SetRebates;
2997 
2998    -- Abatements
2999       py_za_tx_utl_01032000.Abatements;
3000 
3001       hr_utility.set_location('py_za_tx_01032000.YtdCalc',5);
3002 
3003    -- Base Earnings
3004    --
3005       -- Base Earnings
3006       trc_BseErn := trc_TxbIncYtd * trc_SitFactor;
3007       -- Taxable Base Income
3008       trc_TxbBseInc := trc_BseErn - trc_PerTotAbm;
3009       -- Threshold Check
3010       IF trc_TxbBseInc >= trc_Threshold THEN
3011          hr_utility.set_location('py_za_tx_01032000.YtdCalc',6);
3012       -- Tax Liability
3013          trc_TotLibBse := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbBseInc);
3014       ELSE
3015          hr_utility.set_location('py_za_tx_01032000.YtdCalc',7);
3016          trc_TotLibBse := 0;
3017       END IF;
3018 
3019    -- Annual Bonus
3020    --
3021       -- Ytd Annual Bonus
3022       trc_AnnBonYtd :=
3023          ( bal_AB_NRFI_YTD
3024          + bal_AB_RFI_YTD
3025          );
3026       -- Skip the calculation if there is No Income
3027       IF trc_AnnBonYtd <> 0 THEN
3028          hr_utility.set_location('py_za_tx_01032000.YtdCalc',8);
3029       -- Annual Bonus Earnings
3030          trc_AnnBonErn := trc_AnnBonYtd + trc_BseErn;
3031       -- Taxable Annual Bonus Income
3032          trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
3033       -- Threshold Check
3034          IF trc_TxbAnnBonInc >= trc_Threshold THEN
3035             hr_utility.set_location('py_za_tx_01032000.YtdCalc',9);
3036          -- Tax Liability
3037             trc_TotLibAB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnBonInc);
3038             trc_LibFyAB := trc_TotLibAB - trc_TotLibBse;
3039          -- Negative Check
3040             IF trc_LibFyAB < 0 THEN
3041                hr_utility.set_location('py_za_tx_01032000.YtdCalc',10);
3042                trc_TotLibAB := trc_TotLibBse;
3043             -- Refund any tax paid
3044                trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
3045                trc_NpValABOvr := TRUE;
3046             ELSE
3047             -- Check Bonus Provision
3048                IF bal_BP_YTD <> 0 THEN
3049                   hr_utility.set_location('py_za_tx_01032000.YtdCalc',11);
3050                -- Check Bonus Provision Frequency
3051                   IF dbi_BP_TX_RCV = 'A' THEN
3052                      hr_utility.set_location('py_za_tx_01032000.YtdCalc',12);
3053                      trc_LibFpAB := 0;
3054                   ELSE
3055                      hr_utility.set_location('py_za_tx_01032000.YtdCalc',13);
3056                      trc_LibFpAB :=
3057                      trc_LibFyAB - ( bal_TX_ON_BP_YTD
3058                                    + bal_TX_ON_AB_YTD);
3059                   END IF;
3060                ELSE
3061                   hr_utility.set_location('py_za_tx_01032000.YtdCalc',14);
3062                   trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
3063                END IF;
3064             END IF;
3065          ELSE
3066             hr_utility.set_location('py_za_tx_01032000.YtdCalc',15);
3067             trc_TotLibAB := trc_TotLibBse;
3068          END IF;
3069       ELSE
3070          hr_utility.set_location('py_za_tx_01032000.YtdCalc',16);
3071          trc_AnnBonErn := trc_BseErn;-- Cascade Figure
3072          trc_TxbAnnBonInc := trc_TxbBseInc;
3073          trc_TotLibAB := trc_TotLibBse;
3074       END IF;
3075 
3076    -- Annual Payments
3077    --
3078       -- Ytd Annual Payments
3079       trc_AnnPymYtd :=
3080          ( bal_AC_NRFI_YTD
3081          + bal_AC_RFI_YTD
3082          + bal_ANU_FRM_RET_FND_NRFI_YTD
3083          + bal_ANU_FRM_RET_FND_RFI_YTD
3084          + bal_PRCH_ANU_TXB_NRFI_YTD
3085          + bal_PRCH_ANU_TXB_RFI_YTD
3086          + bal_TXB_AP_NRFI_YTD
3087          + bal_TXB_AP_RFI_YTD
3088          );
3089       -- Skip the calculation if there is No Income
3090       IF trc_AnnPymYtd <> 0 THEN
3091          hr_utility.set_location('py_za_tx_01032000.YtdCalc',17);
3092       -- Annual Payments Earnings
3093          trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
3094       -- Taxable Annual Payments Income
3095          trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
3096       -- Threshold Check
3097          IF trc_TxbAnnPymInc >= trc_Threshold THEN
3098             hr_utility.set_location('py_za_tx_01032000.YtdCalc',18);
3099          -- Tax Liability
3100             trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnPymInc);
3101             trc_LibFyAP := trc_TotLibAP - trc_TotLibAB;
3102          -- Negative Check
3103             IF trc_LibFyAP < 0 THEN
3104                hr_utility.set_location('py_za_tx_01032000.YtdCalc',19);
3105                trc_TotLibAP := trc_TotLibAB;
3106             -- Refund any tax paid
3107                trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
3108                trc_NpValAPOvr := TRUE;
3109             ELSE
3110                hr_utility.set_location('py_za_tx_01032000.YtdCalc',20);
3111                trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
3112             END IF;
3113          ELSE
3114             hr_utility.set_location('py_za_tx_01032000.YtdCalc',21);
3115             trc_TotLibAP := trc_TotLibAB;
3116          END IF;
3117       ELSE
3118          hr_utility.set_location('py_za_tx_01032000.YtdCalc',22);
3119          trc_AnnPymErn := trc_AnnBonErn;-- Cascade Figure
3120          trc_TxbAnnPymInc := trc_TxbAnnBonInc;
3121          trc_TotLibAP := trc_TotLibAB;
3122       END IF;
3123 
3124    -- Net Pay validation
3125    --
3126       py_za_tx_utl_01032000.NpVal;
3127 
3128       hr_utility.set_location('py_za_tx_01032000.YtdCalc',23);
3129 
3130       -- Base Income
3131       py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
3132       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
3133       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
3134       -- Normal Income
3135       py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
3136       py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
3137       py_za_tx_utl_01032000.WriteHrTrace('trc_NorErn: '||to_char(trc_NorErn));
3138       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
3139       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibNI: '||to_char(trc_TotLibNI));
3140       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyNI: '||to_char(trc_LibFyNI));
3141       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpNI: '||to_char(trc_LibFpNI));
3142       -- Fringe Benefits
3143       py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
3144       py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
3145       py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
3146       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
3147       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibFB: '||to_char(trc_TotLibFB));
3148       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyFB: '||to_char(trc_LibFyFB));
3149       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpFB: '||to_char(trc_LibFpFB));
3150       -- Travel Allowance
3151       py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
3152       py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
3153       py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
3154       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
3155       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibTA: '||to_char(trc_TotLibTA));
3156       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyTA: '||to_char(trc_LibFyTA));
3157       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpTA: '||to_char(trc_LibFpTA));
3158       -- Bonus Provision
3159       py_za_tx_utl_01032000.WriteHrTrace('trc_BonProYtd: '||to_char(trc_BonProYtd));
3160       py_za_tx_utl_01032000.WriteHrTrace('trc_BonProPtd: '||to_char(trc_BonProPtd));
3161       py_za_tx_utl_01032000.WriteHrTrace('trc_BonProErn: '||to_char(trc_BonProErn));
3162       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
3163       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBP: '||to_char(trc_TotLibBP));
3164       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyBP: '||to_char(trc_LibFyBP));
3165       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpBP: '||to_char(trc_LibFpBP));
3166       -- Annual Bonus
3167       py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
3168       py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
3169       py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
3170       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
3171       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAB: '||to_char(trc_TotLibAB));
3172       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAB: '||to_char(trc_LibFyAB));
3173       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAB: '||to_char(trc_LibFpAB));
3174       -- Annual Payments
3175       py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
3176       py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
3177       py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
3178       py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
3179       py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
3180       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
3181       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
3182       -- Pubilc Office Allowance
3183       py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
3184       py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
3185       py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffErn: '||to_char(trc_PblOffErn));
3186       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyPO: '||to_char(trc_LibFyPO));
3187       py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpPO: '||to_char(trc_LibFpPO));
3188 
3189    END IF;
3190 
3191 EXCEPTION
3192    WHEN OTHERS THEN
3193       IF xpt_Msg = 'No Error' THEN
3194          xpt_Msg := 'YtdCalc: '||TO_CHAR(SQLCODE);
3195       END IF;
3196       RAISE xpt_E;
3197 END YtdCalc;
3198 
3199 
3200 PROCEDURE NorCalc AS
3201 -- Variables
3202 --
3203    l_Np       NUMBER(15,2) DEFAULT 0;
3204 
3205 BEGIN
3206    hr_utility.set_location('py_za_tx_01032000.NorCalc',1);
3207 -- Identify the calculation
3208 --
3209    trc_CalTyp := 'NorCalc';
3210 
3211 -- Update Global Balance Values with correct TAXABLE values
3212 --
3213    bal_TA_RFI_PTD :=
3214    bal_TA_RFI_PTD * glb_ZA_TRV_ALL_TX_PRC / 100;
3215 
3216    bal_TA_NRFI_PTD :=
3217    bal_TA_NRFI_PTD * glb_ZA_TRV_ALL_TX_PRC / 100;
3218 
3219    py_za_tx_utl_01032000.TrvAll;
3220 
3221    hr_utility.set_location('py_za_tx_01032000.NorCalc',2);
3222 
3223    bal_PO_RFI_PTD :=
3224    bal_PO_RFI_PTD * glb_ZA_PBL_TX_PRC / 100;
3225 
3226    bal_PO_NRFI_PTD :=
3227    bal_PO_NRFI_PTD * glb_ZA_PBL_TX_PRC / 100;
3228 
3229    bal_PO_RFI_YTD :=
3230    bal_PO_RFI_YTD * glb_ZA_PBL_TX_PRC / 100;
3231 
3232    bal_PO_NRFI_YTD :=
3233    bal_PO_NRFI_YTD * glb_ZA_PBL_TX_PRC / 100;
3234 
3235 
3236 
3237 -- PTD Taxable Income
3238 --
3239    trc_TxbIncPtd :=
3240       ( bal_AST_PRCHD_RVAL_NRFI_PTD
3241       + bal_AST_PRCHD_RVAL_RFI_PTD
3242       + bal_BP_PTD
3243       + bal_BUR_AND_SCH_NRFI_PTD
3244       + bal_BUR_AND_SCH_RFI_PTD
3245       + bal_COMM_NRFI_PTD
3246       + bal_COMM_RFI_PTD
3247       + bal_COMP_ALL_NRFI_PTD
3248       + bal_COMP_ALL_RFI_PTD
3249       + bal_ENT_ALL_NRFI_PTD
3250       + bal_ENT_ALL_RFI_PTD
3251       + bal_FREE_ACCOM_NRFI_PTD
3252       + bal_FREE_ACCOM_RFI_PTD
3253       + bal_FREE_SERV_NRFI_PTD
3254       + bal_FREE_SERV_RFI_PTD
3255       + bal_LOW_LOANS_NRFI_PTD
3256       + bal_LOW_LOANS_RFI_PTD
3257       + bal_MLS_AND_VOUCH_NRFI_PTD
3258       + bal_MLS_AND_VOUCH_RFI_PTD
3259       + bal_MED_PAID_NRFI_PTD
3260       + bal_MED_PAID_RFI_PTD
3261       + bal_OTHER_TXB_ALL_NRFI_PTD
3262       + bal_OTHER_TXB_ALL_RFI_PTD
3263       + bal_OVTM_NRFI_PTD
3264       + bal_OVTM_RFI_PTD
3265       + bal_PYM_DBT_NRFI_PTD
3266       + bal_PYM_DBT_RFI_PTD
3267       + bal_RGT_AST_NRFI_PTD
3268       + bal_RGT_AST_RFI_PTD
3269       + bal_TXB_INC_NRFI_PTD
3270       + bal_TXB_INC_RFI_PTD
3271       + bal_TXB_PEN_NRFI_PTD
3272       + bal_TXB_PEN_RFI_PTD
3273       + bal_TEL_ALL_NRFI_PTD
3274       + bal_TEL_ALL_RFI_PTD
3275       + bal_TOOL_ALL_NRFI_PTD
3276       + bal_TOOL_ALL_RFI_PTD
3277       + bal_TA_NRFI_PTD
3278       + bal_TA_RFI_PTD
3279       + bal_USE_VEH_NRFI_PTD
3280       + bal_USE_VEH_RFI_PTD
3281       );
3282 
3283 -- Period Factor
3284    py_za_tx_utl_01032000.PeriodFactor;
3285 
3286 -- Possible Periods Factor
3287    py_za_tx_utl_01032000.PossiblePeriodsFactor;
3288 
3289 -- Rebates
3290    py_za_tx_utl_01032000.SetRebates;
3291 
3292 -- Abatements
3293    py_za_tx_utl_01032000.Abatements;
3294 
3295    hr_utility.set_location('py_za_tx_01032000.NorCalc',3);
3296 
3297 -- Normal Income
3298 --
3299    -- Ytd Normal Income
3300    trc_NorIncYtd :=
3301       ( bal_COMM_NRFI_YTD
3302       + bal_COMM_RFI_YTD
3303       + bal_COMP_ALL_NRFI_YTD
3304       + bal_COMP_ALL_RFI_YTD
3305       + bal_ENT_ALL_NRFI_YTD
3306       + bal_ENT_ALL_RFI_YTD
3307       + bal_OTHER_TXB_ALL_NRFI_YTD
3308       + bal_OTHER_TXB_ALL_RFI_YTD
3309       + bal_OVTM_NRFI_YTD
3310       + bal_OVTM_RFI_YTD
3311       + bal_TXB_INC_NRFI_YTD
3312       + bal_TXB_INC_RFI_YTD
3313       + bal_TXB_PEN_NRFI_YTD
3314       + bal_TXB_PEN_RFI_YTD
3315       + bal_TEL_ALL_NRFI_YTD
3316       + bal_TEL_ALL_RFI_YTD
3317       + bal_TOOL_ALL_NRFI_YTD
3318       + bal_TOOL_ALL_RFI_YTD
3319       );
3320 
3321    -- Skip the calculation if there is No Income
3322    IF trc_NorIncYtd <> 0 THEN
3323       hr_utility.set_location('py_za_tx_01032000.NorCalc',4);
3324    -- Ptd Normal Income
3325       trc_NorIncPtd :=
3326          ( bal_COMM_NRFI_PTD
3327          + bal_COMM_RFI_PTD
3328          + bal_COMP_ALL_NRFI_PTD
3329          + bal_COMP_ALL_RFI_PTD
3330          + bal_ENT_ALL_NRFI_PTD
3331          + bal_ENT_ALL_RFI_PTD
3332          + bal_OTHER_TXB_ALL_NRFI_PTD
3333          + bal_OTHER_TXB_ALL_RFI_PTD
3334          + bal_OVTM_NRFI_PTD
3335          + bal_OVTM_RFI_PTD
3336          + bal_TXB_INC_NRFI_PTD
3337          + bal_TXB_INC_RFI_PTD
3338          + bal_TXB_PEN_NRFI_PTD
3339          + bal_TXB_PEN_RFI_PTD
3340          + bal_TEL_ALL_NRFI_PTD
3341          + bal_TEL_ALL_RFI_PTD
3342          + bal_TOOL_ALL_NRFI_PTD
3343          + bal_TOOL_ALL_RFI_PTD
3344          );
3345 
3346    -- Annualise Normal Income
3347       trc_NorErn := py_za_tx_utl_01032000.Annualise
3348          (p_YtdInc => trc_NorIncYtd
3349          ,p_PtdInc => trc_NorIncPtd
3350          );
3351 
3352    -- Taxable Normal Income
3353       trc_TxbNorInc := trc_NorErn - trc_PerTotAbm;
3354 
3355    -- Threshold Check
3356       IF trc_TxbNorInc >= trc_Threshold THEN
3357          hr_utility.set_location('py_za_tx_01032000.NorCalc',5);
3358       -- Tax Liability
3359          trc_TotLibNI := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbNorInc);
3360          trc_LibFyNI := trc_TotLibNI - 0;
3361       -- DeAnnualise
3362          trc_LibFpNI := py_za_tx_utl_01032000.DeAnnualise
3363             (p_Liab    => trc_LibFyNI
3364             ,p_TxOnYtd => bal_TX_ON_NI_YTD
3365             ,p_TxOnPtd => bal_TX_ON_NI_PTD
3366             );
3367       ELSE
3368          hr_utility.set_location('py_za_tx_01032000.NorCalc',6);
3369          trc_TotLibNI := 0;
3370       -- Refund any tax paid
3371          trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
3372          trc_NpValNIOvr := TRUE;
3373       END IF;
3374    ELSE
3375       hr_utility.set_location('py_za_tx_01032000.NorCalc',7);
3376       trc_NorErn := 0;
3377       trc_TxbNorInc := 0;
3378       trc_TotLibNI := 0;
3379    -- Refund any tax paid
3380       trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
3381       trc_NpValNIOvr := TRUE;
3382    END IF;
3383 
3384 -- Fringe Benefits
3385 --
3386    -- Ytd Fringe Benefits
3387    trc_FrnBenYtd :=
3388       ( bal_AST_PRCHD_RVAL_NRFI_YTD
3389       + bal_AST_PRCHD_RVAL_RFI_YTD
3390       + bal_BUR_AND_SCH_NRFI_YTD
3391       + bal_BUR_AND_SCH_RFI_YTD
3392       + bal_FREE_ACCOM_NRFI_YTD
3393       + bal_FREE_ACCOM_RFI_YTD
3394       + bal_FREE_SERV_NRFI_YTD
3395       + bal_FREE_SERV_RFI_YTD
3396       + bal_LOW_LOANS_NRFI_YTD
3397       + bal_LOW_LOANS_RFI_YTD
3398       + bal_MLS_AND_VOUCH_NRFI_YTD
3399       + bal_MLS_AND_VOUCH_RFI_YTD
3400       + bal_MED_PAID_NRFI_YTD
3401       + bal_MED_PAID_RFI_YTD
3402       + bal_PYM_DBT_NRFI_YTD
3403       + bal_PYM_DBT_RFI_YTD
3404       + bal_RGT_AST_NRFI_YTD
3405       + bal_RGT_AST_RFI_YTD
3406       + bal_USE_VEH_NRFI_YTD
3407       + bal_USE_VEH_RFI_YTD
3408       );
3409 
3410    -- Skip the calculation if there is No Income
3411    IF trc_FrnBenYtd <> 0 THEN
3412       hr_utility.set_location('py_za_tx_01032000.NorCalc',8);
3413    -- Ptd Fringe Benefits
3414       trc_FrnBenPtd :=
3415          ( bal_AST_PRCHD_RVAL_NRFI_PTD
3416          + bal_AST_PRCHD_RVAL_RFI_PTD
3417          + bal_BUR_AND_SCH_NRFI_PTD
3418          + bal_BUR_AND_SCH_RFI_PTD
3419          + bal_FREE_ACCOM_NRFI_PTD
3420          + bal_FREE_ACCOM_RFI_PTD
3421          + bal_FREE_SERV_NRFI_PTD
3422          + bal_FREE_SERV_RFI_PTD
3423          + bal_LOW_LOANS_NRFI_PTD
3424          + bal_LOW_LOANS_RFI_PTD
3425          + bal_MLS_AND_VOUCH_NRFI_PTD
3426          + bal_MLS_AND_VOUCH_RFI_PTD
3427          + bal_MED_PAID_NRFI_PTD
3428          + bal_MED_PAID_RFI_PTD
3429          + bal_PYM_DBT_NRFI_PTD
3430          + bal_PYM_DBT_RFI_PTD
3431          + bal_RGT_AST_NRFI_PTD
3432          + bal_RGT_AST_RFI_PTD
3433          + bal_USE_VEH_NRFI_PTD
3434          + bal_USE_VEH_RFI_PTD
3435          );
3436    -- Annualise Fringe Benefits
3437       trc_FrnBenErn := py_za_tx_utl_01032000.Annualise
3438          (p_YtdInc => trc_FrnBenYtd
3439          ,p_PtdInc => trc_FrnBenPtd
3440          ) + trc_NorErn;
3441    -- Taxable Fringe Income
3442       trc_TxbFrnInc := trc_FrnBenErn - trc_PerTotAbm;
3443    -- Threshold Check
3444       IF trc_TxbFrnInc >= trc_Threshold THEN
3445          hr_utility.set_location('py_za_tx_01032000.NorCalc',9);
3446       -- Tax Liability
3447          trc_TotLibFB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbFrnInc);
3448          trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
3449       -- DeAnnualise
3450          trc_LibFpFB := py_za_tx_utl_01032000.DeAnnualise
3451             (trc_LibFyFB
3452             ,bal_TX_ON_FB_YTD
3453             ,bal_TX_ON_FB_PTD
3454             );
3455       ELSE
3456          hr_utility.set_location('py_za_tx_01032000.NorCalc',10);
3457          trc_TotLibFB := trc_TotLibNI;
3458       -- Refund any tax paid
3459          trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
3460          trc_NpValFBOvr := TRUE;
3461       END IF;
3462    ELSE
3463       hr_utility.set_location('py_za_tx_01032000.NorCalc',11);
3464       trc_FrnBenErn := trc_NorErn;
3465       trc_TxbFrnInc := trc_TxbNorInc;
3466       trc_TotLibFB := trc_TotLibNI;
3467    -- Refund any tax paid
3468       trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
3469       trc_NpValFBOvr := TRUE;
3470    END IF;
3471 
3472 -- Travel Allowance
3473 --
3474    -- Ytd Travel Allowance
3475    trc_TrvAllYtd :=
3476       ( bal_TA_NRFI_YTD
3477       + bal_TA_RFI_YTD
3478       );
3479    -- Skip the calculation if there is No Income
3480    IF trc_TrvAllYtd <> 0 THEN
3481       hr_utility.set_location('py_za_tx_01032000.NorCalc',12);
3482    -- Ptd Travel Allowance
3483       trc_TrvAllPtd :=
3484          ( bal_TA_NRFI_PTD
3485          + bal_TA_RFI_PTD
3486          );
3487    -- Annualise Travel Allowance
3488       trc_TrvAllErn := py_za_tx_utl_01032000.Annualise
3489          (p_YtdInc => trc_TrvAllYtd
3490          ,p_PtdInc => trc_TrvAllPtd
3491          ) + trc_FrnBenErn;
3492    -- Taxable Travel Income
3493       trc_TxbTrvInc := trc_TrvAllErn - trc_PerTotAbm;
3494    -- Threshold Check
3495       IF trc_TxbTrvInc >= trc_Threshold THEN
3496          hr_utility.set_location('py_za_tx_01032000.NorCalc',13);
3497       -- Tax Liability
3498          trc_TotLibTA := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbTrvInc);
3499          trc_LibFyTA := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
3500       -- DeAnnualise
3501          trc_LibFpTA := py_za_tx_utl_01032000.DeAnnualise
3502             (trc_LibFyTA
3503             ,bal_TX_ON_TA_YTD
3504             ,bal_TX_ON_TA_PTD
3505             );
3506       ELSE
3507          hr_utility.set_location('py_za_tx_01032000.NorCalc',14);
3508          trc_TotLibTA := trc_TotLibFB;
3509       -- Refund any tax paid
3510          trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
3511          trc_NpValTAOvr := TRUE;
3512       END IF;
3513    ELSE
3514       hr_utility.set_location('py_za_tx_01032000.NorCalc',15);
3515       trc_TrvAllErn := trc_FrnBenErn;-- Cascade Figure
3516       trc_TxbTrvInc := trc_TxbFrnInc;
3517       trc_TotLibTA := trc_TotLibFB;
3518    -- Refund any tax paid
3519       trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
3520       trc_NpValTAOvr := TRUE;
3521    END IF;
3522 
3523 -- Bonus Provision
3524 --
3525    -- Ytd Bonus Prvision
3526    trc_BonProYtd := bal_BP_YTD;
3527    -- Skip the calculation if there is No Income
3528    IF trc_BonProYtd <> 0 THEN
3529       hr_utility.set_location('py_za_tx_01032000.NorCalc',16);
3530    -- Ptd Bonus Provision
3531       trc_BonProPtd := bal_BP_PTD;
3532    -- Annualise Bonus Provision
3533       trc_BonProErn := py_za_tx_utl_01032000.Annualise
3534          (p_YtdInc => trc_BonProYtd
3535          ,p_PtdInc => trc_BonProPtd
3536          ) + trc_TrvAllErn;
3537    -- Taxable Bonus Provision Income
3538       trc_TxbBonProInc := trc_BonProErn - trc_PerTotAbm;
3539    -- Threshold Check
3540       IF trc_TxbBonProInc >= trc_Threshold THEN
3541          hr_utility.set_location('py_za_tx_01032000.NorCalc',17);
3542       -- Tax Liability
3543          trc_TotLibBP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbBonProInc);
3544          trc_LibFyBP := trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA);
3545       -- DeAnnualise
3546          trc_LibFpBP := py_za_tx_utl_01032000.DeAnnualise
3547             (trc_LibFyBP
3548             ,bal_TX_ON_BP_YTD
3549             ,bal_TX_ON_BP_PTD
3550            );
3551       ELSE
3552          hr_utility.set_location('py_za_tx_01032000.NorCalc',18);
3553          trc_TotLibBP := trc_TotLibTA;
3554       -- Refund any tax paid
3555          trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
3556          trc_NpValBPOvr := TRUE;
3557       END IF;
3558    ELSE
3559       hr_utility.set_location('py_za_tx_01032000.NorCalc',19);
3560       trc_BonProErn := trc_TrvAllErn;
3561       trc_TxbBonProInc := trc_TxbTrvInc;
3562       trc_TotLibBP := trc_TotLibTA;
3563    -- Refund any tax paid
3564       trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
3565       trc_NpValBPOvr := TRUE;
3566    END IF;
3567 
3568 -- Annual Bonus
3569 --
3570    -- Ytd Annual Bonus
3571    trc_AnnBonYtd :=
3572       ( bal_AB_NRFI_YTD
3573       + bal_AB_RFI_YTD
3574       );
3575    -- Skip the calculation if there is No Income
3576    IF trc_AnnBonYtd <> 0 THEN
3577       hr_utility.set_location('py_za_tx_01032000.NorCalc',20);
3578    -- Annual Bonus Earnings
3579       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
3580    -- Taxable Annual Bonus Income
3581       trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
3582    -- Threshold Check
3583       IF trc_TxbAnnBonInc >= trc_Threshold THEN
3584          hr_utility.set_location('py_za_tx_01032000.NorCalc',21);
3585       -- Tax Liability
3586          trc_TotLibAB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnBonInc);
3587          trc_LibFyAB := trc_TotLibAB - trc_TotLibTA;
3588       -- Negative Check
3589          IF trc_LibFyAB < 0 THEN
3590             hr_utility.set_location('py_za_tx_01032000.NorCalc',22);
3591             trc_TotLibAB := trc_TotLibTA;
3592          -- Refund any tax paid
3593             trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
3594             trc_NpValABOvr := TRUE;
3595          ELSE
3596          -- Check Bonus Provision
3597             IF trc_BonProYtd <> 0 THEN
3598                hr_utility.set_location('py_za_tx_01032000.NorCalc',23);
3599             -- Check Bonus Provision Frequency
3600                IF dbi_BP_TX_RCV = 'A' THEN
3601                   hr_utility.set_location('py_za_tx_01032000.NorCalc',24);
3602                   trc_LibFpAB := 0;
3603                ELSE
3604                   hr_utility.set_location('py_za_tx_01032000.NorCalc',25);
3605                   trc_LibFpAB :=
3606                   trc_LibFyAB - ( bal_TX_ON_BP_YTD
3607                                 + trc_LibFpBP
3608                                 + bal_TX_ON_AB_YTD);
3609                END IF;
3610             ELSE
3611                hr_utility.set_location('py_za_tx_01032000.NorCalc',26);
3612                trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
3613             END IF;
3614          END IF;
3615       ELSE
3616          hr_utility.set_location('py_za_tx_01032000.NorCalc',27);
3617          trc_TotLibAB := trc_TotLibTA;
3618       -- Refund any tax paid
3619          trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
3620          trc_NpValABOvr := TRUE;
3621       END IF;
3622    ELSE
3623       hr_utility.set_location('py_za_tx_01032000.NorCalc',28);
3624       trc_AnnBonErn := trc_TrvAllErn;
3625       trc_TxbAnnBonInc := trc_TxbTrvInc;
3626       trc_TotLibAB := trc_TotLibTA;
3627    -- Refund any tax paid
3628       trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
3629       trc_NpValABOvr := TRUE;
3630    END IF;
3631 
3632 -- Annual Payments
3633 --
3634    -- Ytd Annual Payments
3635    trc_AnnPymYtd :=
3636       ( bal_AC_NRFI_YTD
3637       + bal_AC_RFI_YTD
3638       + bal_ANU_FRM_RET_FND_NRFI_YTD
3639       + bal_ANU_FRM_RET_FND_RFI_YTD
3640       + bal_PRCH_ANU_TXB_NRFI_YTD
3641       + bal_PRCH_ANU_TXB_RFI_YTD
3642       + bal_TXB_AP_NRFI_YTD
3643       + bal_TXB_AP_RFI_YTD
3644       );
3645    -- Skip the calculation if there is No Income
3646    IF trc_AnnPymYtd <> 0 THEN
3647       hr_utility.set_location('py_za_tx_01032000.NorCalc',29);
3648    -- Annual Payments Earnings
3649       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
3650    -- Taxable Annual Payments Income
3651       trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
3652    -- Threshold Check
3653       IF trc_TxbAnnPymInc >= trc_Threshold THEN
3654          hr_utility.set_location('py_za_tx_01032000.NorCalc',30);
3655       -- Tax Liability
3656          trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnPymInc);
3657          trc_LibFyAP := trc_TotLibAP - trc_TotLibAB;
3658       -- Negative Check
3659          IF trc_LibFyAP < 0 THEN
3660             hr_utility.set_location('py_za_tx_01032000.NorCalc',31);
3661             trc_TotLibAP := trc_TotLibAB;
3662          -- Refund any tax paid
3663             trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
3664             trc_NpValAPOvr := TRUE;
3665          ELSE
3666             hr_utility.set_location('py_za_tx_01032000.NorCalc',32);
3667             trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
3668          END IF;
3669       ELSE
3670          hr_utility.set_location('py_za_tx_01032000.NorCalc',33);
3671          trc_TotLibAP := trc_TotLibAB;
3672       -- Refund any tax paid
3673          trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
3674          trc_NpValAPOvr := TRUE;
3675       END IF;
3676    ELSE
3677       hr_utility.set_location('py_za_tx_01032000.NorCalc',34);
3678       trc_AnnPymErn := trc_AnnBonErn;
3679       trc_TxbAnnPymInc := trc_TxbAnnBonInc;
3680       trc_TotLibAP := trc_TotLibAB;
3681    -- Refund any tax paid
3682       trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
3683       trc_NpValAPOvr := TRUE;
3684    END IF;
3685 
3686 -- Public Office Allowance
3687 --
3688    -- Ytd Public Office Allowance
3689    trc_PblOffYtd :=
3690       ( bal_PO_NRFI_YTD
3691       + bal_PO_RFI_YTD
3692       );
3693    -- Skip the calculation if there is No Income
3694    IF trc_PblOffYtd <> 0 THEN
3695       hr_utility.set_location('py_za_tx_01032000.NorCalc',35);
3696    -- Ptd Public Office Allowance
3697       trc_PblOffPtd :=
3698          ( bal_PO_NRFI_PTD
3699          + bal_PO_RFI_PTD
3700          );
3701    -- Annualise Public Office Allowance
3702       trc_PblOffErn := py_za_tx_utl_01032000.Annualise
3703          (p_YtdInc => trc_PblOffYtd
3704          ,p_PtdInc => trc_PblOffPtd
3705          );
3706    -- Tax Liability
3707       trc_LibFyPO := trc_PblOffErn * glb_ZA_PBL_TX_RTE / 100;
3708       trc_LibFpPO := py_za_tx_utl_01032000.DeAnnualise
3709          (trc_LibFyPO
3710          ,bal_TX_ON_PO_YTD
3711          ,bal_TX_ON_PO_PTD
3712          );
3713    ELSE
3714       hr_utility.set_location('py_za_tx_01032000.NorCalc',36);
3715    -- Refund any tax paid
3716       trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
3717       trc_NpValPOOvr := TRUE;
3718    END IF;
3719 
3720 -- Net Pay Validation
3721 --
3722    py_za_tx_utl_01032000.NpVal;
3723 
3724    hr_utility.set_location('py_za_tx_01032000.NorCalc',37);
3725 
3726    -- Base Income
3727    py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
3728    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
3729    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
3730    -- Normal Income
3731    py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
3732    py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
3733    py_za_tx_utl_01032000.WriteHrTrace('trc_NorErn: '||to_char(trc_NorErn));
3734    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
3735    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibNI: '||to_char(trc_TotLibNI));
3736    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyNI: '||to_char(trc_LibFyNI));
3737    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpNI: '||to_char(trc_LibFpNI));
3738    -- Fringe Benefits
3739    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
3740    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
3741    py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
3742    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
3743    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibFB: '||to_char(trc_TotLibFB));
3744    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyFB: '||to_char(trc_LibFyFB));
3745    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpFB: '||to_char(trc_LibFpFB));
3746    -- Travel Allowance
3747    py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
3748    py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
3749    py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
3750    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
3751    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibTA: '||to_char(trc_TotLibTA));
3752    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyTA: '||to_char(trc_LibFyTA));
3753    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpTA: '||to_char(trc_LibFpTA));
3754    -- Bonus Provision
3755    py_za_tx_utl_01032000.WriteHrTrace('trc_BonProYtd: '||to_char(trc_BonProYtd));
3756    py_za_tx_utl_01032000.WriteHrTrace('trc_BonProPtd: '||to_char(trc_BonProPtd));
3757    py_za_tx_utl_01032000.WriteHrTrace('trc_BonProErn: '||to_char(trc_BonProErn));
3758    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
3759    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBP: '||to_char(trc_TotLibBP));
3760    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyBP: '||to_char(trc_LibFyBP));
3761    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpBP: '||to_char(trc_LibFpBP));
3762    -- Annual Bonus
3763    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
3764    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
3765    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
3766    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
3767    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAB: '||to_char(trc_TotLibAB));
3768    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAB: '||to_char(trc_LibFyAB));
3769    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAB: '||to_char(trc_LibFpAB));
3770    -- Annual Payments
3771    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
3772    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
3773    py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
3774    py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
3775    py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
3776    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
3777    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
3778    -- Pubilc Office Allowance
3779    py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
3780    py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
3781    py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffErn: '||to_char(trc_PblOffErn));
3782    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyPO: '||to_char(trc_LibFyPO));
3783    py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpPO: '||to_char(trc_LibFpPO));
3784 
3785 EXCEPTION
3786    WHEN OTHERS THEN
3787       IF xpt_Msg = 'No Error' THEN
3788          xpt_Msg := 'NorCalc: '||TO_CHAR(SQLCODE);
3789       END IF;
3790       RAISE xpt_E;
3791 END NorCalc;
3792 
3793 
3794 -- Function to Initialise Globals
3795 --
3796 FUNCTION ZaTxGlb_01032000(
3797 -- Global Values
3798     p_ZA_ADL_TX_RBT         IN NUMBER DEFAULT 0
3799    ,p_ZA_ARR_PF_AN_MX_ABT   IN NUMBER DEFAULT 0
3800    ,p_ZA_ARR_RA_AN_MX_ABT   IN NUMBER DEFAULT 0
3801    ,p_ZA_TRV_ALL_TX_PRC     IN NUMBER DEFAULT 0
3802    ,p_ZA_CC_TX_PRC          IN NUMBER DEFAULT 0
3803    ,p_ZA_LABOUR_BROK_PERC   IN NUMBER DEFAULT 0
3804    ,p_ZA_PF_AN_MX_ABT       IN NUMBER DEFAULT 0
3805    ,p_ZA_PF_MX_PRC          IN NUMBER DEFAULT 0
3806    ,p_ZA_PER_SERV_COMP_PERC IN NUMBER DEFAULT 0
3807    ,p_ZA_PRI_TX_RBT         IN NUMBER DEFAULT 0
3808    ,p_ZA_PRI_TX_THRSHLD     IN NUMBER DEFAULT 0
3809    ,p_ZA_PBL_TX_PRC         IN NUMBER DEFAULT 0
3810    ,p_ZA_PBL_TX_RTE         IN NUMBER DEFAULT 0
3811    ,p_ZA_RA_AN_MX_ABT       IN NUMBER DEFAULT 0
3812    ,p_ZA_RA_MX_PRC          IN NUMBER DEFAULT 0
3813    ,p_ZA_SC_TX_THRSHLD      IN NUMBER DEFAULT 0
3814    ,p_ZA_SIT_LIM            IN NUMBER DEFAULT 0
3815    ,p_ZA_TMP_TX_RTE         IN NUMBER DEFAULT 0
3816    ,p_ZA_WRK_DYS_PR_YR      IN NUMBER DEFAULT 0
3817    ) RETURN NUMBER
3818 AS
3819    l_Dum NUMBER := 1;
3820    --id VARCHAR2(30);
3821 
3822 BEGIN
3823    --id := dbms_debug.initialize('JLTX');
3824    --dbms_debug.debug_on;
3825 
3826 -- Initialise Package Globals
3827 -- Global Values
3828    glb_ZA_ADL_TX_RBT         := p_ZA_ADL_TX_RBT;
3829    glb_ZA_ARR_PF_AN_MX_ABT   := p_ZA_ARR_PF_AN_MX_ABT;
3830    glb_ZA_ARR_RA_AN_MX_ABT   := p_ZA_ARR_RA_AN_MX_ABT;
3831    glb_ZA_TRV_ALL_TX_PRC     := p_ZA_TRV_ALL_TX_PRC;
3832    glb_ZA_CC_TX_PRC          := p_ZA_CC_TX_PRC;
3833    glb_ZA_LABOUR_BROK_PERC   := p_ZA_LABOUR_BROK_PERC;
3834    glb_ZA_PF_AN_MX_ABT       := p_ZA_PF_AN_MX_ABT;
3835    glb_ZA_PF_MX_PRC          := p_ZA_PF_MX_PRC;
3836    glb_ZA_PER_SERV_COMP_PERC := p_ZA_PER_SERV_COMP_PERC;
3837    glb_ZA_PRI_TX_RBT         := p_ZA_PRI_TX_RBT;
3838    glb_ZA_PRI_TX_THRSHLD     := p_ZA_PRI_TX_THRSHLD;
3839    glb_ZA_PBL_TX_PRC         := p_ZA_PBL_TX_PRC;
3840    glb_ZA_PBL_TX_RTE         := p_ZA_PBL_TX_RTE;
3841    glb_ZA_RA_AN_MX_ABT       := p_ZA_RA_AN_MX_ABT;
3842    glb_ZA_RA_MX_PRC          := p_ZA_RA_MX_PRC;
3843    glb_ZA_SC_TX_THRSHLD      := p_ZA_SC_TX_THRSHLD;
3844    glb_ZA_SIT_LIM            := p_ZA_SIT_LIM;
3845    glb_ZA_TMP_TX_RTE         := p_ZA_TMP_TX_RTE;
3846    glb_ZA_WRK_DYS_PR_YR      := p_ZA_WRK_DYS_PR_YR;
3847 
3848    RETURN l_Dum;
3849 EXCEPTION
3850    WHEN OTHERS THEN
3851       hr_utility.set_message(801, 'ZaTxGlb_01032000: '||TO_CHAR(SQLCODE));
3852       hr_utility.raise_error;
3853 END ZaTxGlb_01032000;
3854 
3855 -- Function to Initialise Globals - Database Item Values
3856 --
3857 FUNCTION ZaTxDbi_01032000(
3858 -- Database Items
3859     p_ARR_PF_FRQ IN VARCHAR2 DEFAULT 'M'
3860    ,p_ARR_RA_FRQ IN VARCHAR2 DEFAULT 'M'
3861    ,p_BP_TX_RCV IN VARCHAR2 DEFAULT 'B'
3862    ,p_PER_AGE IN NUMBER DEFAULT 0
3863    ,p_PER_DTE_OF_BRTH IN DATE DEFAULT to_date('31-12-4712','DD-MM-YYYY')
3864    ,p_RA_FRQ IN VARCHAR2 DEFAULT 'M'
3865    ,p_SEA_WRK_DYS_WRK IN NUMBER DEFAULT 0
3866    ,p_SES_DTE IN DATE DEFAULT to_date('31-12-4712','DD-MM-YYYY')
3867    ,p_TX_DIR_NUM IN VARCHAR2 DEFAULT 'NULL'
3868    ,p_TX_DIR_VAL IN NUMBER DEFAULT 0
3869    ,p_TX_STA IN VARCHAR2 DEFAULT 'X'
3870    ,p_ZA_ACT_END_DTE IN DATE DEFAULT to_date('31-12-4712','DD-MM-YYYY')
3871    ,p_ZA_ACT_STRT_DTE IN DATE DEFAULT to_date('31-12-4712','DD-MM-YYYY')
3872    ,p_ZA_CUR_PRD_END_DTE IN DATE DEFAULT to_date('31-12-4712','DD-MM-YYYY')
3873    ,p_ZA_CUR_PRD_STRT_DTE IN DATE DEFAULT to_date('31-12-4712','DD-MM-YYYY')
3874    ,p_ZA_DYS_IN_YR IN NUMBER DEFAULT 0
3875    ,p_ZA_PAY_PRDS_LFT IN NUMBER DEFAULT 0
3876    ,p_ZA_PAY_PRDS_PER_YR IN NUMBER DEFAULT 0
3877    ,p_ZA_TX_YR_END IN DATE DEFAULT to_date('31-12-4712','DD-MM-YYYY')
3878    ,p_ZA_TX_YR_STRT IN DATE DEFAULT to_date('31-12-4712','DD-MM-YYYY')
3879    ) RETURN NUMBER
3880 AS
3881    l_Dum NUMBER := 1;
3882 
3883 BEGIN
3884 -- Initialise Package Globals
3885 -- Database Items
3886    dbi_ARR_PF_FRQ          := p_ARR_PF_FRQ;
3887    dbi_ARR_RA_FRQ          := p_ARR_RA_FRQ;
3888    dbi_BP_TX_RCV           := p_BP_TX_RCV;
3889    dbi_PER_AGE             := p_PER_AGE;
3890    dbi_PER_DTE_OF_BRTH     := p_PER_DTE_OF_BRTH;
3891    dbi_RA_FRQ              := p_RA_FRQ;
3892    dbi_SEA_WRK_DYS_WRK     := p_SEA_WRK_DYS_WRK;
3893    dbi_SES_DTE             := p_SES_DTE;
3894    dbi_TX_DIR_NUM          := p_TX_DIR_NUM;
3895    dbi_TX_DIR_VAL          := p_TX_DIR_VAL;
3896    dbi_TX_STA              := p_TX_STA;
3897    dbi_ZA_ACT_END_DTE      := p_ZA_ACT_END_DTE;
3898    dbi_ZA_ACT_STRT_DTE     := p_ZA_ACT_STRT_DTE;
3899    dbi_ZA_CUR_PRD_END_DTE  := p_ZA_CUR_PRD_END_DTE;
3900    dbi_ZA_CUR_PRD_STRT_DTE := p_ZA_CUR_PRD_STRT_DTE;
3901    dbi_ZA_DYS_IN_YR        := p_ZA_DYS_IN_YR;
3902    dbi_ZA_PAY_PRDS_LFT     := p_ZA_PAY_PRDS_LFT;
3903    dbi_ZA_PAY_PRDS_PER_YR  := p_ZA_PAY_PRDS_PER_YR;
3904    dbi_ZA_TX_YR_END        := p_ZA_TX_YR_END;
3905    dbi_ZA_TX_YR_STRT       := p_ZA_TX_YR_STRT;
3906 
3907    RETURN l_Dum;
3908 EXCEPTION
3909    WHEN OTHERS THEN
3910       hr_utility.set_message(801, 'ZaTxDbi_01032000: '||TO_CHAR(SQLCODE));
3911       hr_utility.raise_error;
3912 END ZaTxDbi_01032000;
3913 
3914 
3915 -- Function to Initialise Globals - Balance Values
3916 -- First Section
3917 FUNCTION ZaTxBal1_01032000(
3918 -- Balances
3919     p_AB_NRFI_CMTD               IN NUMBER DEFAULT 0
3920    ,p_AB_NRFI_RUN                IN NUMBER DEFAULT 0
3921    ,p_AB_NRFI_PTD                IN NUMBER DEFAULT 0
3922    ,p_AB_NRFI_YTD                IN NUMBER DEFAULT 0
3923    ,p_AB_RFI_CMTD                IN NUMBER DEFAULT 0
3924    ,p_AB_RFI_RUN                 IN NUMBER DEFAULT 0
3925    ,p_AB_RFI_PTD                 IN NUMBER DEFAULT 0
3926    ,p_AB_RFI_YTD                 IN NUMBER DEFAULT 0
3927    ,p_AC_NRFI_RUN                IN NUMBER DEFAULT 0
3928    ,p_AC_NRFI_PTD                IN NUMBER DEFAULT 0
3929    ,p_AC_NRFI_YTD                IN NUMBER DEFAULT 0
3930    ,p_AC_RFI_RUN                 IN NUMBER DEFAULT 0
3931    ,p_AC_RFI_PTD                 IN NUMBER DEFAULT 0
3932    ,p_AC_RFI_YTD                 IN NUMBER DEFAULT 0
3933    ,p_ANN_PF_CMTD                IN NUMBER DEFAULT 0
3934    ,p_ANN_PF_RUN                 IN NUMBER DEFAULT 0
3935    ,p_ANN_PF_PTD                 IN NUMBER DEFAULT 0
3936    ,p_ANN_PF_YTD                 IN NUMBER DEFAULT 0
3937    ,p_ANU_FRM_RET_FND_NRFI_CMTD  IN NUMBER DEFAULT 0
3938    ,p_ANU_FRM_RET_FND_NRFI_RUN   IN NUMBER DEFAULT 0
3939    ,p_ANU_FRM_RET_FND_NRFI_PTD   IN NUMBER DEFAULT 0
3940    ,p_ANU_FRM_RET_FND_NRFI_YTD   IN NUMBER DEFAULT 0
3941    ,p_ANU_FRM_RET_FND_RFI_CMTD   IN NUMBER DEFAULT 0
3942    ,p_ANU_FRM_RET_FND_RFI_RUN    IN NUMBER DEFAULT 0
3943    ,p_ANU_FRM_RET_FND_RFI_PTD    IN NUMBER DEFAULT 0
3944    ,p_ANU_FRM_RET_FND_RFI_YTD    IN NUMBER DEFAULT 0
3945    ,p_ARR_PF_CMTD                IN NUMBER DEFAULT 0
3946    ,p_ARR_PF_CYTD                IN NUMBER DEFAULT 0
3947    ,p_ARR_PF_PTD                 IN NUMBER DEFAULT 0
3948    ,p_ARR_PF_YTD                 IN NUMBER DEFAULT 0
3949    ,p_ARR_RA_CMTD                IN NUMBER DEFAULT 0
3950    ,p_ARR_RA_CYTD                IN NUMBER DEFAULT 0
3951    ,p_ARR_RA_PTD                 IN NUMBER DEFAULT 0
3952    ,p_ARR_RA_YTD                 IN NUMBER DEFAULT 0
3953    ,p_AST_PRCHD_RVAL_NRFI_CMTD   IN NUMBER DEFAULT 0
3954    ,p_AST_PRCHD_RVAL_NRFI_CYTD   IN NUMBER DEFAULT 0
3955    ,p_AST_PRCHD_RVAL_NRFI_RUN    IN NUMBER DEFAULT 0
3956    ,p_AST_PRCHD_RVAL_NRFI_PTD    IN NUMBER DEFAULT 0
3957    ,p_AST_PRCHD_RVAL_NRFI_YTD    IN NUMBER DEFAULT 0
3958    ,p_AST_PRCHD_RVAL_RFI_CMTD    IN NUMBER DEFAULT 0
3959    ,p_AST_PRCHD_RVAL_RFI_CYTD    IN NUMBER DEFAULT 0
3960    ,p_AST_PRCHD_RVAL_RFI_RUN     IN NUMBER DEFAULT 0
3961    ,p_AST_PRCHD_RVAL_RFI_PTD     IN NUMBER DEFAULT 0
3962    ,p_AST_PRCHD_RVAL_RFI_YTD     IN NUMBER DEFAULT 0
3963    ,p_BP_CMTD                    IN NUMBER DEFAULT 0
3964    ,p_BP_PTD                     IN NUMBER DEFAULT 0
3965    ,p_BP_YTD                     IN NUMBER DEFAULT 0
3966    ,p_BUR_AND_SCH_NRFI_CMTD      IN NUMBER DEFAULT 0
3967    ,p_BUR_AND_SCH_NRFI_CYTD      IN NUMBER DEFAULT 0
3968    ,p_BUR_AND_SCH_NRFI_RUN       IN NUMBER DEFAULT 0
3969    ,p_BUR_AND_SCH_NRFI_PTD       IN NUMBER DEFAULT 0
3970    ,p_BUR_AND_SCH_NRFI_YTD       IN NUMBER DEFAULT 0
3971    ,p_BUR_AND_SCH_RFI_CMTD       IN NUMBER DEFAULT 0
3972    ,p_BUR_AND_SCH_RFI_CYTD       IN NUMBER DEFAULT 0
3973    ,p_BUR_AND_SCH_RFI_RUN        IN NUMBER DEFAULT 0
3974    ,p_BUR_AND_SCH_RFI_PTD        IN NUMBER DEFAULT 0
3975    ,p_BUR_AND_SCH_RFI_YTD        IN NUMBER DEFAULT 0
3976    ,p_COMM_NRFI_CMTD             IN NUMBER DEFAULT 0
3977    ,p_COMM_NRFI_CYTD             IN NUMBER DEFAULT 0
3978    ,p_COMM_NRFI_RUN              IN NUMBER DEFAULT 0
3979    ,p_COMM_NRFI_PTD              IN NUMBER DEFAULT 0
3980    ,p_COMM_NRFI_YTD              IN NUMBER DEFAULT 0
3981    ,p_COMM_RFI_CMTD              IN NUMBER DEFAULT 0
3982    ,p_COMM_RFI_CYTD              IN NUMBER DEFAULT 0
3983    ,p_COMM_RFI_RUN               IN NUMBER DEFAULT 0
3984    ,p_COMM_RFI_PTD               IN NUMBER DEFAULT 0
3985    ,p_COMM_RFI_YTD               IN NUMBER DEFAULT 0
3986    ,p_COMP_ALL_NRFI_CMTD         IN NUMBER DEFAULT 0
3987    ,p_COMP_ALL_NRFI_CYTD         IN NUMBER DEFAULT 0
3988    ,p_COMP_ALL_NRFI_RUN          IN NUMBER DEFAULT 0
3989    ,p_COMP_ALL_NRFI_PTD          IN NUMBER DEFAULT 0
3990    ,p_COMP_ALL_NRFI_YTD          IN NUMBER DEFAULT 0
3991    ,p_COMP_ALL_RFI_CMTD          IN NUMBER DEFAULT 0
3992    ,p_COMP_ALL_RFI_CYTD          IN NUMBER DEFAULT 0
3993    ,p_COMP_ALL_RFI_RUN           IN NUMBER DEFAULT 0
3994    ,p_COMP_ALL_RFI_PTD           IN NUMBER DEFAULT 0
3995    ,p_COMP_ALL_RFI_YTD           IN NUMBER DEFAULT 0
3996    ) RETURN NUMBER
3997 AS
3998    l_Dum NUMBER := 1;
3999 
4000 BEGIN
4001 -- Balances
4002    bal_AB_NRFI_CMTD               := p_AB_NRFI_CMTD;
4003    bal_AB_NRFI_RUN                := p_AB_NRFI_RUN;
4004    bal_AB_NRFI_PTD                := p_AB_NRFI_PTD;
4005    bal_AB_NRFI_YTD                := p_AB_NRFI_YTD;
4006    bal_AB_RFI_CMTD                := p_AB_RFI_CMTD;
4007    bal_AB_RFI_RUN                 := p_AB_RFI_RUN;
4008    bal_AB_RFI_PTD                 := p_AB_RFI_PTD;
4009    bal_AB_RFI_YTD                 := p_AB_RFI_YTD;
4010    bal_AC_NRFI_RUN                := p_AC_NRFI_RUN;
4011    bal_AC_NRFI_PTD                := p_AC_NRFI_PTD;
4012    bal_AC_NRFI_YTD                := p_AC_NRFI_YTD;
4013    bal_AC_RFI_RUN                 := p_AC_RFI_RUN;
4014    bal_AC_RFI_PTD                 := p_AC_RFI_PTD;
4015    bal_AC_RFI_YTD                 := p_AC_RFI_YTD;
4016    bal_ANN_PF_CMTD                := p_ANN_PF_CMTD;
4017    bal_ANN_PF_RUN                 := p_ANN_PF_RUN;
4018    bal_ANN_PF_PTD                 := p_ANN_PF_PTD;
4019    bal_ANN_PF_YTD                 := p_ANN_PF_YTD;
4020    bal_ANU_FRM_RET_FND_NRFI_CMTD  := p_ANU_FRM_RET_FND_NRFI_CMTD;
4021    bal_ANU_FRM_RET_FND_NRFI_RUN   := p_ANU_FRM_RET_FND_NRFI_RUN;
4022    bal_ANU_FRM_RET_FND_NRFI_PTD   := p_ANU_FRM_RET_FND_NRFI_PTD;
4023    bal_ANU_FRM_RET_FND_NRFI_YTD   := p_ANU_FRM_RET_FND_NRFI_YTD;
4024    bal_ANU_FRM_RET_FND_RFI_CMTD   := p_ANU_FRM_RET_FND_RFI_CMTD;
4025    bal_ANU_FRM_RET_FND_RFI_RUN    := p_ANU_FRM_RET_FND_RFI_RUN;
4026    bal_ANU_FRM_RET_FND_RFI_PTD    := p_ANU_FRM_RET_FND_RFI_PTD;
4027    bal_ANU_FRM_RET_FND_RFI_YTD    := p_ANU_FRM_RET_FND_RFI_YTD;
4028    bal_ARR_PF_CMTD                := p_ARR_PF_CMTD;
4029    bal_ARR_PF_CYTD                := p_ARR_PF_CYTD;
4030    bal_ARR_PF_PTD                 := p_ARR_PF_PTD;
4031    bal_ARR_PF_YTD                 := p_ARR_PF_YTD;
4032    bal_ARR_RA_CMTD                := p_ARR_RA_CMTD;
4033    bal_ARR_RA_CYTD                := p_ARR_RA_CYTD;
4034    bal_ARR_RA_PTD                 := p_ARR_RA_PTD;
4035    bal_ARR_RA_YTD                 := p_ARR_RA_YTD;
4036    bal_AST_PRCHD_RVAL_NRFI_CMTD   := p_AST_PRCHD_RVAL_NRFI_CMTD;
4037    bal_AST_PRCHD_RVAL_NRFI_CYTD   := p_AST_PRCHD_RVAL_NRFI_CYTD;
4038    bal_AST_PRCHD_RVAL_NRFI_RUN    := p_AST_PRCHD_RVAL_NRFI_RUN;
4039    bal_AST_PRCHD_RVAL_NRFI_PTD    := p_AST_PRCHD_RVAL_NRFI_PTD;
4040    bal_AST_PRCHD_RVAL_NRFI_YTD    := p_AST_PRCHD_RVAL_NRFI_YTD;
4041    bal_AST_PRCHD_RVAL_RFI_CMTD    := p_AST_PRCHD_RVAL_RFI_CMTD;
4042    bal_AST_PRCHD_RVAL_RFI_CYTD    := p_AST_PRCHD_RVAL_RFI_CYTD;
4043    bal_AST_PRCHD_RVAL_RFI_RUN     := p_AST_PRCHD_RVAL_RFI_RUN;
4044    bal_AST_PRCHD_RVAL_RFI_PTD     := p_AST_PRCHD_RVAL_RFI_PTD;
4045    bal_AST_PRCHD_RVAL_RFI_YTD     := p_AST_PRCHD_RVAL_RFI_YTD;
4046    bal_BP_CMTD                    := p_BP_CMTD;
4047    bal_BP_PTD                     := p_BP_PTD;
4048    bal_BP_YTD                     := p_BP_YTD;
4049    bal_BUR_AND_SCH_NRFI_CMTD      := p_BUR_AND_SCH_NRFI_CMTD;
4050    bal_BUR_AND_SCH_NRFI_CYTD      := p_BUR_AND_SCH_NRFI_CYTD;
4051    bal_BUR_AND_SCH_NRFI_RUN       := p_BUR_AND_SCH_NRFI_RUN;
4052    bal_BUR_AND_SCH_NRFI_PTD       := p_BUR_AND_SCH_NRFI_PTD;
4053    bal_BUR_AND_SCH_NRFI_YTD       := p_BUR_AND_SCH_NRFI_YTD;
4054    bal_BUR_AND_SCH_RFI_CMTD       := p_BUR_AND_SCH_RFI_CMTD;
4055    bal_BUR_AND_SCH_RFI_CYTD       := p_BUR_AND_SCH_RFI_CYTD;
4056    bal_BUR_AND_SCH_RFI_RUN        := p_BUR_AND_SCH_RFI_RUN;
4057    bal_BUR_AND_SCH_RFI_PTD        := p_BUR_AND_SCH_RFI_PTD;
4058    bal_BUR_AND_SCH_RFI_YTD        := p_BUR_AND_SCH_RFI_YTD;
4059    bal_COMM_NRFI_CMTD             := p_COMM_NRFI_CMTD;
4060    bal_COMM_NRFI_CYTD             := p_COMM_NRFI_CYTD;
4061    bal_COMM_NRFI_RUN              := p_COMM_NRFI_RUN;
4062    bal_COMM_NRFI_PTD              := p_COMM_NRFI_PTD;
4063    bal_COMM_NRFI_YTD              := p_COMM_NRFI_YTD;
4064    bal_COMM_RFI_CMTD              := p_COMM_RFI_CMTD;
4065    bal_COMM_RFI_CYTD              := p_COMM_RFI_CYTD;
4066    bal_COMM_RFI_RUN               := p_COMM_RFI_RUN;
4067    bal_COMM_RFI_PTD               := p_COMM_RFI_PTD;
4068    bal_COMM_RFI_YTD               := p_COMM_RFI_YTD;
4069    bal_COMP_ALL_NRFI_CMTD         := p_COMP_ALL_NRFI_CMTD;
4070    bal_COMP_ALL_NRFI_CYTD         := p_COMP_ALL_NRFI_CYTD;
4071    bal_COMP_ALL_NRFI_RUN          := p_COMP_ALL_NRFI_RUN;
4072    bal_COMP_ALL_NRFI_PTD          := p_COMP_ALL_NRFI_PTD;
4073    bal_COMP_ALL_NRFI_YTD          := p_COMP_ALL_NRFI_YTD;
4074    bal_COMP_ALL_RFI_CMTD          := p_COMP_ALL_RFI_CMTD;
4075    bal_COMP_ALL_RFI_CYTD          := p_COMP_ALL_RFI_CYTD;
4076    bal_COMP_ALL_RFI_RUN           := p_COMP_ALL_RFI_RUN;
4077    bal_COMP_ALL_RFI_PTD           := p_COMP_ALL_RFI_PTD;
4078    bal_COMP_ALL_RFI_YTD           := p_COMP_ALL_RFI_YTD;
4079 
4080    RETURN l_Dum;
4081 EXCEPTION
4082    WHEN OTHERS THEN
4083       hr_utility.set_message(801, 'ZaTxBal1_01032000: '||TO_CHAR(SQLCODE));
4084       hr_utility.raise_error;
4085 END ZaTxBal1_01032000;
4086 
4087 
4088 -- Function to Initialise Globals - Balance Values
4089 -- Second Section
4090 FUNCTION ZaTxBal2_01032000(
4091 -- Balances
4092     p_CUR_PF_CMTD                 IN NUMBER DEFAULT 0
4093    ,p_CUR_PF_CYTD                 IN NUMBER DEFAULT 0
4094    ,p_CUR_PF_RUN                  IN NUMBER DEFAULT 0
4095    ,p_CUR_PF_PTD                  IN NUMBER DEFAULT 0
4096    ,p_CUR_PF_YTD                  IN NUMBER DEFAULT 0
4097    ,p_CUR_RA_CMTD                 IN NUMBER DEFAULT 0
4098    ,p_CUR_RA_CYTD                 IN NUMBER DEFAULT 0
4099    ,p_CUR_RA_RUN                  IN NUMBER DEFAULT 0
4100    ,p_CUR_RA_PTD                  IN NUMBER DEFAULT 0
4101    ,p_CUR_RA_YTD                  IN NUMBER DEFAULT 0
4102    ,p_ENT_ALL_NRFI_CMTD           IN NUMBER DEFAULT 0
4103    ,p_ENT_ALL_NRFI_CYTD           IN NUMBER DEFAULT 0
4104    ,p_ENT_ALL_NRFI_RUN            IN NUMBER DEFAULT 0
4105    ,p_ENT_ALL_NRFI_PTD            IN NUMBER DEFAULT 0
4106    ,p_ENT_ALL_NRFI_YTD            IN NUMBER DEFAULT 0
4107    ,p_ENT_ALL_RFI_CMTD            IN NUMBER DEFAULT 0
4108    ,p_ENT_ALL_RFI_CYTD            IN NUMBER DEFAULT 0
4109    ,p_ENT_ALL_RFI_RUN             IN NUMBER DEFAULT 0
4110    ,p_ENT_ALL_RFI_PTD             IN NUMBER DEFAULT 0
4111    ,p_ENT_ALL_RFI_YTD             IN NUMBER DEFAULT 0
4112    ,p_EXC_ARR_PEN_ITD             IN NUMBER DEFAULT 0
4113    ,p_EXC_ARR_PEN_PTD             IN NUMBER DEFAULT 0
4114    ,p_EXC_ARR_PEN_YTD             IN NUMBER DEFAULT 0
4115    ,p_EXC_ARR_RA_ITD              IN NUMBER DEFAULT 0
4116    ,p_EXC_ARR_RA_PTD              IN NUMBER DEFAULT 0
4117    ,p_EXC_ARR_RA_YTD              IN NUMBER DEFAULT 0
4118    ,p_FREE_ACCOM_NRFI_CMTD        IN NUMBER DEFAULT 0
4119    ,p_FREE_ACCOM_NRFI_CYTD        IN NUMBER DEFAULT 0
4120    ,p_FREE_ACCOM_NRFI_RUN         IN NUMBER DEFAULT 0
4121    ,p_FREE_ACCOM_NRFI_PTD         IN NUMBER DEFAULT 0
4122    ,p_FREE_ACCOM_NRFI_YTD         IN NUMBER DEFAULT 0
4123    ,p_FREE_ACCOM_RFI_CMTD         IN NUMBER DEFAULT 0
4124    ,p_FREE_ACCOM_RFI_CYTD         IN NUMBER DEFAULT 0
4125    ,p_FREE_ACCOM_RFI_RUN          IN NUMBER DEFAULT 0
4126    ,p_FREE_ACCOM_RFI_PTD          IN NUMBER DEFAULT 0
4127    ,p_FREE_ACCOM_RFI_YTD          IN NUMBER DEFAULT 0
4128    ,p_FREE_SERV_NRFI_CMTD         IN NUMBER DEFAULT 0
4129    ,p_FREE_SERV_NRFI_CYTD         IN NUMBER DEFAULT 0
4130    ,p_FREE_SERV_NRFI_RUN          IN NUMBER DEFAULT 0
4131    ,p_FREE_SERV_NRFI_PTD          IN NUMBER DEFAULT 0
4132    ,p_FREE_SERV_NRFI_YTD          IN NUMBER DEFAULT 0
4133    ,p_FREE_SERV_RFI_CMTD          IN NUMBER DEFAULT 0
4134    ,p_FREE_SERV_RFI_CYTD          IN NUMBER DEFAULT 0
4135    ,p_FREE_SERV_RFI_RUN           IN NUMBER DEFAULT 0
4136    ,p_FREE_SERV_RFI_PTD           IN NUMBER DEFAULT 0
4137    ,p_FREE_SERV_RFI_YTD           IN NUMBER DEFAULT 0
4138    ,p_LOW_LOANS_NRFI_CMTD         IN NUMBER DEFAULT 0
4139    ,p_LOW_LOANS_NRFI_CYTD         IN NUMBER DEFAULT 0
4140    ,p_LOW_LOANS_NRFI_RUN          IN NUMBER DEFAULT 0
4141    ,p_LOW_LOANS_NRFI_PTD          IN NUMBER DEFAULT 0
4142    ,p_LOW_LOANS_NRFI_YTD          IN NUMBER DEFAULT 0
4143    ,p_LOW_LOANS_RFI_CMTD          IN NUMBER DEFAULT 0
4144    ,p_LOW_LOANS_RFI_CYTD          IN NUMBER DEFAULT 0
4145    ,p_LOW_LOANS_RFI_RUN           IN NUMBER DEFAULT 0
4146    ,p_LOW_LOANS_RFI_PTD           IN NUMBER DEFAULT 0
4147    ,p_LOW_LOANS_RFI_YTD           IN NUMBER DEFAULT 0
4148    ,p_MLS_AND_VOUCH_NRFI_CMTD     IN NUMBER DEFAULT 0
4149    ,p_MLS_AND_VOUCH_NRFI_CYTD     IN NUMBER DEFAULT 0
4150    ,p_MLS_AND_VOUCH_NRFI_RUN      IN NUMBER DEFAULT 0
4151    ,p_MLS_AND_VOUCH_NRFI_PTD      IN NUMBER DEFAULT 0
4152    ,p_MLS_AND_VOUCH_NRFI_YTD      IN NUMBER DEFAULT 0
4153    ,p_MLS_AND_VOUCH_RFI_CMTD      IN NUMBER DEFAULT 0
4154    ,p_MLS_AND_VOUCH_RFI_CYTD      IN NUMBER DEFAULT 0
4155    ,p_MLS_AND_VOUCH_RFI_RUN       IN NUMBER DEFAULT 0
4156    ,p_MLS_AND_VOUCH_RFI_PTD       IN NUMBER DEFAULT 0
4157    ,p_MLS_AND_VOUCH_RFI_YTD       IN NUMBER DEFAULT 0
4158    ,p_MED_CONTR_CMTD              IN NUMBER DEFAULT 0
4159    ,p_MED_CONTR_CYTD              IN NUMBER DEFAULT 0
4160    ,p_MED_CONTR_RUN               IN NUMBER DEFAULT 0
4161    ,p_MED_CONTR_PTD               IN NUMBER DEFAULT 0
4162    ,p_MED_CONTR_YTD               IN NUMBER DEFAULT 0
4163    ,p_MED_PAID_NRFI_CMTD          IN NUMBER DEFAULT 0
4164    ,p_MED_PAID_NRFI_CYTD          IN NUMBER DEFAULT 0
4165    ,p_MED_PAID_NRFI_RUN           IN NUMBER DEFAULT 0
4166    ,p_MED_PAID_NRFI_PTD           IN NUMBER DEFAULT 0
4167    ,p_MED_PAID_NRFI_YTD           IN NUMBER DEFAULT 0
4168    ,p_MED_PAID_RFI_CMTD           IN NUMBER DEFAULT 0
4169    ,p_MED_PAID_RFI_CYTD           IN NUMBER DEFAULT 0
4170    ,p_MED_PAID_RFI_RUN            IN NUMBER DEFAULT 0
4171    ,p_MED_PAID_RFI_PTD            IN NUMBER DEFAULT 0
4172    ,p_MED_PAID_RFI_YTD            IN NUMBER DEFAULT 0
4173    ,p_NET_PAY_RUN                 IN NUMBER DEFAULT 0
4174    ,p_NET_TXB_INC_CMTD            IN NUMBER DEFAULT 0
4175    ) RETURN NUMBER
4176 AS
4177    l_Dum NUMBER := 1;
4178 
4179 BEGIN
4180 -- Balances
4181    bal_CUR_PF_CMTD                := p_CUR_PF_CMTD;
4182    bal_CUR_PF_CYTD                := p_CUR_PF_CYTD;
4183    bal_CUR_PF_RUN                 := p_CUR_PF_RUN;
4184    bal_CUR_PF_PTD                 := p_CUR_PF_PTD;
4185    bal_CUR_PF_YTD                 := p_CUR_PF_YTD;
4186    bal_CUR_RA_CMTD                := p_CUR_RA_CMTD;
4187    bal_CUR_RA_CYTD                := p_CUR_RA_CYTD;
4188    bal_CUR_RA_RUN                 := p_CUR_RA_RUN;
4189    bal_CUR_RA_PTD                 := p_CUR_RA_PTD;
4190    bal_CUR_RA_YTD                 := p_CUR_RA_YTD;
4191    bal_ENT_ALL_NRFI_CMTD          := p_ENT_ALL_NRFI_CMTD;
4192    bal_ENT_ALL_NRFI_CYTD          := p_ENT_ALL_NRFI_CYTD;
4193    bal_ENT_ALL_NRFI_RUN           := p_ENT_ALL_NRFI_RUN;
4194    bal_ENT_ALL_NRFI_PTD           := p_ENT_ALL_NRFI_PTD;
4195    bal_ENT_ALL_NRFI_YTD           := p_ENT_ALL_NRFI_YTD;
4196    bal_ENT_ALL_RFI_CMTD           := p_ENT_ALL_RFI_CMTD;
4197    bal_ENT_ALL_RFI_CYTD           := p_ENT_ALL_RFI_CYTD;
4198    bal_ENT_ALL_RFI_RUN            := p_ENT_ALL_RFI_RUN;
4199    bal_ENT_ALL_RFI_PTD            := p_ENT_ALL_RFI_PTD;
4200    bal_ENT_ALL_RFI_YTD            := p_ENT_ALL_RFI_YTD;
4201    bal_EXC_ARR_PEN_ITD            := p_EXC_ARR_PEN_ITD;
4202    bal_EXC_ARR_PEN_PTD            := p_EXC_ARR_PEN_PTD;
4203    bal_EXC_ARR_PEN_YTD            := p_EXC_ARR_PEN_YTD;
4204    bal_EXC_ARR_RA_ITD             := p_EXC_ARR_RA_ITD;
4205    bal_EXC_ARR_RA_PTD             := p_EXC_ARR_RA_PTD;
4206    bal_EXC_ARR_RA_YTD             := p_EXC_ARR_RA_YTD;
4207    bal_FREE_ACCOM_NRFI_CMTD       := p_FREE_ACCOM_NRFI_CMTD;
4208    bal_FREE_ACCOM_NRFI_CYTD       := p_FREE_ACCOM_NRFI_CYTD;
4209    bal_FREE_ACCOM_NRFI_RUN        := p_FREE_ACCOM_NRFI_RUN;
4210    bal_FREE_ACCOM_NRFI_PTD        := p_FREE_ACCOM_NRFI_PTD;
4211    bal_FREE_ACCOM_NRFI_YTD        := p_FREE_ACCOM_NRFI_YTD;
4212    bal_FREE_ACCOM_RFI_CMTD        := p_FREE_ACCOM_RFI_CMTD;
4213    bal_FREE_ACCOM_RFI_CYTD        := p_FREE_ACCOM_RFI_CYTD;
4214    bal_FREE_ACCOM_RFI_RUN         := p_FREE_ACCOM_RFI_RUN;
4215    bal_FREE_ACCOM_RFI_PTD         := p_FREE_ACCOM_RFI_PTD;
4216    bal_FREE_ACCOM_RFI_YTD         := p_FREE_ACCOM_RFI_YTD;
4217    bal_FREE_SERV_NRFI_CMTD        := p_FREE_SERV_NRFI_CMTD;
4218    bal_FREE_SERV_NRFI_CYTD        := p_FREE_SERV_NRFI_CYTD;
4219    bal_FREE_SERV_NRFI_RUN         := p_FREE_SERV_NRFI_RUN;
4220    bal_FREE_SERV_NRFI_PTD         := p_FREE_SERV_NRFI_PTD;
4221    bal_FREE_SERV_NRFI_YTD         := p_FREE_SERV_NRFI_YTD;
4222    bal_FREE_SERV_RFI_CMTD         := p_FREE_SERV_RFI_CMTD;
4223    bal_FREE_SERV_RFI_CYTD         := p_FREE_SERV_RFI_CYTD;
4224    bal_FREE_SERV_RFI_RUN          := p_FREE_SERV_RFI_RUN;
4225    bal_FREE_SERV_RFI_PTD          := p_FREE_SERV_RFI_PTD;
4226    bal_FREE_SERV_RFI_YTD          := p_FREE_SERV_RFI_YTD;
4227    bal_LOW_LOANS_NRFI_CMTD        := p_LOW_LOANS_NRFI_CMTD;
4228    bal_LOW_LOANS_NRFI_CYTD        := p_LOW_LOANS_NRFI_CYTD;
4229    bal_LOW_LOANS_NRFI_RUN         := p_LOW_LOANS_NRFI_RUN;
4230    bal_LOW_LOANS_NRFI_PTD         := p_LOW_LOANS_NRFI_PTD;
4231    bal_LOW_LOANS_NRFI_YTD         := p_LOW_LOANS_NRFI_YTD;
4232    bal_LOW_LOANS_RFI_CMTD         := p_LOW_LOANS_RFI_CMTD;
4233    bal_LOW_LOANS_RFI_CYTD         := p_LOW_LOANS_RFI_CYTD;
4234    bal_LOW_LOANS_RFI_RUN          := p_LOW_LOANS_RFI_RUN;
4235    bal_LOW_LOANS_RFI_PTD          := p_LOW_LOANS_RFI_PTD;
4236    bal_LOW_LOANS_RFI_YTD          := p_LOW_LOANS_RFI_YTD;
4237    bal_MLS_AND_VOUCH_NRFI_CMTD    := p_MLS_AND_VOUCH_NRFI_CMTD;
4238    bal_MLS_AND_VOUCH_NRFI_CYTD    := p_MLS_AND_VOUCH_NRFI_CYTD;
4239    bal_MLS_AND_VOUCH_NRFI_RUN     := p_MLS_AND_VOUCH_NRFI_RUN;
4240    bal_MLS_AND_VOUCH_NRFI_PTD     := p_MLS_AND_VOUCH_NRFI_PTD;
4241    bal_MLS_AND_VOUCH_NRFI_YTD     := p_MLS_AND_VOUCH_NRFI_YTD;
4242    bal_MLS_AND_VOUCH_RFI_CMTD     := p_MLS_AND_VOUCH_RFI_CMTD;
4243    bal_MLS_AND_VOUCH_RFI_CYTD     := p_MLS_AND_VOUCH_RFI_CYTD;
4244    bal_MLS_AND_VOUCH_RFI_RUN      := p_MLS_AND_VOUCH_RFI_RUN;
4245    bal_MLS_AND_VOUCH_RFI_PTD      := p_MLS_AND_VOUCH_RFI_PTD;
4246    bal_MLS_AND_VOUCH_RFI_YTD      := p_MLS_AND_VOUCH_RFI_YTD;
4247    bal_MED_CONTR_CMTD             := p_MED_CONTR_CMTD;
4248    bal_MED_CONTR_CYTD             := p_MED_CONTR_CYTD;
4249    bal_MED_CONTR_RUN              := p_MED_CONTR_RUN;
4250    bal_MED_CONTR_PTD              := p_MED_CONTR_PTD;
4251    bal_MED_CONTR_YTD              := p_MED_CONTR_YTD;
4252    bal_MED_PAID_NRFI_CMTD         := p_MED_PAID_NRFI_CMTD;
4253    bal_MED_PAID_NRFI_CYTD         := p_MED_PAID_NRFI_CYTD;
4254    bal_MED_PAID_NRFI_RUN          := p_MED_PAID_NRFI_RUN;
4255    bal_MED_PAID_NRFI_PTD          := p_MED_PAID_NRFI_PTD;
4256    bal_MED_PAID_NRFI_YTD          := p_MED_PAID_NRFI_YTD;
4257    bal_MED_PAID_RFI_CMTD          := p_MED_PAID_RFI_CMTD;
4258    bal_MED_PAID_RFI_CYTD          := p_MED_PAID_RFI_CYTD;
4259    bal_MED_PAID_RFI_RUN           := p_MED_PAID_RFI_RUN;
4260    bal_MED_PAID_RFI_PTD           := p_MED_PAID_RFI_PTD;
4261    bal_MED_PAID_RFI_YTD           := p_MED_PAID_RFI_YTD;
4262    bal_NET_PAY_RUN                := p_NET_PAY_RUN;
4263    bal_NET_TXB_INC_CMTD           := p_NET_TXB_INC_CMTD;
4264 
4265    RETURN l_Dum;
4266 EXCEPTION
4267    WHEN OTHERS THEN
4268       hr_utility.set_message(801, 'ZaTxBal2_01032000: '||TO_CHAR(SQLCODE));
4269       hr_utility.raise_error;
4270 END ZaTxBal2_01032000;
4271 
4272 -- Function to Initialise Globals - Balance Values
4273 -- Third Section
4274 FUNCTION ZaTxBal3_01032000(
4275 -- Balances
4276     p_OTHER_TXB_ALL_NRFI_CMTD     IN NUMBER DEFAULT 0
4277    ,p_OTHER_TXB_ALL_NRFI_CYTD     IN NUMBER DEFAULT 0
4278    ,p_OTHER_TXB_ALL_NRFI_RUN      IN NUMBER DEFAULT 0
4279    ,p_OTHER_TXB_ALL_NRFI_PTD      IN NUMBER DEFAULT 0
4280    ,p_OTHER_TXB_ALL_NRFI_YTD      IN NUMBER DEFAULT 0
4281    ,p_OTHER_TXB_ALL_RFI_CMTD      IN NUMBER DEFAULT 0
4282    ,p_OTHER_TXB_ALL_RFI_CYTD      IN NUMBER DEFAULT 0
4283    ,p_OTHER_TXB_ALL_RFI_RUN       IN NUMBER DEFAULT 0
4284    ,p_OTHER_TXB_ALL_RFI_PTD       IN NUMBER DEFAULT 0
4285    ,p_OTHER_TXB_ALL_RFI_YTD       IN NUMBER DEFAULT 0
4286    ,p_OVTM_NRFI_CMTD              IN NUMBER DEFAULT 0
4287    ,p_OVTM_NRFI_CYTD              IN NUMBER DEFAULT 0
4288    ,p_OVTM_NRFI_RUN               IN NUMBER DEFAULT 0
4289    ,p_OVTM_NRFI_PTD               IN NUMBER DEFAULT 0
4290    ,p_OVTM_NRFI_YTD               IN NUMBER DEFAULT 0
4291    ,p_OVTM_RFI_CMTD               IN NUMBER DEFAULT 0
4292    ,p_OVTM_RFI_CYTD               IN NUMBER DEFAULT 0
4293    ,p_OVTM_RFI_RUN                IN NUMBER DEFAULT 0
4294    ,p_OVTM_RFI_PTD                IN NUMBER DEFAULT 0
4295    ,p_OVTM_RFI_YTD                IN NUMBER DEFAULT 0
4296    ,p_PAYE_YTD                    IN NUMBER DEFAULT 0
4297    ,p_PYM_DBT_NRFI_CMTD           IN NUMBER DEFAULT 0
4298    ,p_PYM_DBT_NRFI_CYTD           IN NUMBER DEFAULT 0
4299    ,p_PYM_DBT_NRFI_RUN            IN NUMBER DEFAULT 0
4300    ,p_PYM_DBT_NRFI_PTD            IN NUMBER DEFAULT 0
4301    ,p_PYM_DBT_NRFI_YTD            IN NUMBER DEFAULT 0
4302    ,p_PYM_DBT_RFI_CMTD            IN NUMBER DEFAULT 0
4303    ,p_PYM_DBT_RFI_CYTD            IN NUMBER DEFAULT 0
4304    ,p_PYM_DBT_RFI_RUN             IN NUMBER DEFAULT 0
4305    ,p_PYM_DBT_RFI_PTD             IN NUMBER DEFAULT 0
4306    ,p_PYM_DBT_RFI_YTD             IN NUMBER DEFAULT 0
4307    ,p_PO_NRFI_CMTD                IN NUMBER DEFAULT 0
4308    ,p_PO_NRFI_RUN                 IN NUMBER DEFAULT 0
4309    ,p_PO_NRFI_PTD                 IN NUMBER DEFAULT 0
4310    ,p_PO_NRFI_YTD                 IN NUMBER DEFAULT 0
4311    ,p_PO_RFI_CMTD                 IN NUMBER DEFAULT 0
4312    ,p_PO_RFI_RUN                  IN NUMBER DEFAULT 0
4313    ,p_PO_RFI_PTD                  IN NUMBER DEFAULT 0
4314    ,p_PO_RFI_YTD                  IN NUMBER DEFAULT 0
4315    ,p_PRCH_ANU_TXB_NRFI_CMTD      IN NUMBER DEFAULT 0
4316    ,p_PRCH_ANU_TXB_NRFI_RUN       IN NUMBER DEFAULT 0
4317    ,p_PRCH_ANU_TXB_NRFI_PTD       IN NUMBER DEFAULT 0
4318    ,p_PRCH_ANU_TXB_NRFI_YTD       IN NUMBER DEFAULT 0
4319    ,p_PRCH_ANU_TXB_RFI_CMTD       IN NUMBER DEFAULT 0
4320    ,p_PRCH_ANU_TXB_RFI_RUN        IN NUMBER DEFAULT 0
4321    ,p_PRCH_ANU_TXB_RFI_PTD        IN NUMBER DEFAULT 0
4322    ,p_PRCH_ANU_TXB_RFI_YTD        IN NUMBER DEFAULT 0
4323    ,p_RGT_AST_NRFI_CMTD           IN NUMBER DEFAULT 0
4324    ,p_RGT_AST_NRFI_CYTD           IN NUMBER DEFAULT 0
4325    ,p_RGT_AST_NRFI_RUN            IN NUMBER DEFAULT 0
4326    ,p_RGT_AST_NRFI_PTD            IN NUMBER DEFAULT 0
4327    ,p_RGT_AST_NRFI_YTD            IN NUMBER DEFAULT 0
4328    ,p_RGT_AST_RFI_CMTD            IN NUMBER DEFAULT 0
4329    ,p_RGT_AST_RFI_CYTD            IN NUMBER DEFAULT 0
4330    ,p_RGT_AST_RFI_RUN             IN NUMBER DEFAULT 0
4331    ,p_RGT_AST_RFI_PTD             IN NUMBER DEFAULT 0
4332    ,p_RGT_AST_RFI_YTD             IN NUMBER DEFAULT 0
4333    ,p_SITE_YTD                    IN NUMBER DEFAULT 0
4334    ,p_TAX_YTD                     IN NUMBER DEFAULT 0
4335    ,p_TX_ON_AB_PTD                IN NUMBER DEFAULT 0
4336    ,p_TX_ON_AB_YTD                IN NUMBER DEFAULT 0
4337    ,p_TX_ON_AP_RUN                IN NUMBER DEFAULT 0
4338    ,p_TX_ON_AP_PTD                IN NUMBER DEFAULT 0
4339    ,p_TX_ON_AP_YTD                IN NUMBER DEFAULT 0
4340    ,p_TX_ON_BP_PTD                IN NUMBER DEFAULT 0
4341    ,p_TX_ON_BP_YTD                IN NUMBER DEFAULT 0
4342    ,p_TX_ON_TA_PTD                IN NUMBER DEFAULT 0
4343    ,p_TX_ON_TA_YTD                IN NUMBER DEFAULT 0
4344    ,p_TX_ON_FB_PTD                IN NUMBER DEFAULT 0
4345    ,p_TX_ON_FB_YTD                IN NUMBER DEFAULT 0
4346    ,p_TX_ON_NI_PTD                IN NUMBER DEFAULT 0
4347    ,p_TX_ON_NI_YTD                IN NUMBER DEFAULT 0
4348    ,p_TX_ON_PO_PTD                IN NUMBER DEFAULT 0
4349    ,p_TX_ON_PO_YTD                IN NUMBER DEFAULT 0
4350    ,p_TXB_AP_NRFI_CMTD            IN NUMBER DEFAULT 0
4351    ,p_TXB_AP_NRFI_RUN             IN NUMBER DEFAULT 0
4352    ,p_TXB_AP_NRFI_PTD             IN NUMBER DEFAULT 0
4353    ,p_TXB_AP_NRFI_YTD             IN NUMBER DEFAULT 0
4354    ,p_TXB_AP_RFI_CMTD             IN NUMBER DEFAULT 0
4355    ,p_TXB_AP_RFI_RUN              IN NUMBER DEFAULT 0
4356    ,p_TXB_AP_RFI_PTD              IN NUMBER DEFAULT 0
4357    ,p_TXB_AP_RFI_YTD              IN NUMBER DEFAULT 0
4358    ) RETURN NUMBER
4359 AS
4360    l_Dum NUMBER := 1;
4361 
4362 BEGIN
4363 -- Balances
4364    bal_OTHER_TXB_ALL_NRFI_CMTD    := p_OTHER_TXB_ALL_NRFI_CMTD;
4365    bal_OTHER_TXB_ALL_NRFI_CYTD    := p_OTHER_TXB_ALL_NRFI_CYTD;
4366    bal_OTHER_TXB_ALL_NRFI_RUN     := p_OTHER_TXB_ALL_NRFI_RUN;
4367    bal_OTHER_TXB_ALL_NRFI_PTD     := p_OTHER_TXB_ALL_NRFI_PTD;
4368    bal_OTHER_TXB_ALL_NRFI_YTD     := p_OTHER_TXB_ALL_NRFI_YTD;
4369    bal_OTHER_TXB_ALL_RFI_CMTD     := p_OTHER_TXB_ALL_RFI_CMTD;
4370    bal_OTHER_TXB_ALL_RFI_CYTD     := p_OTHER_TXB_ALL_RFI_CYTD;
4371    bal_OTHER_TXB_ALL_RFI_RUN      := p_OTHER_TXB_ALL_RFI_RUN;
4372    bal_OTHER_TXB_ALL_RFI_PTD      := p_OTHER_TXB_ALL_RFI_PTD;
4373    bal_OTHER_TXB_ALL_RFI_YTD      := p_OTHER_TXB_ALL_RFI_YTD;
4374    bal_OVTM_NRFI_CMTD             := p_OVTM_NRFI_CMTD;
4375    bal_OVTM_NRFI_CYTD             := p_OVTM_NRFI_CYTD;
4376    bal_OVTM_NRFI_RUN              := p_OVTM_NRFI_RUN;
4377    bal_OVTM_NRFI_PTD              := p_OVTM_NRFI_PTD;
4378    bal_OVTM_NRFI_YTD              := p_OVTM_NRFI_YTD;
4379    bal_OVTM_RFI_CMTD              := p_OVTM_RFI_CMTD;
4380    bal_OVTM_RFI_CYTD              := p_OVTM_RFI_CYTD;
4381    bal_OVTM_RFI_RUN               := p_OVTM_RFI_RUN;
4382    bal_OVTM_RFI_PTD               := p_OVTM_RFI_PTD;
4383    bal_OVTM_RFI_YTD               := p_OVTM_RFI_YTD;
4384    bal_PAYE_YTD                   := p_PAYE_YTD;
4385    bal_PYM_DBT_NRFI_CMTD          := p_PYM_DBT_NRFI_CMTD;
4386    bal_PYM_DBT_NRFI_CYTD          := p_PYM_DBT_NRFI_CYTD;
4387    bal_PYM_DBT_NRFI_RUN           := p_PYM_DBT_NRFI_RUN;
4388    bal_PYM_DBT_NRFI_PTD           := p_PYM_DBT_NRFI_PTD;
4389    bal_PYM_DBT_NRFI_YTD           := p_PYM_DBT_NRFI_YTD;
4390    bal_PYM_DBT_RFI_CMTD           := p_PYM_DBT_RFI_CMTD;
4391    bal_PYM_DBT_RFI_CYTD           := p_PYM_DBT_RFI_CYTD;
4392    bal_PYM_DBT_RFI_RUN            := p_PYM_DBT_RFI_RUN;
4393    bal_PYM_DBT_RFI_PTD            := p_PYM_DBT_RFI_PTD;
4394    bal_PYM_DBT_RFI_YTD            := p_PYM_DBT_RFI_YTD;
4395    bal_PO_NRFI_CMTD               := p_PO_NRFI_CMTD;
4396    bal_PO_NRFI_RUN                := p_PO_NRFI_RUN;
4397    bal_PO_NRFI_PTD                := p_PO_NRFI_PTD;
4398    bal_PO_NRFI_YTD                := p_PO_NRFI_YTD;
4399    bal_PO_RFI_CMTD                := p_PO_RFI_CMTD;
4400    bal_PO_RFI_RUN                 := p_PO_RFI_RUN;
4401    bal_PO_RFI_PTD                 := p_PO_RFI_PTD;
4402    bal_PO_RFI_YTD                 := p_PO_RFI_YTD;
4403    bal_PRCH_ANU_TXB_NRFI_CMTD     := p_PRCH_ANU_TXB_NRFI_CMTD;
4404    bal_PRCH_ANU_TXB_NRFI_RUN      := p_PRCH_ANU_TXB_NRFI_RUN;
4405    bal_PRCH_ANU_TXB_NRFI_PTD      := p_PRCH_ANU_TXB_NRFI_PTD;
4406    bal_PRCH_ANU_TXB_NRFI_YTD      := p_PRCH_ANU_TXB_NRFI_YTD;
4407    bal_PRCH_ANU_TXB_RFI_CMTD      := p_PRCH_ANU_TXB_RFI_CMTD;
4408    bal_PRCH_ANU_TXB_RFI_RUN       := p_PRCH_ANU_TXB_RFI_RUN;
4409    bal_PRCH_ANU_TXB_RFI_PTD       := p_PRCH_ANU_TXB_RFI_PTD;
4410    bal_PRCH_ANU_TXB_RFI_YTD       := p_PRCH_ANU_TXB_RFI_YTD;
4411    bal_RGT_AST_NRFI_CMTD          := p_RGT_AST_NRFI_CMTD;
4412    bal_RGT_AST_NRFI_CYTD          := p_RGT_AST_NRFI_CYTD;
4413    bal_RGT_AST_NRFI_RUN           := p_RGT_AST_NRFI_RUN;
4414    bal_RGT_AST_NRFI_PTD           := p_RGT_AST_NRFI_PTD;
4415    bal_RGT_AST_NRFI_YTD           := p_RGT_AST_NRFI_YTD;
4416    bal_RGT_AST_RFI_CMTD           := p_RGT_AST_RFI_CMTD;
4417    bal_RGT_AST_RFI_CYTD           := p_RGT_AST_RFI_CYTD;
4418    bal_RGT_AST_RFI_RUN            := p_RGT_AST_RFI_RUN;
4419    bal_RGT_AST_RFI_PTD            := p_RGT_AST_RFI_PTD;
4420    bal_RGT_AST_RFI_YTD            := p_RGT_AST_RFI_YTD;
4421    bal_SITE_YTD                   := p_SITE_YTD;
4422    bal_TAX_YTD                    := p_TAX_YTD;
4423    bal_TX_ON_AB_PTD               := p_TX_ON_AB_PTD;
4424    bal_TX_ON_AB_YTD               := p_TX_ON_AB_YTD;
4425    bal_TX_ON_AP_RUN               := p_TX_ON_AP_RUN;
4426    bal_TX_ON_AP_PTD               := p_TX_ON_AP_PTD;
4427    bal_TX_ON_AP_YTD               := p_TX_ON_AP_YTD;
4428    bal_TX_ON_BP_PTD               := p_TX_ON_BP_PTD;
4429    bal_TX_ON_BP_YTD               := p_TX_ON_BP_YTD;
4430    bal_TX_ON_TA_PTD               := p_TX_ON_TA_PTD;
4431    bal_TX_ON_TA_YTD               := p_TX_ON_TA_YTD;
4432    bal_TX_ON_FB_PTD               := p_TX_ON_FB_PTD;
4433    bal_TX_ON_FB_YTD               := p_TX_ON_FB_YTD;
4434    bal_TX_ON_NI_PTD               := p_TX_ON_NI_PTD;
4435    bal_TX_ON_NI_YTD               := p_TX_ON_NI_YTD;
4436    bal_TX_ON_PO_PTD               := p_TX_ON_PO_PTD;
4437    bal_TX_ON_PO_YTD               := p_TX_ON_PO_YTD;
4438    bal_TXB_AP_NRFI_CMTD           := p_TXB_AP_NRFI_CMTD;
4439    bal_TXB_AP_NRFI_RUN            := p_TXB_AP_NRFI_RUN;
4440    bal_TXB_AP_NRFI_PTD            := p_TXB_AP_NRFI_PTD;
4441    bal_TXB_AP_NRFI_YTD            := p_TXB_AP_NRFI_YTD;
4442    bal_TXB_AP_RFI_CMTD            := p_TXB_AP_RFI_CMTD;
4443    bal_TXB_AP_RFI_RUN             := p_TXB_AP_RFI_RUN;
4444    bal_TXB_AP_RFI_PTD             := p_TXB_AP_RFI_PTD;
4445    bal_TXB_AP_RFI_YTD             := p_TXB_AP_RFI_YTD;
4446 
4447    RETURN l_Dum;
4448 EXCEPTION
4449    WHEN OTHERS THEN
4450       hr_utility.set_message(801, 'ZaTxBal3_01032000: '||TO_CHAR(SQLCODE));
4451       hr_utility.raise_error;
4452 END ZaTxBal3_01032000;
4453 
4454 -- Function to Initialise Globals - Balance Values
4455 -- Fourth Section
4456 FUNCTION ZaTxBal4_01032000(
4457 -- Balances
4458     p_TXB_INC_NRFI_CMTD           IN NUMBER DEFAULT 0
4459    ,p_TXB_INC_NRFI_CYTD           IN NUMBER DEFAULT 0
4460    ,p_TXB_INC_NRFI_RUN            IN NUMBER DEFAULT 0
4461    ,p_TXB_INC_NRFI_PTD            IN NUMBER DEFAULT 0
4462    ,p_TXB_INC_NRFI_YTD            IN NUMBER DEFAULT 0
4463    ,p_TXB_INC_RFI_CMTD            IN NUMBER DEFAULT 0
4464    ,p_TXB_INC_RFI_CYTD            IN NUMBER DEFAULT 0
4465    ,p_TXB_INC_RFI_RUN             IN NUMBER DEFAULT 0
4466    ,p_TXB_INC_RFI_PTD             IN NUMBER DEFAULT 0
4467    ,p_TXB_INC_RFI_YTD             IN NUMBER DEFAULT 0
4468    ,p_TXB_PEN_NRFI_CMTD           IN NUMBER DEFAULT 0
4469    ,p_TXB_PEN_NRFI_CYTD           IN NUMBER DEFAULT 0
4470    ,p_TXB_PEN_NRFI_RUN            IN NUMBER DEFAULT 0
4471    ,p_TXB_PEN_NRFI_PTD            IN NUMBER DEFAULT 0
4472    ,p_TXB_PEN_NRFI_YTD            IN NUMBER DEFAULT 0
4473    ,p_TXB_PEN_RFI_CMTD            IN NUMBER DEFAULT 0
4474    ,p_TXB_PEN_RFI_CYTD            IN NUMBER DEFAULT 0
4475    ,p_TXB_PEN_RFI_RUN             IN NUMBER DEFAULT 0
4476    ,p_TXB_PEN_RFI_PTD             IN NUMBER DEFAULT 0
4477    ,p_TXB_PEN_RFI_YTD             IN NUMBER DEFAULT 0
4478    ,p_TEL_ALL_NRFI_CMTD           IN NUMBER DEFAULT 0
4479    ,p_TEL_ALL_NRFI_CYTD           IN NUMBER DEFAULT 0
4480    ,p_TEL_ALL_NRFI_RUN            IN NUMBER DEFAULT 0
4481    ,p_TEL_ALL_NRFI_PTD            IN NUMBER DEFAULT 0
4482    ,p_TEL_ALL_NRFI_YTD            IN NUMBER DEFAULT 0
4483    ,p_TEL_ALL_RFI_CMTD            IN NUMBER DEFAULT 0
4484    ,p_TEL_ALL_RFI_CYTD            IN NUMBER DEFAULT 0
4485    ,p_TEL_ALL_RFI_RUN             IN NUMBER DEFAULT 0
4486    ,p_TEL_ALL_RFI_PTD             IN NUMBER DEFAULT 0
4487    ,p_TEL_ALL_RFI_YTD             IN NUMBER DEFAULT 0
4488    ,p_TOOL_ALL_NRFI_CMTD          IN NUMBER DEFAULT 0
4489    ,p_TOOL_ALL_NRFI_CYTD          IN NUMBER DEFAULT 0
4490    ,p_TOOL_ALL_NRFI_RUN           IN NUMBER DEFAULT 0
4491    ,p_TOOL_ALL_NRFI_PTD           IN NUMBER DEFAULT 0
4492    ,p_TOOL_ALL_NRFI_YTD           IN NUMBER DEFAULT 0
4493    ,p_TOOL_ALL_RFI_CMTD           IN NUMBER DEFAULT 0
4494    ,p_TOOL_ALL_RFI_CYTD           IN NUMBER DEFAULT 0
4495    ,p_TOOL_ALL_RFI_RUN            IN NUMBER DEFAULT 0
4496    ,p_TOOL_ALL_RFI_PTD            IN NUMBER DEFAULT 0
4497    ,p_TOOL_ALL_RFI_YTD            IN NUMBER DEFAULT 0
4498    ,p_TOT_INC_PTD                 IN NUMBER DEFAULT 0
4499    ,p_TOT_INC_YTD                 IN NUMBER DEFAULT 0
4500    ,p_TOT_NRFI_AN_INC_CMTD        IN NUMBER DEFAULT 0
4501    ,p_TOT_NRFI_AN_INC_CYTD        IN NUMBER DEFAULT 0
4502    ,p_TOT_NRFI_AN_INC_RUN         IN NUMBER DEFAULT 0
4503    ,p_TOT_NRFI_AN_INC_PTD         IN NUMBER DEFAULT 0
4504    ,p_TOT_NRFI_AN_INC_YTD         IN NUMBER DEFAULT 0
4505    ,p_TOT_NRFI_INC_CMTD           IN NUMBER DEFAULT 0
4506    ,p_TOT_NRFI_INC_CYTD           IN NUMBER DEFAULT 0
4507    ,p_TOT_NRFI_INC_RUN            IN NUMBER DEFAULT 0
4508    ,p_TOT_NRFI_INC_PTD            IN NUMBER DEFAULT 0
4509    ,p_TOT_NRFI_INC_YTD            IN NUMBER DEFAULT 0
4510    ,p_TOT_RFI_AN_INC_CMTD         IN NUMBER DEFAULT 0
4511    ,p_TOT_RFI_AN_INC_CYTD         IN NUMBER DEFAULT 0
4512    ,p_TOT_RFI_AN_INC_RUN          IN NUMBER DEFAULT 0
4513    ,p_TOT_RFI_AN_INC_PTD          IN NUMBER DEFAULT 0
4514    ,p_TOT_RFI_AN_INC_YTD          IN NUMBER DEFAULT 0
4515    ,p_TOT_RFI_INC_CMTD            IN NUMBER DEFAULT 0
4516    ,p_TOT_RFI_INC_CYTD            IN NUMBER DEFAULT 0
4517    ,p_TOT_RFI_INC_RUN             IN NUMBER DEFAULT 0
4518    ,p_TOT_RFI_INC_PTD             IN NUMBER DEFAULT 0
4519    ,p_TOT_RFI_INC_YTD             IN NUMBER DEFAULT 0
4520    ,p_TOT_SEA_WRK_DYS_WRK_YTD     IN NUMBER DEFAULT 0
4521    ,p_TOT_TXB_INC_ITD             IN NUMBER DEFAULT 0
4522    ,p_TA_NRFI_CMTD                IN NUMBER DEFAULT 0
4523    ,p_TA_NRFI_CYTD                IN NUMBER DEFAULT 0
4524    ,p_TA_NRFI_PTD                 IN NUMBER DEFAULT 0
4525    ,p_TA_NRFI_YTD                 IN NUMBER DEFAULT 0
4526    ,p_TA_RFI_CMTD                 IN NUMBER DEFAULT 0
4527    ,p_TA_RFI_CYTD                 IN NUMBER DEFAULT 0
4528    ,p_TA_RFI_PTD                  IN NUMBER DEFAULT 0
4529    ,p_TA_RFI_YTD                  IN NUMBER DEFAULT 0
4530    ,p_USE_VEH_NRFI_CMTD           IN NUMBER DEFAULT 0
4531    ,p_USE_VEH_NRFI_CYTD           IN NUMBER DEFAULT 0
4532    ,p_USE_VEH_NRFI_RUN            IN NUMBER DEFAULT 0
4533    ,p_USE_VEH_NRFI_PTD            IN NUMBER DEFAULT 0
4534    ,p_USE_VEH_NRFI_YTD            IN NUMBER DEFAULT 0
4535    ,p_USE_VEH_RFI_CMTD            IN NUMBER DEFAULT 0
4536    ,p_USE_VEH_RFI_CYTD            IN NUMBER DEFAULT 0
4537    ,p_USE_VEH_RFI_RUN             IN NUMBER DEFAULT 0
4538    ,p_USE_VEH_RFI_PTD             IN NUMBER DEFAULT 0
4539    ,p_USE_VEH_RFI_YTD             IN NUMBER DEFAULT 0
4540    ) RETURN NUMBER
4541 AS
4542    l_Dum NUMBER := 1;
4543 
4544 BEGIN
4545 -- Balances
4546    bal_TXB_INC_NRFI_CMTD          := p_TXB_INC_NRFI_CMTD;
4547    bal_TXB_INC_NRFI_CYTD          := p_TXB_INC_NRFI_CYTD;
4548    bal_TXB_INC_NRFI_RUN           := p_TXB_INC_NRFI_RUN;
4549    bal_TXB_INC_NRFI_PTD           := p_TXB_INC_NRFI_PTD;
4550    bal_TXB_INC_NRFI_YTD           := p_TXB_INC_NRFI_YTD;
4551    bal_TXB_INC_RFI_CMTD           := p_TXB_INC_RFI_CMTD;
4552    bal_TXB_INC_RFI_CYTD           := p_TXB_INC_RFI_CYTD;
4553    bal_TXB_INC_RFI_RUN            := p_TXB_INC_RFI_RUN;
4554    bal_TXB_INC_RFI_PTD            := p_TXB_INC_RFI_PTD;
4555    bal_TXB_INC_RFI_YTD            := p_TXB_INC_RFI_YTD;
4556    bal_TXB_PEN_NRFI_CMTD          := p_TXB_PEN_NRFI_CMTD;
4557    bal_TXB_PEN_NRFI_CYTD          := p_TXB_PEN_NRFI_CYTD;
4558    bal_TXB_PEN_NRFI_RUN           := p_TXB_PEN_NRFI_RUN;
4559    bal_TXB_PEN_NRFI_PTD           := p_TXB_PEN_NRFI_PTD;
4560    bal_TXB_PEN_NRFI_YTD           := p_TXB_PEN_NRFI_YTD;
4561    bal_TXB_PEN_RFI_CMTD           := p_TXB_PEN_RFI_CMTD;
4562    bal_TXB_PEN_RFI_CYTD           := p_TXB_PEN_RFI_CYTD;
4563    bal_TXB_PEN_RFI_RUN            := p_TXB_PEN_RFI_RUN;
4564    bal_TXB_PEN_RFI_PTD            := p_TXB_PEN_RFI_PTD;
4565    bal_TXB_PEN_RFI_YTD            := p_TXB_PEN_RFI_YTD;
4566    bal_TEL_ALL_NRFI_CMTD          := p_TEL_ALL_NRFI_CMTD;
4567    bal_TEL_ALL_NRFI_CYTD          := p_TEL_ALL_NRFI_CYTD;
4568    bal_TEL_ALL_NRFI_RUN           := p_TEL_ALL_NRFI_RUN;
4569    bal_TEL_ALL_NRFI_PTD           := p_TEL_ALL_NRFI_PTD;
4570    bal_TEL_ALL_NRFI_YTD           := p_TEL_ALL_NRFI_YTD;
4571    bal_TEL_ALL_RFI_CMTD           := p_TEL_ALL_RFI_CMTD;
4572    bal_TEL_ALL_RFI_CYTD           := p_TEL_ALL_RFI_CYTD;
4573    bal_TEL_ALL_RFI_RUN            := p_TEL_ALL_RFI_RUN;
4574    bal_TEL_ALL_RFI_PTD            := p_TEL_ALL_RFI_PTD;
4575    bal_TEL_ALL_RFI_YTD            := p_TEL_ALL_RFI_YTD;
4576    bal_TOOL_ALL_NRFI_CMTD         := p_TOOL_ALL_NRFI_CMTD;
4577    bal_TOOL_ALL_NRFI_CYTD         := p_TOOL_ALL_NRFI_CYTD;
4578    bal_TOOL_ALL_NRFI_RUN          := p_TOOL_ALL_NRFI_RUN;
4579    bal_TOOL_ALL_NRFI_PTD          := p_TOOL_ALL_NRFI_PTD;
4580    bal_TOOL_ALL_NRFI_YTD          := p_TOOL_ALL_NRFI_YTD;
4581    bal_TOOL_ALL_RFI_CMTD          := p_TOOL_ALL_RFI_CMTD;
4582    bal_TOOL_ALL_RFI_CYTD          := p_TOOL_ALL_RFI_CYTD;
4583    bal_TOOL_ALL_RFI_RUN           := p_TOOL_ALL_RFI_RUN;
4584    bal_TOOL_ALL_RFI_PTD           := p_TOOL_ALL_RFI_PTD;
4585    bal_TOOL_ALL_RFI_YTD           := p_TOOL_ALL_RFI_YTD;
4586    bal_TOT_INC_PTD                := p_TOT_INC_PTD;
4587    bal_TOT_INC_YTD                := p_TOT_INC_YTD;
4588    bal_TOT_NRFI_AN_INC_CMTD       := p_TOT_NRFI_AN_INC_CMTD;
4589    bal_TOT_NRFI_AN_INC_CYTD       := p_TOT_NRFI_AN_INC_CYTD;
4590    bal_TOT_NRFI_AN_INC_RUN        := p_TOT_NRFI_AN_INC_RUN;
4591    bal_TOT_NRFI_AN_INC_PTD        := p_TOT_NRFI_AN_INC_PTD;
4592    bal_TOT_NRFI_AN_INC_YTD        := p_TOT_NRFI_AN_INC_YTD;
4593    bal_TOT_NRFI_INC_CMTD          := p_TOT_NRFI_INC_CMTD;
4594    bal_TOT_NRFI_INC_CYTD          := p_TOT_NRFI_INC_CYTD;
4595    bal_TOT_NRFI_INC_RUN           := p_TOT_NRFI_INC_RUN;
4596    bal_TOT_NRFI_INC_PTD           := p_TOT_NRFI_INC_PTD;
4597    bal_TOT_NRFI_INC_YTD           := p_TOT_NRFI_INC_YTD;
4598    bal_TOT_RFI_AN_INC_CMTD        := p_TOT_RFI_AN_INC_CMTD;
4599    bal_TOT_RFI_AN_INC_CYTD        := p_TOT_RFI_AN_INC_CYTD;
4600    bal_TOT_RFI_AN_INC_RUN         := p_TOT_RFI_AN_INC_RUN;
4601    bal_TOT_RFI_AN_INC_PTD         := p_TOT_RFI_AN_INC_PTD;
4602    bal_TOT_RFI_AN_INC_YTD         := p_TOT_RFI_AN_INC_YTD;
4603    bal_TOT_RFI_INC_CMTD           := p_TOT_RFI_INC_CMTD;
4604    bal_TOT_RFI_INC_CYTD           := p_TOT_RFI_INC_CYTD;
4605    bal_TOT_RFI_INC_RUN            := p_TOT_RFI_INC_RUN;
4606    bal_TOT_RFI_INC_PTD            := p_TOT_RFI_INC_PTD;
4607    bal_TOT_RFI_INC_YTD            := p_TOT_RFI_INC_YTD;
4608    bal_TOT_SEA_WRK_DYS_WRK_YTD    := p_TOT_SEA_WRK_DYS_WRK_YTD;
4609    bal_TOT_TXB_INC_ITD            := p_TOT_TXB_INC_ITD;
4610    bal_TA_NRFI_CMTD               := p_TA_NRFI_CMTD;
4611    bal_TA_NRFI_CYTD               := p_TA_NRFI_CYTD;
4612    bal_TA_NRFI_PTD                := p_TA_NRFI_PTD;
4613    bal_TA_NRFI_YTD                := p_TA_NRFI_YTD;
4614    bal_TA_RFI_CMTD                := p_TA_RFI_CMTD;
4615    bal_TA_RFI_CYTD                := p_TA_RFI_CYTD;
4616    bal_TA_RFI_PTD                 := p_TA_RFI_PTD;
4617    bal_TA_RFI_YTD                 := p_TA_RFI_YTD;
4618    bal_USE_VEH_NRFI_CMTD          := p_USE_VEH_NRFI_CMTD;
4619    bal_USE_VEH_NRFI_CYTD          := p_USE_VEH_NRFI_CYTD;
4620    bal_USE_VEH_NRFI_RUN           := p_USE_VEH_NRFI_RUN;
4621    bal_USE_VEH_NRFI_PTD           := p_USE_VEH_NRFI_PTD;
4622    bal_USE_VEH_NRFI_YTD           := p_USE_VEH_NRFI_YTD;
4623    bal_USE_VEH_RFI_CMTD           := p_USE_VEH_RFI_CMTD;
4624    bal_USE_VEH_RFI_CYTD           := p_USE_VEH_RFI_CYTD;
4625    bal_USE_VEH_RFI_RUN            := p_USE_VEH_RFI_RUN;
4626    bal_USE_VEH_RFI_PTD            := p_USE_VEH_RFI_PTD;
4627    bal_USE_VEH_RFI_YTD            := p_USE_VEH_RFI_YTD;
4628 
4629    RETURN l_Dum;
4630 EXCEPTION
4631    WHEN OTHERS THEN
4632       hr_utility.set_message(801, 'ZaTxBal4_01032000: '||TO_CHAR(SQLCODE));
4633       hr_utility.raise_error;
4634 END ZaTxBal4_01032000;
4635 
4636 -- Main Tax Function
4637 -- Called from Fast Formula
4638 FUNCTION ZaTx_01032000(
4639 /*  PARAMETERS */
4640 -- Contexts
4641     ASSIGNMENT_ACTION_ID IN NUMBER
4642    ,ASSIGNMENT_ID IN NUMBER
4643    ,PAYROLL_ACTION_ID IN NUMBER
4644    ,PAYROLL_ID IN NUMBER
4645    -- Out Parameters
4646    , p_LibWrn OUT NOCOPY VARCHAR2
4647    , p_LibFpNI OUT NOCOPY NUMBER
4648    , p_LibFpFB OUT NOCOPY NUMBER
4649    , p_LibFpTA OUT NOCOPY NUMBER
4650    , p_LibFpBP OUT NOCOPY NUMBER
4651    , p_LibFpAB OUT NOCOPY NUMBER
4652    , p_LibFpAP OUT NOCOPY NUMBER
4653    , p_LibFpPO OUT NOCOPY NUMBER
4654    , p_PayValue OUT NOCOPY NUMBER
4655    , p_PayeVal OUT NOCOPY NUMBER
4656    , p_SiteVal OUT NOCOPY NUMBER
4657    , p_It3Ind  OUT NOCOPY NUMBER
4658    , p_PfUpdFig OUT NOCOPY NUMBER
4659    , p_RaUpdFig OUT NOCOPY NUMBER
4660    , p_OUpdFig OUT NOCOPY NUMBER
4661    , p_NtiUpdFig OUT NOCOPY NUMBER
4662    , p_OvrWrn OUT NOCOPY VARCHAR2
4663    )RETURN NUMBER
4664 AS
4665 -- Variables
4666 --
4667    l_Dum NUMBER := 1;
4668 
4669 
4670 BEGIN
4671 -- Set hr_utility globals if debugging
4672 --
4673 --   py_za_tx_utl_01032000.g_HrTraceEnabled  := TRUE;
4674 --   py_za_tx_utl_01032000.g_HrTracePipeName := 'ZATAX';
4675 
4676 -- Call hr_utility start procedure
4677    py_za_tx_utl_01032000.StartHrTrace;
4678 
4679 -- Setup Trace Header Info
4680    py_za_tx_utl_01032000.WriteHrTrace(' ');
4681    py_za_tx_utl_01032000.WriteHrTrace(' ');
4682    py_za_tx_utl_01032000.WriteHrTrace(' ');
4683    py_za_tx_utl_01032000.WriteHrTrace('------------------------------------------------------------');
4684    py_za_tx_utl_01032000.WriteHrTrace('-- Start of Trace File');
4685    py_za_tx_utl_01032000.WriteHrTrace('------------------------------------------------------------');
4686    py_za_tx_utl_01032000.WriteHrTrace(' ');
4687    py_za_tx_utl_01032000.WriteHrTrace('Processing Assignment ID :'||to_char(ASSIGNMENT_ID));
4688    py_za_tx_utl_01032000.WriteHrTrace('Assignment Action ID     :'||to_char(ASSIGNMENT_ACTION_ID));
4689    py_za_tx_utl_01032000.WriteHrTrace('Payroll Action ID        :'||to_char(PAYROLL_ACTION_ID));
4690    py_za_tx_utl_01032000.WriteHrTrace('Payroll ID               :'||to_char(PAYROLL_ID));
4691    py_za_tx_utl_01032000.WriteHrTrace(' ');
4692    py_za_tx_utl_01032000.WriteHrTrace('------------------------------------------------------------');
4693    py_za_tx_utl_01032000.WriteHrTrace(' ');
4694 
4695    hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',1);
4696 
4697 -- Initialise Package Globals
4698 -- Contexts
4699    con_ASG_ACT_ID := ASSIGNMENT_ACTION_ID;
4700    con_ASG_ID     := ASSIGNMENT_ID;
4701    con_PRL_ACT_ID := PAYROLL_ACTION_ID;
4702    con_PRL_ID     := PAYROLL_ID;
4703 
4704    hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',2);
4705 
4706 -- Date Effective Tax Status Validation
4707 --
4708    IF dbi_TX_STA IN ('J','K','L') THEN
4709       IF xpt_Msg = 'No Error' THEN
4710          xpt_Msg := 'PY_ZA_TX_STATE_AUG';
4711       END IF;
4712       RAISE xpt_E;
4713    END IF;
4714 
4715 -- Tax Override Validation
4716 --
4717    /*
4718    V = Amount
4719    P = Percentage
4720    S = Force Site Calculation
4721    */
4722 
4723 --  Tax Status Validation
4724 --
4725    /*
4726    A = Normal
4727    B = Provisional
4728    C = Directive Amount
4729    D = Directive Percentage
4730    E = Close Corporation
4731    F = Temporary Worker/Student
4732    G = Seasonal Worker
4733    H = Zero Tax
4734    J = Personal Service Company
4735    K = Personal Service Trust
4736    L = Labour Broker
4737    */
4738    hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',3);
4739 
4740 -- C = Directive Amount
4741 --
4742    IF dbi_TX_STA = 'C' THEN
4743       IF trc_OvrTxCalc AND (trc_OvrTyp = 'S' OR trc_OvrTyp = 'P') THEN
4744          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',4);
4745          IF xpt_Msg = 'No Error' THEN
4746             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',5);
4747             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_C';
4748          END IF;
4749          RAISE xpt_E;
4750          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',6);
4751       ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4752          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',7);
4753          trc_CalTyp := 'OvrCalc';
4754          trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4755       -- Check Directive Number First
4756       ELSIF dbi_TX_DIR_NUM = 'NULL' THEN
4757          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',8);
4758          IF xpt_Msg = 'No Error' THEN
4759             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',9);
4760             xpt_Msg := 'PY_ZA_TX_DIR_NUM';
4761          END IF;
4762          RAISE xpt_E;
4763       -- Check that directive value is filled in
4764       ELSIF dbi_TX_DIR_VAL = -1 THEN
4765          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',10);
4766          IF xpt_Msg = 'No Error' THEN
4767             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',11);
4768             xpt_Msg := 'PY_ZA_TX_DIR_MONT';
4769          END IF;
4770          RAISE xpt_E;
4771       ELSE
4772          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',12);
4773          trc_CalTyp := 'NoCalc';
4774          -- Liability = entered value
4775          trc_LibFpNI := dbi_TX_DIR_VAL;
4776          -- Standard NetPay Validation
4777          py_za_tx_utl_01032000.NpVal;
4778       END IF;
4779 -- D = Directive Percentage
4780 --
4781    ELSIF dbi_TX_STA = 'D' THEN
4782       IF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
4783          IF xpt_Msg = 'No Error' THEN
4784             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',13);
4785             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_DEF';
4786          END IF;
4787          RAISE xpt_E;
4788          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',14);
4789       ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4790          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',15);
4791          trc_CalTyp := 'OvrCalc';
4792          trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4793       ELSE
4794          IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
4795             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',16);
4796             trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
4797             -- Percentage taken into account in py_za_tx_utl_01032000.TaxLiability
4798          END IF;
4799       -- Check Directive Number First
4800          IF dbi_TX_DIR_NUM = 'NULL' THEN
4801             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',17);
4802             IF xpt_Msg = 'No Error' THEN
4803                hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',18);
4804                xpt_Msg := 'PY_ZA_TX_DIR_NUM';
4805             END IF;
4806             RAISE xpt_E;
4807          -- Check that directive value is filled in
4808          ELSIF dbi_TX_DIR_VAL = -1 THEN
4809             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',19);
4810             IF xpt_Msg = 'No Error' THEN
4811                hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',20);
4812                xpt_Msg := 'PY_ZA_TX_DIR_PERC';
4813             END IF;
4814             RAISE xpt_E;
4815          ELSE
4816             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',21);
4817             DirCalc;
4818          END IF;
4819       END IF;
4820 -- E = Close Corporation
4821 -- F = Temporary Worker/Student
4822 -- J = Personal Service Company
4823 -- L = Labour Broker
4824 --
4825    ELSIF dbi_TX_STA IN ('E','F','J','L') THEN
4826       IF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
4827          IF xpt_Msg = 'No Error' THEN
4828             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',22);
4829             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_DEF';
4830          END IF;
4831          RAISE xpt_E;
4832          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',23);
4833       ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4834          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',24);
4835          trc_CalTyp := 'OvrCalc';
4836          trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4837       ELSE
4838          IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
4839             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',25);
4840             trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
4841             -- Percentage taken into account in py_za_tx_utl_01032000.TaxLiability
4842          END IF;
4843          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',26);
4844       -- Simply Execute the Directive Calculation
4845          DirCalc;
4846       END IF;
4847 -- G = Seasonal Worker
4848 --
4849    ELSIF dbi_TX_STA = 'G' THEN
4850       IF trc_OvrTxCalc AND (trc_OvrTyp = 'S' OR trc_OvrTyp = 'P') THEN
4851          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',27);
4852          IF xpt_Msg = 'No Error' THEN
4853             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',28);
4854             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_G';
4855          END IF;
4856          RAISE xpt_E;
4857          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',29);
4858    -- Check that seasonal worker days worked is filled in
4859       ELSIF dbi_SEA_WRK_DYS_WRK = 0 THEN
4860          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',30);
4861          IF xpt_Msg = 'No Error' THEN
4862             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',31);
4863             xpt_Msg := 'PY_ZA_TX_SEA_WRK_DYS';
4864          END IF;
4865          RAISE xpt_E;
4866       ELSE
4867          IF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4868             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',32);
4869             trc_CalTyp := 'OvrCalc';
4870             trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4871             py_za_tx_utl_01032000.SetRebates;
4872          ELSE
4873             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',33);
4874             SeaCalc;
4875          END IF;
4876       END IF;
4877 -- A = Normal
4878 -- B = Provisional
4879 -- K = Personal Service Trust
4880 --
4881    ELSIF dbi_TX_STA IN ('A','B','K') THEN
4882       IF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4883          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',34);
4884          trc_CalTyp := 'OvrCalc';
4885          trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4886          py_za_tx_utl_01032000.SetRebates;
4887       ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
4888          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',35);
4889          trc_CalTyp := 'OvrCalc';
4890          trc_OvrWrn := 'WARNING: Tax Override - Forced Site Calculation';
4891          -- Force the Site Calculation
4892          SitCalc;
4893          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',36);
4894       ELSE
4895          IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
4896             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',37);
4897             trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
4898             -- Percentage taken into account in py_za_tx_utl_01032000.TaxLiability
4899          END IF;
4900 
4901          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',38);
4902          IF py_za_tx_utl_01032000.LatePayPeriod THEN
4903             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',39);
4904             LteCalc;
4905          -- Is this a SITE Period?
4906          ELSIF py_za_tx_utl_01032000.EmpTermPrePeriod THEN
4907             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',40);
4908             SitCalc;
4909          ELSIF py_za_tx_utl_01032000.LstPeriod OR py_za_tx_utl_01032000.EmpTermInPeriod THEN
4910             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',41);
4911             IF py_za_tx_utl_01032000.PreErnPeriod THEN
4912                hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',42);
4913                YtdCalc;
4914             ELSE
4915                hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',43);
4916                SitCalc;
4917             END IF;
4918          ElSE
4919             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',44);
4920          -- The employee has NOT been terminated!
4921             IF py_za_tx_utl_01032000.PreErnPeriod THEN
4922                hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',45);
4923                YtdCalc;
4924             ELSIF py_za_tx_utl_01032000.RetroInPrd THEN
4925                hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',46);
4926                SitCalc;
4927             ELSE
4928                hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',47);
4929                NorCalc;
4930             END IF;
4931          END IF;
4932       END IF;
4933 -- H = Zero Tax
4934 --
4935    ELSIF dbi_TX_STA = 'H' THEN
4936       IF trc_OvrTxCalc THEN
4937          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',48);
4938          IF xpt_Msg = 'No Error' THEN
4939             hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',49);
4940             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_H';
4941          END IF;
4942          RAISE xpt_E;
4943       ELSE
4944          hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',50);
4945          trc_LibFpNI := 0;
4946          trc_LibFpFB := 0;
4947          trc_LibFpTA := 0;
4948          trc_LibFpBP := 0;
4949          trc_LibFpAB := 0;
4950          trc_LibFpAP := 0;
4951          trc_LibFpPO := 0;
4952       END IF;
4953    ELSE
4954       hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',51);
4955       hr_utility.set_message(801, 'ERROR: Invalid Tax Status');
4956       hr_utility.raise_error;
4957    END IF;
4958 
4959    hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',52);
4960 
4961 -- Post Calculation Steps
4962 --
4963    py_za_tx_utl_01032000.SitPaySplit;
4964 
4965    hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',53);
4966 
4967 -- Execute the Arrear Processing
4968 --
4969    IF py_za_tx_utl_01032000.SitePeriod THEN
4970       hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',54);
4971       py_za_tx_utl_01032000.ArrearExcess;
4972    END IF;
4973 
4974    hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',55);
4975 
4976 -- Calculate Net Taxable Income
4977 --
4978    NetTxbIncCalc;
4979 
4980    hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',56);
4981 
4982 -- Setup the Out Parameters
4983 --
4984    -- Messages
4985    p_LibWrn := trc_LibWrn;
4986 
4987    -- Pay Values
4988    trc_PayValue :=
4989       ( trc_LibFpNI
4990       + trc_LibFpFB
4991       + trc_LibFpTA
4992       + trc_LibFpBP
4993       + trc_LibFpAB
4994       + trc_LibFpAP
4995       + trc_LibFpPO
4996       );
4997 
4998    hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',57);
4999 
5000    -- Tax On's
5001    p_LibFpNI  := trc_LibFpNI;
5002    p_LibFpFB  := trc_LibFpFB;
5003    p_LibFpTA  := trc_LibFpTA;
5004    p_LibFpBP  := trc_LibFpBP;
5005    p_LibFpAB  := trc_LibFpAB;
5006    p_LibFpAP  := trc_LibFpAP;
5007    p_LibFpPO  := trc_LibFpPO;
5008    p_PayValue := trc_PayValue;
5009 
5010    hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',58);
5011 
5012    -- Indicators, Splits and Updates
5013    --
5014    -- Override Indicator
5015    IF trc_OvrTxCalc THEN
5016       hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',59);
5017       -- Set Override Tax Value
5018       p_OvrWrn   := trc_OvrWrn;
5019    END IF;
5020 
5021    p_PayeVal   := trc_PayeVal;
5022    p_SiteVal   := trc_SiteVal;
5023    p_It3Ind    := trc_It3Ind;
5024    p_PfUpdFig  := trc_PfUpdFig;
5025    p_RaUpdFig  := trc_RaUpdFig;
5026    p_OUpdFig   := trc_OUpdFig;
5027    p_NtiUpdFig := trc_NtiUpdFig;
5028 
5029    hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',60);
5030 
5031 -- Execute The Tax Trace
5032 --
5033    py_za_tx_utl_01032000.Trace;
5034 
5035    hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',61);
5036 
5037 -- Clear Globals
5038 --
5039    py_za_tx_utl_01032000.ClearGlobals;
5040 
5041    hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',62);
5042 
5043 -- End off Trace File
5044    py_za_tx_utl_01032000.WriteHrTrace('------------------------------------------------------------');
5045    py_za_tx_utl_01032000.WriteHrTrace('-- End of Trace File ');
5046    py_za_tx_utl_01032000.WriteHrTrace(' ');
5047 
5048 -- Call hr_utility stop procedure
5049    py_za_tx_utl_01032000.StopHrTrace;
5050 
5051   --dbms_debug.debug_off;
5052 
5053    RETURN l_Dum;
5054 
5055 EXCEPTION
5056    WHEN xpt_E  THEN
5057       hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',63);
5058       py_za_tx_utl_01032000.WriteHrTrace('xpt_Msg: '||xpt_Msg);
5059       py_za_tx_utl_01032000.StopHrTrace;
5060       hr_utility.set_message(801, xpt_Msg);
5061       py_za_tx_utl_01032000.ClearGlobals;
5062       hr_utility.raise_error;
5063    WHEN OTHERS THEN
5064       hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',64);
5065       py_za_tx_utl_01032000.WriteHrTrace('Sql error code: '||TO_CHAR(SQLCODE));
5066       py_za_tx_utl_01032000.WriteHrTrace('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
5067       py_za_tx_utl_01032000.StopHrTrace;
5068       hr_utility.set_message(801, 'ZaTx_01032000: '||TO_CHAR(SQLCODE));
5069       py_za_tx_utl_01032000.ClearGlobals;
5070       hr_utility.raise_error;
5071 END ZaTx_01032000;
5072 
5073 END py_za_tx_01032000;
5074