DBA Data[Home] [Help]

PACKAGE BODY: APPS.PY_ZA_TX_01032013

Source


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