DBA Data[Home] [Help]

PACKAGE BODY: APPS.PY_ZA_TX_01032012

Source


1 PACKAGE BODY PY_ZA_TX_01032012 AS
2 /* $Header: pyzat013.pkb 120.35.12020000.6 2013/01/31 10:50:41 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_01032012.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_01032012
19       ZaTxGlb_01032012
20       ZaTxDbi_01032012
21       ZaTxBal1_01032012
22       ZaTxBal2_01032012
23       ZaTxBal3_01032012
24       ZaTx_01032012
25 
26    PRIVATE FUNCTIONS
27       <none>
28 
29 
30    PRIVATE PROCEDURES
31       WrtHrTrc
32          Wrapper procedure for py_za_tx_utl_01032012.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_01032012
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    ABDASH        19/10/2012  115.45     14376752 SDL Enh
114    ABDASH        19/10/2012  115.46     14376752 SDL Enh
115    ABDASH        19/10/2012  115.47     14376752 SDL Enh
116    ABDASH        30/01/2012  115.48     14536544 Performance Issue with Payrun fixed.
117 */
118 
119 -------------------------------------------------------------------------------
120 --                               PACKAGE BODY                                --
121 -------------------------------------------------------------------------------
122 
123 FUNCTION get_def_bal_id (p_bal_name   varchar2,
124                          p_dim_name   varchar2) return number is
125   cursor c_get_def_bal_id is
126  SELECT pdb.defined_balance_id
127    FROM pay_balance_types pbt
128       , pay_balance_dimensions pbd
129       , pay_defined_balances pdb
130   WHERE pbt.balance_name = p_bal_name
131     AND pbd.dimension_name = p_dim_name
132     AND pdb.balance_type_id = pbt.balance_type_id
133     AND pdb.balance_dimension_id = pbd.balance_dimension_id
134     AND pbd.legislation_code =  'ZA'
135     AND pbt.legislation_code =  'ZA';
136 
137    l_def_bal_id number;
138 begin
139    open c_get_def_bal_id;
140    fetch c_get_def_bal_id into l_def_bal_id ;
141    close c_get_def_bal_id ;
142 
143    return l_def_bal_id;
144 END get_def_bal_id;
145 
146 -------------------------------------------------------------------------------
147 -- WrtHrTrc
148 -- Wrapper for py_za_tx_utl_01032012.WriteHrTrace
149 -------------------------------------------------------------------------------
150 PROCEDURE WrtHrTrc(
151    p_Buf IN VARCHAR2
152    )
153 AS
154 
155 BEGIN
156 
157    py_za_tx_utl_01032012.WriteHrTrace(p_Buf);
158 END WrtHrTrc;
159 
160 
161 -------------------------------------------------------------------------------
162 -- EMP201
163 -- NetPayeTxbIncCalc
164 -- Calculates the net Paye taxable income value for the calendar month
165 -------------------------------------------------------------------------------
166 PROCEDURE NetPayeTxbIncCalc (nti_PerTotAbm BALANCE
167                            , nti_AnnTotAbm BALANCE
168                            , nti_AnnTotNTGAbm BALANCE
169                            , nti_SitFactor NUMBER) AS
170 
171    -- Variable Declaration
172    nti_PerTypInc2           BALANCE default 0 ;
173    nti_PerTypErn2           BALANCE default 0 ;
174    nti_AnnTypErn2           BALANCE default 0 ;
175    nti_TxbPerTypInc2        BALANCE default 0 ;
176    nti_TxbAnnTypInc2        BALANCE default 0 ;
177    nti_NetPerTxbInc2        BALANCE default 0 ;
178    nti_NetAnnTxbInc2        BALANCE default 0 ;
179    nti_TxbAnnTypNTGInc2     BALANCE default 0 ;
180    nti_NetAnnTxbNTGInc2     BALANCE default 0 ;
181    nti_AnnTypNTGErn2        BALANCE default 0 ;
182 
183 BEGIN
184 
185    hr_utility.set_location('py_za_tx_01032012.NetPayeTxbIncCalc',1);
186    nti_PerTypInc2 := bal_GROSS_REMUNERATION_CMTD - bal_ANN_PAYMENTS_CMTD ;
187 
188 -- Annualise by the Site Factor the Period Type Income
189 --
190    nti_PerTypErn2 := nti_PerTypInc2 * nti_SitFactor;
191 
192    hr_utility.set_location('py_za_tx_01032012.NetPayeTxbIncCalc',2);
193 
194 -- Sum Annual Type Income Calendar Month to Date Balances
195 --
196    nti_AnnTypErn2 := nti_PerTypErn2 + bal_ANN_PAYMENTS_CMTD - bal_TOT_TXB_EE_DBT_NTG_CMTD;
197 
198    hr_utility.set_location('py_za_tx_01032012.NetPayeTxbIncCalc',3);
199 
200 -- Sum Annual Type NTG Income Calendar Month to Date Balances
201 --
202    nti_AnnTypNTGErn2 := nti_AnnTypErn2 +  bal_TOT_TXB_EE_DBT_NTG_CMTD;
203 
204    hr_utility.set_location('py_za_tx_01032012.NetPayeTxbIncCalc',4);
205 
206 
207 -- Calculate New O Figures
208 --
209    nti_TxbPerTypInc2 := nti_PerTypErn2 - nti_PerTotAbm ;
210    nti_TxbAnnTypInc2 := nti_AnnTypErn2 - nti_AnnTotAbm;
211    nti_TxbAnnTypNTGInc2 := nti_AnnTypNTGErn2 - nti_AnnTotNTGAbm;
212 
213 
214    hr_utility.set_location('py_za_tx_01032012.NetPayeTxbIncCalc',5);
215 -- Deannualise Period O Figure
216 --
217    nti_NetPerTxbInc2 := nti_TxbPerTypInc2 / nti_SitFactor;
218 
219 -- Calculate the Net Taxable Annual Type Income
220 --
221    nti_NetAnnTxbInc2 := nti_TxbAnnTypInc2 - nti_TxbPerTypInc2;
222    hr_utility.set_location('py_za_tx_01032012.NetPayeTxbIncCalc',6);
223 
224 -- Calculate the Net Taxable NTG Annual Type Income
225 --
226    nti_NetAnnTxbNTGInc2 := nti_TxbAnnTypNTGInc2 - (nti_NetAnnTxbInc2 + nti_TxbPerTypInc2);
227    hr_utility.set_location('py_za_tx_01032012.NetPayeTxbIncCalc',7);
228 
229 -- Calculate New Net Taxable Income Balance
230 --
231    trc_NPtiUpdFig := (nti_NetPerTxbInc2 + nti_NetAnnTxbInc2 + nti_NetAnnTxbNTGInc2) - bal_NET_PAYE_TXB_INC_CMTD;
232 
233    WrtHrTrc('nti_SitFactor:            '||to_char(nti_SitFactor));
234    WrtHrTrc('nti_PerTotAbm:            '||to_char(nti_PerTotAbm));
235    WrtHrTrc('nti_AnnTotAbm:            '||to_char(nti_AnnTotAbm));
236    WrtHrTrc('nti_AnnTotNTGAbm:         '||to_char(nti_AnnTotNTGAbm));
237    WrtHrTrc('nti_PerTypErn2:           '||to_char(nti_PerTypErn2));
238    WrtHrTrc('nti_AnnTypErn2:           '||to_char(nti_AnnTypErn2));
239    WrtHrTrc('nti_TxbPerTypInc2:        '||to_char(nti_TxbPerTypInc2));
240    WrtHrTrc('nti_NetPerTxbInc2:        '||to_char(nti_NetPerTxbInc2));
241    WrtHrTrc('nti_TxbAnnTypInc2:        '||to_char(nti_TxbAnnTypInc2));
242    WrtHrTrc('nti_AnnTypNTGErn2:        '||to_char(nti_AnnTypNTGErn2));
243    WrtHrTrc('nti_TxbAnnTypNTGInc2:     '||to_char(nti_TxbAnnTypNTGInc2));
244    WrtHrTrc('nti_NetAnnTxbNTGInc2:     '||to_char(nti_NetAnnTxbNTGInc2));
245    WrtHrTrc('trc_NPtiUpdFig:           '||to_char(trc_NPtiUpdFig));
246 
247 END ;
248 
249 
250 
251 -------------------------------------------------------------------------------
252 -- NetTxbIncCalc
253 -- Calculates the net taxable income value for the calendar month
254 -------------------------------------------------------------------------------
255 PROCEDURE NetTxbIncCalc(ASSIGNMENT_ACTION_ID IN NUMBER)
256  AS
257 
258    -- Variable Declaration
259    nti_CurMthStrtDte        DATE;
260    nti_CurMthEndDte         DATE;
261    nti_SitFactor            NUMBER;
262    nti_PerTypInc            BALANCE DEFAULT 0;
263    nti_PerTypErn            BALANCE DEFAULT 0;
264    nti_AnnTypErn            BALANCE DEFAULT 0;
265    nti_PerPenFnd            BALANCE DEFAULT 0;
266    nti_PerRfiCon            BALANCE DEFAULT 0;
267    nti_PerPenFndMax         BALANCE DEFAULT 0;
268    nti_PerPenFndAbm         BALANCE DEFAULT 0;
269    nti_AnnPenFnd            BALANCE DEFAULT 0;
270    nti_AnnRfiCon            BALANCE DEFAULT 0;
271    nti_AnnPenFndMax         BALANCE DEFAULT 0;
272    nti_AnnPenFndAbm         BALANCE DEFAULT 0;
273    nti_PerArrPenFnd         BALANCE DEFAULT 0;
274    nti_PerArrPenFndAbm      BALANCE DEFAULT 0;
275    nti_PerRetAnu            BALANCE DEFAULT 0;
276    nti_PerNrfiCon           BALANCE DEFAULT 0;
277    nti_PerRetAnuMax         BALANCE DEFAULT 0;
278    nti_PerRetAnuAbm         BALANCE DEFAULT 0;
279    nti_PerArrRetAnu         BALANCE DEFAULT 0;
280    nti_PerArrRetAnuAbm      BALANCE DEFAULT 0;
281    nti_AnnArrPenFnd         BALANCE DEFAULT 0;
282    nti_AnnArrPenFndAbm      BALANCE DEFAULT 0;
283    nti_AnnRetAnu            BALANCE DEFAULT 0;
284    nti_AnnNrfiCon           BALANCE DEFAULT 0;
285    nti_AnnRetAnuMax         BALANCE DEFAULT 0;
286    nti_AnnRetAnuAbm         BALANCE DEFAULT 0;
287    nti_AnnArrRetAnu         BALANCE DEFAULT 0;
288    nti_AnnArrRetAnuAbm      BALANCE DEFAULT 0;
289    nti_PerMedAidAbm         BALANCE DEFAULT 0;
290    nti_AnnMedAidAbm         BALANCE DEFAULT 0;
291    nti_PerTotAbm            BALANCE DEFAULT 0;
292    nti_AnnTotAbm            BALANCE DEFAULT 0;
293    nti_TxbPerTypInc         BALANCE DEFAULT 0;
294    nti_TxbAnnTypInc         BALANCE DEFAULT 0;
295    nti_NetPerTxbInc         BALANCE DEFAULT 0;
296    nti_NetAnnTxbInc         BALANCE DEFAULT 0;
297    l_65Year                 DATE;
298    -- Income Protection Policy
299    nti_PerIncProPolAbm      BALANCE DEFAULT 0;
300    nti_AnnIncProPolAbm      BALANCE DEFAULT 0;
301    --TYS2010
302    nti_PerDonAmt            BALANCE DEFAULT 0;
303    nti_AnnDonAmt            BALANCE DEFAULT 0;
304    nti_TxbPerTypIncWoDon    BALANCE DEFAULT 0;
305    nti_TxbAnnTypIncWoDon    BALANCE DEFAULT 0;
306    --NTG
307    nti_AnnTypNTGErn         BALANCE DEFAULT 0;
308    nti_NetAnnTxbNTGInc      BALANCE DEFAULT 0;
309    nti_AnnRfiEEDbtNTGCon    BALANCE DEFAULT 0;
310    nti_AnnNrfiEEDbtNTGCon   BALANCE DEFAULT 0;
311    nti_AnnPenFndNTGMax      BALANCE DEFAULT 0;
312    nti_AnnPenFndNTGAbm      BALANCE DEFAULT 0;
313    nti_AnnRetAnuNTGMax      BALANCE DEFAULT 0;
314    nti_AnnRetAnuNTGAbm      BALANCE DEFAULT 0;
315    nti_AnnTotNTGAbm         BALANCE DEFAULT 0;
316    nti_TxbAnnTypNTGIncWoDon BALANCE DEFAULT 0;
317    nti_TxbAnnTypNTGInc      BALANCE DEFAULT 0;
318 
319    --Bug 9369895
320    nti_TotTxbIncPkgYtd     BALANCE DEFAULT 0;
321    nti_TotTxbIncEEDbtPkgYtd BALANCE DEFAULT 0;
322    nti_TotTxbNIYtd         BALANCE DEFAULT 0;
323    nti_TotTxbFBYtd         BALANCE DEFAULT 0;
324    nti_TotTxbTAYtd         BALANCE DEFAULT 0;
325    nti_TotTxbPOYtd         BALANCE DEFAULT 0;
326 
327    /*
328    -- Total Non Taxable Travel Allowance
329    trc_TOT_NON_TXB_TA_CMTD  BALANCE DEFAULT 0;
330    -- Total Non Taxable Public Office
331    trc_TOT_NON_TXB_PO_CMTD  BALANCE DEFAULT 0;
332 */
333 
334 -- Bug 14376752
335    l_SKL_INC_LMP_TAX_MTD      BALANCE DEFAULT 0;
336    l_SKL_ANN_INC_LMP_TAX_MTD  BALANCE DEFAULT 0;
337    nti_PerLSTypIncTot         BALANCE DEFAULT 0;
338    nti_AnnLSTypIncTot         BALANCE DEFAULT 0;
339    nti_LSTxbPerTypIncWoDon    BALANCE DEFAULT 0;
340    nti_LSTxbPerTypInc         BALANCE DEFAULT 0;
341    nti_LSNetPerTxbInc         BALANCE DEFAULT 0;
342    nti_LSNetPerTxbErnTot      BALANCE DEFAULT 0;
343    nti_LSTxbAnnTypIncWoDon    BALANCE DEFAULT 0;
344    nti_LSTxbAnnTypInc         BALANCE DEFAULT 0;
345    nti_LSNetAnnTxbInc         BALANCE DEFAULT 0;
346    nti_LSTxbPerTypIncTot      BALANCE DEFAULT 0;
347    nti_LSNetPerTxbIncTot      BALANCE DEFAULT 0;
348    nti_LSNetAnnTxbIncTot      BALANCE DEFAULT 0;
349    nti_LSNetPerTypErnTot      BALANCE DEFAULT 0;
350    nti_LSNetAnnTypErnTot      BALANCE DEFAULT 0;
351 
352    LSNtiUpdFig                BALANCE DEFAULT 0;
353    m NUMBER := 1;
354    ls_num varchar2(100);
355 -- Bug 14376752
356 -- cursor to fetch all Lumpsums with a Tax Directive Number in the month
357    cursor csr_get_tax_dir_info(p_assignment_id number)
358    is
359        select distinct dirnum from (
360 					 SELECT process.result_value dirnum
361 					   FROM pay_assignment_actions paa
362 					      , pay_payroll_actions ppa
363 					      , per_time_periods ptp
364 					      , per_time_periods ptp_all
365 					      , pay_assignment_actions paa_all
366 					      , pay_payroll_actions ppa_all
367 					      , pay_run_results prr_ls
368 					      , pay_run_result_values target
369 					      , pay_balance_feeds_f feed
370 					      , pay_run_result_values process
371 					      , pay_input_values_f process_iv
372 					      , pay_input_values_f piv
373 					  WHERE paa.assignment_action_id = p_assignment_id
374 					    AND ppa.payroll_action_id = paa.payroll_action_id
375 					    AND ptp.time_period_id = ppa.time_period_id
376 					    AND ptp_all.prd_information1 = ptp.prd_information1
377 					    AND ppa_all.time_period_id = ptp_all.time_period_id
378 					    AND paa_all.payroll_action_id = ppa_all.payroll_action_id
379 					    AND paa_all.assignment_id = paa.assignment_id
380 					    AND paa_all.action_sequence <= paa.action_sequence
381 					    AND prr_ls.assignment_action_id = paa_all.assignment_action_id
382 					    AND prr_ls.status IN ('P', 'PA')
383 					    AND target.run_result_id = prr_ls.run_result_id
384 					    AND feed.input_value_id = target.input_value_id
385 					    AND ppa_all.effective_date
386 					        BETWEEN feed.effective_start_date
387 					            AND feed.effective_end_date
388 					    AND process.run_result_id = prr_ls.run_result_id
389 					    AND process.input_value_id = process_iv.input_value_id
390 					    AND process_iv.name = 'Tax Directive Number'
391 					    AND ppa_all.effective_date BETWEEN process_iv.effective_start_date  AND process_iv.effective_end_date
392 					    AND piv.input_value_id = target.input_value_id
393 					    AND ptp.pay_advice_date             = ptp_all.pay_advice_date
394 					    AND nvl(process.result_value,'To Be Advised') <> 'To Be Advised'
395 							ORDER BY paa_all.action_sequence , process.result_value);
396 
397 -- Bug 14376752
398 
399 
400 BEGIN
401 
402    trc_LScount := 0;
403 
404    hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',1);
405 
406 -- Bug 14376752
407 -- to delete from both table
408    trc_LSDirMTDTab.delete;
409    trc_LSNetTxbIncTab.delete;
410    trc_LSSklDirNumTab.delete;
411 -- Calculate the Current Effective Calendar Month to Date Start Date
412 --
413    SELECT trunc(dbi_SES_DTE,'Month')
414      INTO nti_CurMthStrtDte
415      FROM dual;
416    hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',2);
417 
418 -- Calculate the Current Effective Calendar Month to Date End Date
419 --
420    SELECT last_day(dbi_SES_DTE)
421      INTO nti_CurMthEndDte
422      FROM dual;
423    hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',3);
424 
425 -- Calculate Site Factor
426 --
427    -- Based on the number of days in the calendar year over days in the calendar month
428    nti_SitFactor := dbi_ZA_DYS_IN_YR / (nti_CurMthEndDte - nti_CurMthStrtDte + 1);
429 
430    hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',4);
431 
432    WrtHrTrc('nti_CurMthEndDte:  '||to_char(nti_CurMthEndDte,'DD/MM/YYYY'));
433    WrtHrTrc('nti_CurMthStrtDte: '||to_char(nti_CurMthStrtDte,'DD/MM/YYYY'));
434 
435 -- Calculate the Taxable Portion of the Not-Fully Taxable Income Balances
436 /* commented to revert the changes
437 -- For bug 6640212
438    trc_TOT_NON_TXB_TA_CMTD  := bal_TOT_TXB_TA_CMTD * ( 100 - glb_ZA_TRV_ALL_TX_PRC ) / 100;
439 
440    trc_TOT_NON_TXB_PO_CMTD  := bal_TOT_TXB_PO_CMTD * ( 100 - glb_ZA_PBL_TX_PRC ) / 100;
441 
442    WrtHrTrc('trc_TOT_NON_TXB_TA_CMTD: '||trc_TOT_NON_TXB_TA_CMTD);
443    WrtHrTrc('trc_TOT_NON_TXB_PO_CMTD: '||trc_TOT_NON_TXB_PO_CMTD);
444 
445    nti_PerTypInc := bal_TOT_SKL_INC_CMTD - trc_TOT_NON_TXB_TA_CMTD - trc_TOT_NON_TXB_PO_CMTD;
446 
447 */
448 
449    -- Fix for bug#10372926.
450    --bal_TOT_TXB_TA_CMTD  := bal_TOT_TXB_TA_CMTD * glb_ZA_TRV_ALL_TX_PRC / 100;
451 
452    bal_TOT_TXB_PO_CMTD  := bal_TOT_TXB_PO_CMTD * glb_ZA_PBL_TX_PRC / 100;
453 
454 -- Sum Period Type Income Calendar Month to Date Balances
455 --
456 
457 -- Bug 14376752
458 
459 -- Get the directive numbers in this calendar month
460 -- store the Skills Levyable Periodic Income and
461 -- the Skills Levyable Annual Income in a table
462 
463    FOR LSDirMTD in csr_get_tax_dir_info(ASSIGNMENT_ACTION_ID)
464    LOOP
465          hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',40);
466          hr_utility.set_location('Processing Directive Number: '|| LSDirMTD.dirnum,40);
467 
468          pay_balance_pkg.set_context('SOURCE_TEXT',LSDirMTD.dirnum);
469 
470 	         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);
471            hr_utility.set_location('l_SKL_INC_LMP_TAX_MTD:   '|| l_SKL_INC_LMP_TAX_MTD,40);
472          IF l_SKL_INC_LMP_TAX_MTD = 0 THEN
473             hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',41);
474             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);
475             trc_LSDirMTDTab(LSDirMTD.dirnum).inc_typ   := 'A';
476             trc_LSDirMTDTab(LSDirMTD.dirnum).dir_value := l_SKL_ANN_INC_LMP_TAX_MTD;
477 
478             nti_AnnLSTypIncTot := nti_AnnLSTypIncTot + l_SKL_ANN_INC_LMP_TAX_MTD;
479 
480             hr_utility.set_location('l_SKL_ANN_INC_LMP_TAX_MTD:   '|| l_SKL_ANN_INC_LMP_TAX_MTD,40);
481          ELSE
482             hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',42);
483             trc_LSDirMTDTab(LSDirMTD.dirnum).inc_typ   := 'P';
484             trc_LSDirMTDTab(LSDirMTD.dirnum).dir_value := l_SKL_INC_LMP_TAX_MTD;
485 
486             nti_PerLSTypIncTot := nti_PerLSTypIncTot + l_SKL_INC_LMP_TAX_MTD;
487          END IF;
488 
489    END LOOP;
490    hr_utility.set_location('nti_AnnLSTypIncTot: '|| nti_AnnLSTypIncTot,40);
491    hr_utility.set_location('nti_PerLSTypIncTot: '|| nti_PerLSTypIncTot,40);
492 
493 -- Bug 14376752
494 
495    nti_PerTypInc := bal_TOT_SKL_INC_CMTD - nti_PerLSTypIncTot;
496 -- Annualise by the Site Factor the Period Type Income
497 --
498    nti_PerTypErn := nti_PerTypInc * nti_SitFactor;
499 -- Sum Annual Type Income Calendar Month to Date Balances
500 --
501    nti_AnnTypErn := nti_PerTypErn + bal_TOT_SKL_ANN_INC_CMTD - nti_AnnLSTypIncTot;
502 
503 -- NTG
504 -- Sum Annual Type NTG Calendar Month to Date Balances
505    nti_AnnTypNTGErn := nti_AnnTypErn + bal_TOT_SKL_ANN_INC_NTG_CMTD;
506 -----------------------------
507 -- Calculate Abatement Values
508 -----------------------------
509    -- Calculate the assignments 65 Year Date
510    l_65Year := add_months(py_za_tx_01032012.dbi_PER_DTE_OF_BRTH,780);
511 
512    -------------------------
513    -- Pension Fund Abatement
514    -------------------------
515       ---------------------
516       -- Period Calculation
517       ---------------------
518          -- Annualise Period Pension Fund Contribution
519          nti_PerPenFnd := bal_CUR_PF_CMTD * nti_SitFactor;
520          -- Annualise Period Rfiable Contributions
521          nti_PerRfiCon := bal_TOT_RFI_INC_CMTD * nti_SitFactor;
522       ---------------------
523       -- Annual Calculation
524       ---------------------
525          -- Annual Pension Fund Contribution
526          nti_AnnPenFnd := nti_PerPenFnd + bal_ANN_PF_CMTD;
527          -- Annual Rfi Contribution
528          nti_AnnRfiCon := nti_PerRfiCon + bal_TOT_RFI_AN_INC_CMTD;
529 
530       -----------------------------
531       -- NTG Annual RFI Calculation
532       ------------------------------
533          -- Annual NTG Rfi Contribution
534          nti_AnnRfiEEDbtNTGCon := nti_AnnRfiCon + bal_TOT_RFI_EE_DBT_NTG_CMTD;
535 
536       --------------------------------
537       -- Arrear Pension Fund Abatement
538       --------------------------------
539          hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',19);
540          -------------
541          -- Excess ITD
542          -------------
543          nti_PerArrPenFnd := bal_EXC_ARR_PEN_ITD;
544          ------------------------------------
545          -- Current/Annual based on frequency
546          ------------------------------------
547          nti_PerArrPenFnd :=
548             nti_PerArrPenFnd + ( bal_ARR_PF_CMTD * nti_SitFactor);
549           ---------
550           -- Annual
551           ---------
552           nti_AnnArrPenFnd := nti_PerArrPenFnd + bal_ANN_ARR_PF_CMTD;
553 
554       -------------------------------
555       -- Retirement Annuity Abatement
556       -------------------------------
557          hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',20);
558          -------------
559          -- Current RA
560          -------------
561          -- Calculate RA Contribution
562          nti_PerRetAnu := bal_CUR_RA_CMTD * nti_SitFactor;
563          ---------------------
564          -- Current NRFI Contr
565          ---------------------
566          IF bal_CUR_PF_CMTD + bal_ANN_PF_CMTD = 0 THEN
567             hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',21);
568             nti_PerNrfiCon := (
569                                 bal_TOT_RFI_INC_CMTD + bal_TOT_NRFI_INC_CMTD
570                               )
571                               * nti_SitFactor;
572          ELSE
573             hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',22);
574             nti_PerNrfiCon := bal_TOT_NRFI_INC_CMTD * nti_SitFactor;
575          END IF;
576          ------------
577          -- Annual RA
578          ------------
579          nti_AnnRetAnu := nti_PerRetAnu + bal_ANN_RA_CMTD;
580 
581          IF bal_CUR_PF_CMTD + bal_ANN_PF_CMTD = 0 THEN
582             hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',23);
583 
584             nti_AnnNrfiCon := nti_PerNrfiCon
585                             + bal_TOT_NRFI_AN_INC_CMTD
586                             + bal_TOT_RFI_AN_INC_CMTD;
587          ELSE
588             hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',24);
589             nti_AnnNrfiCon := nti_PerNrfiCon + bal_TOT_NRFI_AN_INC_CMTD;
590          END IF;
591 
592         ------------------------------
593         --Annual NRFI NTG Contribution
594         ------------------------------
595          IF bal_CUR_PF_CMTD + bal_ANN_PF_CMTD = 0 THEN
596             hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',23);
597 
598             nti_AnnNrfiEEDbtNTGCon := nti_AnnNrfiCon
599                             + bal_TOT_NRFI_EE_DBT_NTG_CMTD
600                             + bal_TOT_RFI_EE_DBT_NTG_CMTD;
601          ELSE
602             hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',24);
603             nti_AnnNrfiEEDbtNTGCon := nti_AnnNrfiCon + bal_TOT_NRFI_EE_DBT_NTG_CMTD;
604          END IF;
605 
606       --------------------------------------
607       -- Arrear Retirement Annuity Abatement
608       --------------------------------------
609          hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',25);
610          -------------
611          -- Excess ITD
612          -------------
613          nti_PerArrRetAnu := bal_EXC_ARR_RA_ITD;
614          ------------------------------------
615          -- Current/Annual based on frequency
616          ------------------------------------
617          nti_PerArrRetAnu :=   nti_PerArrRetAnu
618                            + ( bal_ARR_RA_CMTD
619                              * nti_SitFactor
620                              );
621          ---------
622          -- Annual
623          ---------
624          nti_AnnArrRetAnu := nti_PerArrRetAnu
625                            + nti_AnnArrRetAnu
626                            + bal_ANN_ARR_RA_CMTD;
627 
628    ------------------------
629    -- Medical Aid Abatement
630    ------------------------
631       -- If the person is not yet 65 this tax year
632       -- IF l_65Year > dbi_ZA_ASG_TX_YR_END THEN
633       IF l_65Year > dbi_ZA_TX_YR_END THEN
634 
635          ----------
636          -- Current
637          ----------
638          nti_PerMedAidAbm :=
639             bal_MED_CNTRB_ABM_CMTD
640           * nti_SitFactor;
641          ---------
642          -- Annual
643          ---------
644          nti_AnnMedAidAbm :=
645             nti_PerMedAidAbm
646           + bal_ANN_MED_CNTRB_ABM_CMTD;
647       ELSE
648       -- if the person is over 65
649          ----------
650          -- Current
651          ----------
652          nti_PerMedAidAbm :=
653             -- Medical Aid Employer Contribution Changes
654             -- bal_MED_CONTR_CMTD
655             (bal_MED_CONTR_CMTD + bal_ER_MED_CONTR_CMTD)
656           * nti_SitFactor;
657          ---------
658          -- Annual
659          ---------
660          nti_AnnMedAidAbm := nti_PerMedAidAbm;
661       END IF;
662 
663    ---------------------------
664    -- Income Protection Policy
665    ---------------------------
666       ---------------------
667       -- Period Calculation
668       ---------------------
669       -- Annualise Income Protection Policy Contributions
670       nti_PerIncProPolAbm := bal_EE_INC_PRO_POL_CMTD * nti_SitFactor;
671 
672       hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',26);
673 
674       ---------------------
675       -- Annual Calculation
676       ---------------------
677       -- Annual Income Protection Policy Contributions
678       nti_AnnIncProPolAbm :=
679          nti_PerIncProPolAbm
680        + bal_ANN_EE_INC_PRO_POL_CMTD;
681 
682    --TYE 2010
683    ---------------------------
684    -- Donation made by EE pd by ER
685    ---------------------------
686       ---------------------
687       -- Period Calculation
688       ---------------------
689       -- Annualise Donation Amount
690       nti_PerDonAmt := bal_DONAT_MD_EE_CMTD * nti_SitFactor;
691 
692       hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',27);
693 
694       ---------------------
695       -- Annual Calculation
696       ---------------------
697       -- Annual Donation
698       nti_AnnDonAmt := nti_PerDonAmt + bal_ANN_DONAT_MD_EE_CMTD;
699 
700       --Bug 9369895
701       if trc_PenBasis = 1 then --Fixed Percentage of Total Package
702             nti_TotTxbNIYtd :=  bal_TOT_TXB_NI_CMTD * nti_SitFactor;
703 
704             nti_TotTxbFBYtd :=  bal_TOT_TXB_FB_CMTD * nti_SitFactor;
705 
706             nti_TotTxbTAYtd :=  bal_TOT_TXB_TA_CMTD * nti_SitFactor;
707 
708             nti_TotTxbPOYtd :=  bal_TOT_TXB_PO_CMTD * nti_SitFactor;
709 
710             nti_TotTxbIncPkgYtd :=   (  nti_TotTxbNIYtd + nti_TotTxbFBYtd
711                                       + nti_TotTxbTAYtd + nti_TotTxbPOYtd
712                                       + bal_TOT_TXB_AB_CMTD
713                                       + bal_TOT_TXB_AP_CMTD
714                                       + bal_TOT_TXB_AP_NTG_CMTD );
715 
716             nti_TotTxbIncEEDbtPkgYtd := ( nti_TotTxbIncPkgYtd
717                                       + bal_TOT_TXB_EE_DBT_NTG_CMTD );
718 
719       end if;
720 
721    ----------------------------------------------------------------------------
722    --                        CALCULATE THE ABATEMENTS                        --
723    ----------------------------------------------------------------------------
724    -------------------------
725    -- Pension Fund Abatement
726    -------------------------
727 
728       if trc_PenBasis = 2 then --Percentage of Specific Income
729               ---------------------
730               -- Period Calculation
731               ---------------------
732               -- Calculate the Pension Fund Maximum
733               nti_PerPenFndMax := GREATEST( glb_ZA_PF_AN_MX_ABT
734                                           , glb_ZA_PF_MX_PRC / 100 * nti_PerRfiCon
735                                           );
736               -- Calculate Period Pension Fund Abatement
737               nti_PerPenFndAbm := LEAST(nti_PerPenFnd, nti_PerPenFndMax);
738               ---------------------
739               -- Annual Calculation
740               ---------------------
741               -- Calculate the Pension Fund Maximum
742               nti_AnnPenFndMax := GREATEST( glb_ZA_PF_AN_MX_ABT
743                                           , glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiCon
744                                           );
745 
746               -- Calculate Annual Pension Fund Abatement
747               nti_AnnPenFndAbm := LEAST(nti_AnnPenFnd, nti_AnnPenFndMax);
748               ----------------------------------------------
749               -- Annual NTG EE Debt Pension Fund Calculation
750               -----------------------------------------------
751               -- Calculate the Pension Fund Maximum for Net to Gross Pymt of EE Debt
752               nti_AnnPenFndNTGMax := GREATEST( glb_ZA_PF_AN_MX_ABT
753                                              , glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiEEDbtNTGCon
754                                               );
755 
756               -- Calculate Annual Pension Fund Abatement for Net to Gross Pymt of EE Debt
757               nti_AnnPenFndNTGAbm := LEAST(nti_AnnPenFnd, nti_AnnPenFndNTGMax);
758 
759       else
760               ---------------------
761               -- Annual Calculation
762               ---------------------
763               -- Calculate Annual Pension Fund Abatement
764               nti_AnnPenFndAbm := LEAST( nti_AnnPenFnd, glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiCon
765                                        , glb_ZA_PF_MX_PRC / 100 * nti_TotTxbIncPkgYtd);
766 
767               ---------------------
768               -- Periodic Calculation
769               ---------------------
770               nti_PerPenFndAbm := nti_AnnPenFndAbm;
771               ----------------------------------------------
772               -- Annual NTG EE Debt Pension Fund Calculation
773               -----------------------------------------------
774               -- Calculate the Pension Fund Maximum for Net to Gross Pymt of EE Debt
775               nti_AnnPenFndNTGMax := GREATEST( glb_ZA_PF_AN_MX_ABT
776                                              , glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiEEDbtNTGCon
777                                               );
778 
779               -- Calculate Annual Pension Fund Abatement for Net to Gross Pymt of EE Debt
780               nti_AnnPenFndNTGAbm := LEAST( nti_AnnPenFnd, glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiEEDbtNTGCon
781                                            ,glb_ZA_PF_MX_PRC / 100 * nti_TotTxbIncEEDbtPkgYtd );
782 
783       end if;
784 
785    --------------------------------
786    -- Arrear Pension Fund Abatement
787    --------------------------------
788       ---------------------
789       -- Period Calculation
790       ---------------------
791       nti_PerArrPenFndAbm := LEAST(nti_PerArrPenFnd, glb_ZA_ARR_PF_AN_MX_ABT);
792       ---------------------
793       -- Annual Calculation
794       ---------------------
795       nti_AnnArrPenFndAbm := LEAST(nti_AnnArrPenFnd, glb_ZA_ARR_PF_AN_MX_ABT);
796    ---------------------------------
797    -- Retirement Annnnuity Abatement
798    ---------------------------------
799       ---------------------
800       -- Period Calculation
801       ---------------------
802       -- Calculate the Retirement Annuity Maximum
803       nti_PerRetAnuMax := GREATEST( glb_ZA_PF_AN_MX_ABT
804                                   , glb_ZA_RA_AN_MX_ABT - nti_PerPenFndAbm
805                                   , glb_ZA_RA_MX_PRC / 100 * nti_PerNrfiCon
806                                   );
807 
808       -- Calculate Retirement Annuity Abatement
809       nti_PerRetAnuAbm := LEAST(nti_PerRetAnu, nti_PerRetAnuMax);
810       ---------------------
811       -- Annual Calculation
812       ---------------------
813       nti_AnnRetAnuMax := GREATEST( glb_ZA_PF_AN_MX_ABT
814                                   , glb_ZA_RA_AN_MX_ABT - nti_AnnPenFndAbm
815                                   , glb_ZA_RA_MX_PRC / 100 * nti_AnnNrfiCon
816                                   );
817 
818       -- Calculate Retirement Annuity Abatement
819       nti_AnnRetAnuAbm := LEAST(nti_AnnRetAnu, nti_AnnRetAnuMax);
820 
821       -----------------------------------------------------
822       -- Annual NTG EE Debt Retirement Annuity Calculation
823       -----------------------------------------------------
824       -- Calculate the Retirement Annuity Maximum for Net to Gross Pymt of EE Debt
825       nti_AnnRetAnuNTGMax := GREATEST( glb_ZA_PF_AN_MX_ABT
826                                      , glb_ZA_RA_AN_MX_ABT - nti_AnnPenFndAbm
827                                      , glb_ZA_RA_MX_PRC / 100 * nti_AnnNrfiEEDbtNTGCon
828                                      );
829 
830       -- Calculate the Retirement Annuity Abatement for Net to Gross Pymt of EE Debt
831       nti_AnnRetAnuNTGAbm := LEAST(nti_AnnRetAnu, nti_AnnRetAnuNTGMax);
832 
833 
834    --------------------------------------
835    -- Arrear Retirement Annuity Abatement
836    --------------------------------------
837       ---------------------
838       -- Period Calculation
839       ---------------------
840       nti_PerArrRetAnuAbm := LEAST(nti_PerArrRetAnu, glb_ZA_ARR_RA_AN_MX_ABT);
841       ---------------------
842       -- Annual Calculation
843       ---------------------
844       nti_AnnArrRetAnuAbm := LEAST(nti_AnnArrRetAnu, glb_ZA_ARR_RA_AN_MX_ABT);
845 
846       hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',27);
847 
848    -------------------
849    -- Total Abatements
850    -------------------
851       -- Period Total Abatement
852       nti_PerTotAbm := ( nti_PerPenFndAbm
853                        + nti_PerArrPenFndAbm
854                        + nti_PerRetAnuAbm
855                        + nti_PerArrRetAnuAbm
856                        + nti_PerMedAidAbm
857                        + nti_PerIncProPolAbm
858                        );
859       hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',28);
860       -- Annual Total Abatements
861       nti_AnnTotAbm := ( nti_AnnPenFndAbm
862                        + nti_AnnArrPenFndAbm
863                        + nti_AnnRetAnuAbm
864                        + nti_AnnArrRetAnuAbm
865                        + nti_AnnMedAidAbm
866                        + nti_AnnIncProPolAbm
867                        );
868       hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',29);
869       -- Annual NTG Total Abatements
870       nti_AnnTotNTGAbm := ( nti_AnnPenFndNTGAbm
871                        + nti_AnnArrPenFndAbm
872                        + nti_AnnRetAnuNTGAbm
873                        + nti_AnnArrRetAnuAbm
874                        + nti_AnnMedAidAbm
875                        + nti_AnnIncProPolAbm
876                        );
877 
878 
879 -- Calculate New O Figures
880 --
881    --TYS2010
882    --Suffixed the variable with WoDon to denote that donation amount is not deducted.
883    nti_TxbPerTypIncWoDon := nti_PerTypErn - nti_PerTotAbm;
884    nti_TxbPerTypInc      := nti_TxbPerTypIncWoDon - least(glb_ZA_ALLOW_DONATION_PERC*nti_TxbPerTypIncWoDon/100,nti_PerDonAmt);
885 
886    nti_TxbAnnTypIncWoDon := nti_AnnTypErn - nti_AnnTotAbm;
887    nti_TxbAnnTypInc      := nti_TxbAnnTypIncWoDon - least(glb_ZA_ALLOW_DONATION_PERC*nti_TxbAnnTypIncWoDon/100,nti_AnnDonAmt);
888 
889    --NTG
890    nti_TxbAnnTypNTGIncWoDon := nti_AnnTypNTGErn - nti_AnnTotNTGAbm;
891    nti_TxbAnnTypNTGInc      := nti_TxbAnnTypNTGIncWoDon - least(glb_ZA_ALLOW_DONATION_PERC*nti_TxbAnnTypNTGIncWoDon/100,nti_AnnDonAmt);
892 
893 
894 -- Deannualise Period O Figure
895 --
896    nti_NetPerTxbInc := nti_TxbPerTypInc / nti_SitFactor;
897 -- Calculate the Net Taxable Annual Type Income
898 --
899    nti_NetAnnTxbInc := nti_TxbAnnTypInc - nti_TxbPerTypInc;
900 -- Calculate the Net Taxable Annual Type NTG Income
901 --
902    if bal_TOT_SKL_ANN_INC_NTG_CMTD <> 0 then
903       nti_NetAnnTxbNTGInc := nti_TxbAnnTypNTGInc - (nti_NetAnnTxbInc + nti_TxbPerTypInc);
904    else
905       nti_NetAnnTxbNTGInc := 0;
906    end if;
907 
908 -- Calculate the Net Taxable Type Income for each Lumpsum
909 -- Bug 14376752
910    nti_LSNetPerTypErnTot := nti_PerTypErn ;
911    nti_LSNetPerTxbIncTot := nti_NetPerTxbInc;
912    nti_LSTxbPerTypIncTot := nti_TxbPerTypInc;
913    hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',37);
914  IF trc_LSDirMTDTab.COUNT > 0 THEN
915        hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',38);
916        hr_utility.set_location('COUNT: '|| trc_LSDirMTDTab.COUNT,38);
917 
918    ls_num := trc_LSDirMTDTab.first;
919    while(ls_num is not null)
920    loop
921        hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',39);
922          IF trc_LSDirMTDTab(ls_num).inc_typ = 'P' THEN
923          hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',40);
924             nti_LSTxbPerTypIncWoDon   := (trc_LSDirMTDTab(ls_num).dir_value * nti_SitFactor) +  nti_LSNetPerTypErnTot - nti_PerTotAbm;
925             nti_LSTxbPerTypInc        :=  nti_LSTxbPerTypIncWoDon - least(glb_ZA_ALLOW_DONATION_PERC*nti_LSTxbPerTypIncWoDon/100,nti_PerDonAmt);
926             nti_LSNetPerTxbInc        := (nti_LSTxbPerTypInc/nti_SitFactor) - nti_LSNetPerTxbIncTot;
927 
928             trc_LSNetTxbIncTab(ls_num).LSTxbIncMTD     :=  nti_LSNetPerTxbInc;
929             pay_balance_pkg.set_context('SOURCE_TEXT', ls_num);
930             LSNtiUpdFig := nvl(pay_balance_pkg.get_value(get_def_bal_id('Net Taxable Income LS','_ASG_LMPSM_TAX_MTD'),ASSIGNMENT_ACTION_ID),0);
931             hr_utility.set_location('ls_num                '|| ls_num,38);
932             hr_utility.set_location('Net Taxable Income LS '|| LSNtiUpdFig,38);
933 
934             trc_LSNetTxbIncTab(ls_num).LSNtiUpdFig     := nti_LSNetPerTxbInc - LSNtiUpdFig;
935 
936             hr_utility.set_location('Net Taxable Income LS UPD '|| trc_LSNetTxbIncTab(ls_num).LSNtiUpdFig,38);
937 
938             LSNtiUpdFig := nvl(pay_balance_pkg.get_value(get_def_bal_id('Skills Levy LS','_ASG_LMPSM_TAX_MTD'),ASSIGNMENT_ACTION_ID),0);
939             hr_utility.set_location('ls_num                '|| ls_num,38);
940             hr_utility.set_location('Skills Levy '|| LSNtiUpdFig,38);
941             trc_LSNetTxbIncTab(ls_num).LSSkl     := LSNtiUpdFig;
942             hr_utility.set_location('Skills Levy LS           '|| trc_LSNetTxbIncTab(ls_num).LSSkl,38);
943 
944 
945             nti_LSNetPerTypErnTot     := nti_LSNetPerTypErnTot + (trc_LSDirMTDTab(ls_num).dir_value * nti_SitFactor);
946             nti_LSNetPerTxbIncTot     := nti_LSNetPerTxbIncTot + nti_LSNetPerTxbInc;
947 
948             nti_LSTxbPerTypIncTot     := nti_LSTxbPerTypInc;
949 
950           hr_utility.set_location('nti_LSNetPerTxbInc: '|| nti_LSNetPerTxbInc,40);
951           hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',41);
952          END IF;
953          if ls_num <> trc_LSDirMTDTab.last then
954            ls_num := trc_LSDirMTDTab.next(ls_num);
955          else
956            ls_num := null;
957          end if;
958    end loop;
959 
960    hr_utility.set_location('nti_LSNetPerTypErnTot: '|| nti_LSNetPerTypErnTot,42);
961    hr_utility.set_location('nti_LSNetPerTxbIncTot: '|| nti_LSNetPerTxbIncTot,43);
962    hr_utility.set_location('nti_LSTxbPerTypIncTot: '|| nti_LSTxbPerTypIncTot,44);
963 
964    hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',45);
965    nti_LSNetAnnTypErnTot := nti_AnnTypErn + (nti_PerLSTypIncTot * nti_SitFactor) ;
966    nti_LSNetAnnTxbIncTot := nti_NetAnnTxbInc + nti_LSTxbPerTypIncTot;
967 
968    ls_num := trc_LSDirMTDTab.first;
969    while( ls_num is not null)
970    loop
971          hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',46);
972          IF trc_LSDirMTDTab(ls_num).inc_typ = 'A' THEN
973          hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',47);
974             nti_LSTxbAnnTypIncWoDon := trc_LSDirMTDTab(ls_num).dir_value + nti_LSNetAnnTypErnTot - nti_AnnTotAbm;
975             nti_LSTxbAnnTypInc      := nti_LSTxbAnnTypIncWoDon - least(glb_ZA_ALLOW_DONATION_PERC*nti_LSTxbAnnTypIncWoDon/100,nti_AnnDonAmt);
976             nti_LSNetAnnTxbInc      := nti_LSTxbAnnTypInc - nti_LSNetAnnTxbIncTot;
977 
978             trc_LSNetTxbIncTab(ls_num).LSTxbIncMTD     :=  nti_LSNetAnnTxbInc;
979             pay_balance_pkg.set_context('SOURCE_TEXT', ls_num);
980             LSNtiUpdFig := nvl(pay_balance_pkg.get_value(get_def_bal_id('Net Taxable Income LS','_ASG_LMPSM_TAX_MTD'),ASSIGNMENT_ACTION_ID),0);
981             hr_utility.set_location('ls_num                '|| ls_num,47);
982             hr_utility.set_location('Net Taxable Income LS '|| LSNtiUpdFig,47);
983 
984             trc_LSNetTxbIncTab(ls_num).LSNtiUpdFig     := nti_LSNetAnnTxbInc - LSNtiUpdFig;
985             hr_utility.set_location('Net Taxable Income LS UPD '|| trc_LSNetTxbIncTab(ls_num).LSNtiUpdFig,47);
986 
987             LSNtiUpdFig := nvl(pay_balance_pkg.get_value(get_def_bal_id('Skills Levy LS','_ASG_LMPSM_TAX_MTD'),ASSIGNMENT_ACTION_ID),0);
988             hr_utility.set_location('ls_num                '|| ls_num,47);
989             hr_utility.set_location('Skills Levy '|| LSNtiUpdFig,47);
990             trc_LSNetTxbIncTab(ls_num).LSSkl     := LSNtiUpdFig;
991             hr_utility.set_location('Skills Levy LS           '|| trc_LSNetTxbIncTab(ls_num).LSSkl,47);
992 
993             nti_LSNetAnnTypErnTot   := nti_LSNetAnnTypErnTot + trc_LSDirMTDTab(ls_num).dir_value;
994             nti_LSNetAnnTxbIncTot   := nti_LSNetAnnTxbIncTot + nti_LSNetAnnTxbInc;
995 
996           hr_utility.set_location('nti_LSNetAnnTxbInc: '|| nti_LSNetAnnTxbInc,48);
997           hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',48);
998          END IF;
999          if ls_num <> trc_LSDirMTDTab.last then
1000            ls_num := trc_LSDirMTDTab.next(ls_num);
1001          else
1002            ls_num := null;
1003          end if;
1004    end loop;
1005 
1006    hr_utility.set_location('nti_LSNetAnnTypErnTot: '|| nti_LSNetAnnTypErnTot,49);
1007    hr_utility.set_location('nti_LSNetAnnTxbIncTot: '|| nti_LSNetAnnTxbIncTot,49);
1008 
1009   END IF;
1010       hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',50);
1011 
1012 -- Loop to store 'To Be Advised' as default in a table
1013 
1014    FOR k in 1 .. 30
1015    LOOP
1016       trc_LSSklDirNumTab(k):= 'To Be Advised';
1017    END LOOP;
1018       hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',55);
1019       trc_LScount := trc_LSDirMTDTab.count;
1020       hr_utility.set_location('trc_LScount  ' || trc_LScount,55);
1021 
1022 -- Loop to store the Tax Directive Number in the table wherver it exits.
1023    FOR j in 1 .. trc_LScount
1024    LOOP
1025       hr_utility.set_location('j:  ' || j,56);
1026       if j=1 then
1027          trc_LSSklDirNumTab(m) := trc_LSDirMTDTab.first;
1028          hr_utility.set_location('Value:' || trc_LSSklDirNumTab(m) ,57);
1029       else
1030          trc_LSSklDirNumTab(m) := trc_LSDirMTDTab.Next(trc_LSSklDirNumTab(m-1));
1031           hr_utility.set_location('Value:' || trc_LSSklDirNumTab(m) ,58);
1032       end if;
1033      m := m+1;
1034    END LOOP;
1035    hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',59);
1036 -- Bug 14376752
1037 -- Calculate New Net Taxable Income Balance
1038 --
1039    trc_NtiUpdFig := (nti_NetPerTxbInc + nti_NetAnnTxbInc + nti_NetAnnTxbNTGInc) - bal_NET_TXB_INC_CMTD;
1040    hr_utility.set_location('trc_NtiUpdFig:' || trc_NtiUpdFig,57);
1041    hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',57);
1042 
1043    WrtHrTrc('nti_SitFactor:            '||to_char(nti_SitFactor));
1044    WrtHrTrc('nti_PerTypErn:            '||to_char(nti_PerTypErn));
1045    WrtHrTrc('nti_AnnTypErn:            '||to_char(nti_AnnTypErn));
1046    WrtHrTrc('nti_NetPerTxbInc:         '||to_char(nti_NetPerTxbInc));
1047    WrtHrTrc('nti_NetAnnTxbInc:         '||to_char(nti_NetAnnTxbInc));
1048    WrtHrTrc('bal_NET_TXB_INC_CMTD:     '||to_char(bal_NET_TXB_INC_CMTD));
1049    WrtHrTrc('trc_NtiUpdFig:            '||to_char(trc_NtiUpdFig));
1050    WrtHrTrc(' ');
1051    WrtHrTrc('nti_PerTotAbm:            '||to_char(nti_PerTotAbm));
1052    WrtHrTrc('nti_PerTotAbm consists of:');
1053    WrtHrTrc('nti_PerPenFndAbm:         '||to_char(nti_PerPenFndAbm));
1054    WrtHrTrc('nti_PerArrPenFndAbm:      '||to_char(nti_PerArrPenFndAbm));
1055    WrtHrTrc('nti_PerRetAnuAbm:         '||to_char(nti_PerRetAnuAbm));
1056    WrtHrTrc('nti_PerArrRetAnuAbm:      '||to_char(nti_PerArrRetAnuAbm));
1057    WrtHrTrc('nti_PerMedAidAbm:         '||to_char(nti_PerMedAidAbm));
1058    WrtHrTrc('nti_PerIncProPolAbm:      '||to_char(nti_PerIncProPolAbm));
1059    WrtHrTrc(' ');
1060    WrtHrTrc('nti_AnnTotAbm:            '||to_char(nti_AnnTotAbm));
1061    WrtHrTrc('nti_AnnTotAbm consists of:');
1062    WrtHrTrc('nti_AnnPenFndAbm:         '||to_char(nti_AnnPenFndAbm));
1063    WrtHrTrc('nti_AnnArrPenFndAbm:      '||to_char(nti_AnnArrPenFndAbm));
1064    WrtHrTrc('nti_AnnRetAnuAbm:         '||to_char(nti_AnnRetAnuAbm));
1065    WrtHrTrc('nti_AnnArrRetAnuAbm:      '||to_char(nti_AnnArrRetAnuAbm));
1066    WrtHrTrc('nti_AnnMedAidAbm:         '||to_char(nti_AnnMedAidAbm));
1067    WrtHrTrc('nti_AnnIncProPolAbm:      '||to_char(nti_AnnIncProPolAbm));
1068    WrtHrTrc('nti_PerDonAmt:            '||to_char(nti_PerDonAmt));
1069    WrtHrTrc('nti_AnnDonAmt:            '||to_char(nti_AnnDonAmt));
1070    WrtHrTrc(' ');
1071    WrtHrTrc('nti_AnnTotNTGAbm:         '||to_char(nti_AnnTotNTGAbm));
1072    WrtHrTrc('nti_AnnTotNTGAbm consists of:');
1073    WrtHrTrc('nti_AnnPenFndNTGAbm:      '||to_char(nti_AnnPenFndNTGAbm));
1074    WrtHrTrc('nti_AnnArrPenFndAbm:      '||to_char(nti_AnnArrPenFndAbm));
1075    WrtHrTrc('nti_AnnRetAnuNTGAbm:      '||to_char(nti_AnnRetAnuNTGAbm));
1076    WrtHrTrc('nti_AnnArrRetAnuAbm:      '||to_char(nti_AnnArrRetAnuAbm));
1077    WrtHrTrc('nti_AnnMedAidAbm:         '||to_char(nti_AnnMedAidAbm));
1078    WrtHrTrc('nti_AnnIncProPolAbm:      '||to_char(nti_AnnIncProPolAbm));
1079    WrtHrTrc('nti_PerDonAmt:            '||to_char(nti_PerDonAmt));
1080    WrtHrTrc('nti_AnnDonAmt:            '||to_char(nti_AnnDonAmt));
1081    WrtHrTrc('nti_TotTxbIncPkgYtd       '||to_char(nti_TotTxbIncPkgYtd));
1082    WrtHrTrc('nti_TotTxbIncEEDbtPkgYtd  '||to_char(nti_TotTxbIncEEDbtPkgYtd));
1083    WrtHrTrc('nti_TotTxbNIYtd           '||to_char(nti_TotTxbNIYtd));
1084    WrtHrTrc('nti_TotTxbFBYtd           '||to_char(nti_TotTxbFBYtd));
1085    WrtHrTrc('nti_TotTxbTAYtd           '||to_char(nti_TotTxbTAYtd));
1086    WrtHrTrc('nti_TotTxbPOYtd           '||to_char(nti_TotTxbPOYtd));
1087 
1088 
1089    -- EMP201
1090    -- Calculations for Net PAYE Taxable Income
1091    NetPayeTxbIncCalc (nti_PerTotAbm, nti_AnnTotAbm, nti_AnnTotNTGAbm, nti_SitFactor);
1092 
1093 
1094 EXCEPTION
1095    WHEN OTHERS THEN
1096       IF xpt_Msg = 'No Error' THEN
1097          xpt_Msg := 'NetTxbIncCalc: '||TO_CHAR(SQLCODE);
1098       END IF;
1099        RAISE xpt_E;
1100 END NetTxbIncCalc;
1101 -- Bug 14376752
1102 FUNCTION NetTxbSklDirNum(
1103  p_chunk_num  IN NUMBER
1104 ,p_DirNum1    OUT NOCOPY VARCHAR2
1105 ,p_DirNum2    OUT NOCOPY VARCHAR2
1106 ,p_DirNum3    OUT NOCOPY VARCHAR2
1107 ,p_DirNum4    OUT NOCOPY VARCHAR2
1108 ,p_DirNum5    OUT NOCOPY VARCHAR2
1109 ,p_DirNum6    OUT NOCOPY VARCHAR2
1110 ,p_DirNum7    OUT NOCOPY VARCHAR2
1111 ,p_DirNum8    OUT NOCOPY VARCHAR2
1112 ,p_DirNum9    OUT NOCOPY VARCHAR2
1113 ,p_DirNum10   OUT NOCOPY VARCHAR2
1114 ,p_DirNum11   OUT NOCOPY VARCHAR2
1115 ,p_DirNum12   OUT NOCOPY VARCHAR2
1116 ,p_DirNum13   OUT NOCOPY VARCHAR2
1117 ,p_DirNum14   OUT NOCOPY VARCHAR2
1118 ,p_DirNum15   OUT NOCOPY VARCHAR2
1119 )RETURN NUMBER
1120 AS
1121 
1122 BEGIN
1123 
1124  IF  p_chunk_num = 1 THEN
1125 
1126 	    p_DirNum1  := trc_LSSklDirNumTab(1);
1127 	    p_DirNum2  := trc_LSSklDirNumTab(2);
1128 	    p_DirNum3  := trc_LSSklDirNumTab(3);
1129 	    p_DirNum4  := trc_LSSklDirNumTab(4);
1130 	    p_DirNum5  := trc_LSSklDirNumTab(5);
1131 	    p_DirNum6  := trc_LSSklDirNumTab(6);
1132 	    p_DirNum7  := trc_LSSklDirNumTab(7);
1133 	    p_DirNum8  := trc_LSSklDirNumTab(8);
1134 	    p_DirNum9  := trc_LSSklDirNumTab(9);
1135 	    p_DirNum10 := trc_LSSklDirNumTab(10);
1136 	    p_DirNum11 := trc_LSSklDirNumTab(11);
1137 	    p_DirNum12 := trc_LSSklDirNumTab(12);
1138 	    p_DirNum13 := trc_LSSklDirNumTab(13);
1139 	    p_DirNum14 := trc_LSSklDirNumTab(14);
1140                               p_DirNum15 := trc_LSSklDirNumTab(15);
1141 
1142  ELSIF p_chunk_num = 2 THEN
1143 
1144 	    p_DirNum1  := trc_LSSklDirNumTab(16);
1145 	    p_DirNum2  := trc_LSSklDirNumTab(17);
1146 	    p_DirNum3  := trc_LSSklDirNumTab(18);
1147 	    p_DirNum4  := trc_LSSklDirNumTab(19);
1148 	    p_DirNum5  := trc_LSSklDirNumTab(20);
1149 	    p_DirNum6  := trc_LSSklDirNumTab(21);
1150 	    p_DirNum7  := trc_LSSklDirNumTab(22);
1151 	    p_DirNum8  := trc_LSSklDirNumTab(23);
1152 	    p_DirNum9  := trc_LSSklDirNumTab(24);
1153 	    p_DirNum10 := trc_LSSklDirNumTab(25);
1154 	    p_DirNum11 := trc_LSSklDirNumTab(26);
1155 	    p_DirNum12 := trc_LSSklDirNumTab(27);
1156 	    p_DirNum13 := trc_LSSklDirNumTab(28);
1157 	    p_DirNum14 := trc_LSSklDirNumTab(29);
1158                               p_DirNum15 := trc_LSSklDirNumTab(30);
1159 
1160  END IF;
1161 
1162  RETURN trc_LScount ;
1163 
1164 EXCEPTION
1165    WHEN OTHERS THEN
1166       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
1167       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
1168       py_za_tx_utl_01032012.StopHrTrace;
1169       hr_utility.raise_error;
1170 END NetTxbSklDirNum;
1171 
1172 FUNCTION LSNetTxbInc(
1173  p_Dir_Num         IN VARCHAR2
1174 ,p_Dir_LSNetTxbInc OUT NOCOPY NUMBER
1175 )RETURN NUMBER
1176 AS
1177 ls_num varchar2(100);
1178 BEGIN
1179 
1180       p_Dir_LSNetTxbInc := trc_LSNetTxbIncTab(p_Dir_Num).LSTxbIncMTD;
1181 
1182 
1183 RETURN 1;
1184 
1185 EXCEPTION
1186    WHEN OTHERS THEN
1187       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
1188       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
1189       py_za_tx_utl_01032012.StopHrTrace;
1190       hr_utility.raise_error;
1191 END LSNetTxbInc;
1192 
1193 FUNCTION LSNetTxbIncUpd(
1194  p_Dir_Num         IN VARCHAR2
1195 ,p_Dir_LSNetTxbInc OUT NOCOPY NUMBER
1196 )RETURN NUMBER
1197 AS
1198 
1199 BEGIN
1200 
1201        p_Dir_LSNetTxbInc := trc_LSNetTxbIncTab(p_Dir_Num).LSNtiUpdFig;
1202 
1203 RETURN 1;
1204 
1205 EXCEPTION
1206    WHEN OTHERS THEN
1207       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
1208       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
1209       py_za_tx_utl_01032012.StopHrTrace;
1210       hr_utility.raise_error;
1211 END LSNetTxbIncUpd;
1212 
1213 
1214 
1215 FUNCTION LSSkillsLevy(
1216  p_Dir_Num          IN VARCHAR2
1217 ,p_Dir_LSSkillsLevy OUT NOCOPY NUMBER
1218 )RETURN NUMBER
1219 AS
1220 
1221 BEGIN
1222 
1223        p_Dir_LSSkillsLevy := trc_LSNetTxbIncTab(p_Dir_Num).LSSkl;
1224 
1225 RETURN 1;
1226 
1227 EXCEPTION
1228    WHEN OTHERS THEN
1229       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
1230       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
1231       py_za_tx_utl_01032012.StopHrTrace;
1232       hr_utility.raise_error;
1233 END LSSkillsLevy;
1234 
1235 FUNCTION LSDirCount RETURN NUMBER
1236 AS
1237 l_count NUMBER;
1238 
1239 BEGIN
1240 
1241 l_count := trc_LScount ;
1242 
1243 RETURN l_count;
1244 
1245 EXCEPTION
1246    WHEN OTHERS THEN
1247       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
1248       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
1249       py_za_tx_utl_01032012.StopHrTrace;
1250       hr_utility.raise_error;
1251 END LSDirCount;
1252 
1253 FUNCTION LSDirNetTxbInc(
1254  p_Dir_Num               IN VARCHAR2
1255 ,p_LSNetTxbInc           OUT NOCOPY NUMBER
1256 ) RETURN NUMBER
1257 AS
1258 
1259 BEGIN
1260 
1261 hr_utility.set_location('py_za_tx_01032012.LSDirNetTxbInc',1);
1262 hr_utility.set_location('Processing Directive Number:     '|| p_Dir_Num,1);
1263 
1264 p_LSNetTxbInc := trc_LSNetTxbIncTab(p_Dir_Num).LSTxbIncMTD;
1265 
1266 hr_utility.set_location('p_LSNetTxbInc: '|| p_LSNetTxbInc,1);
1267 
1268 RETURN 1;
1269 
1270 EXCEPTION
1271    WHEN OTHERS THEN
1272       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
1273       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
1274       py_za_tx_utl_01032012.StopHrTrace;
1275       hr_utility.raise_error;
1276 END LSDirNetTxbInc;
1277 
1278 -- Bug 14376752
1279 -------------------------------------------------------------------------------
1280 -- Tax Override Function
1281 -------------------------------------------------------------------------------
1282 FUNCTION ZaTxOvr_01032012(
1283     p_OvrTyp IN VARCHAR2
1284    ,p_TxOnNI IN NUMBER
1285    ,p_TxOnAP IN NUMBER
1286    ,p_TxPrc  IN NUMBER
1287    )RETURN NUMBER
1288 AS
1289    l_Dum NUMBER := 1;
1290 BEGIN
1291    -- Set the Override Global
1292    trc_OvrTxCalc := TRUE;
1293 
1294    -- Set Override Values
1295    trc_OvrTyp  := p_OvrTyp;
1296 
1297    IF p_OvrTyp = 'V' THEN
1298       trc_LibFpNI := p_TxOnNI;
1299       trc_LibFpAP := p_TxOnAP;
1300    ELSIF p_OvrTyp = 'P' THEN
1301       trc_OvrPrc  := p_TxPrc;
1302    END IF;
1303    RETURN l_Dum;
1304 
1305 EXCEPTION
1306    WHEN OTHERS THEN
1307       hr_utility.set_message(801, 'ZaTxOvr_01032012: '||TO_CHAR(SQLCODE));
1308       hr_utility.raise_error;
1309 END ZaTxOvr_01032012;
1310 
1311 -------------------------------------------------------------------------------
1312 --                    Main Tax Calculation Procedures                        --
1313 -------------------------------------------------------------------------------
1314 -------------------------------------------------------------------------------
1315 -- LteCalc
1316 -- This procedure is not called for Late Payments. This is replaced with LteCalc
1317 -- provided below
1318 -- for Bug 8844712
1319 -------------------------------------------------------------------------------
1320 /*
1321 PROCEDURE LteCalc AS
1322 
1323    -- Variables
1324    l_EndDate             DATE;
1325    l_StrtDte             DATE;
1326    l_65Year              DATE;
1327    l_ZA_TX_YR_END        DATE;
1328    l_ZA_ADL_TX_RBT       NUMBER;
1329    l_ZA_PRI_TX_RBT       NUMBER;
1330    l_ZA_PRI_TX_THRSHLD   NUMBER;
1331    l_ZA_SC_TX_THRSHLD    NUMBER;
1332 
1333    l_Sl                  BOOLEAN;
1334    l_Np                  BALANCE DEFAULT 0;
1335 
1336 
1337    -- Private Functions
1338    --
1339       FUNCTION getBalVal
1340          (p_BalNme IN pay_balance_types.balance_name%TYPE
1341          ,p_EffDte   IN DATE
1342          ) RETURN NUMBER
1343       AS
1344          -- Variables
1345          l_BalVal BALANCE;
1346          l_BalTypId pay_balance_types.balance_type_id%TYPE;
1347          l_dimension pay_balance_dimensions.dimension_name%TYPE ;
1348 
1349       BEGIN
1350          hr_utility.set_location('py_za_tx_01032012.LteCalc',1);
1351          -- Get the Balance Type ID
1352          SELECT pbt.balance_type_id
1353            INTO l_BalTypId
1354            FROM pay_balance_types pbt
1355           WHERE pbt.balance_name = p_BalNme
1356            AND  pbt.legislation_code = 'ZA';
1357 
1358          hr_utility.set_location('py_za_tx_01032012.LteCalc',2);
1359 
1360          -- Get the Balance Value
1361          l_dimension := '_ASG_TAX_YTD';
1362          l_BalVal := py_za_bal.get_balance_value
1363                                       ( con_ASG_ID
1364                                       , l_BalTypId
1365                                       , l_dimension
1366                                       , p_EffDte
1367                                       );
1368          RETURN l_BalVal;
1369       END getBalVal;
1370 
1371       FUNCTION getBalVal2
1372          (p_BalNme IN pay_balance_types.balance_name%TYPE
1373          ,p_EffDte   IN DATE
1374          ) RETURN NUMBER
1375       AS
1376          -- Variables
1377          l_BalVal BALANCE;
1378          l_BalTypId pay_balance_types.balance_type_id%TYPE;
1379          l_dimension pay_balance_dimensions.dimension_name%TYPE ;
1380       BEGIN
1381          hr_utility.set_location('py_za_tx_01032012.LteCalc',3);
1382          -- Get the Balance Type ID
1383          SELECT pbt.balance_type_id
1384            INTO l_BalTypId
1385            FROM pay_balance_types pbt
1386           WHERE pbt.balance_name = p_BalNme;
1387 
1388          hr_utility.set_location('py_za_tx_01032012.LteCalc',4);
1389 
1390          -- Get the Balance Value
1391          l_dimension := '_ASG_ITD';
1392          l_BalVal := py_za_bal.get_balance_value
1393                                        ( con_ASG_ID
1394                                        , l_BalTypId
1395                                        , l_dimension
1396                                        , p_EffDte
1397                                        );
1398          RETURN l_BalVal;
1399       END getBalVal2;
1400 
1401 BEGIN
1402    hr_utility.set_location('py_za_tx_01032012.LteCalc',5);
1403    -- Does the Assignment have an OFigure?
1404    --
1405    IF bal_TOT_TXB_INC_ITD <= 0 THEN
1406       hr_utility.set_location('py_za_tx_01032012.LteCalc',6);
1407       -- Calculate the 'O' Figure
1408       -- Set the Global
1409       trc_CalTyp := 'PstCalc';
1410       -- Set the Site Factor to the value of the previous tax year
1411       l_StrtDte := dbi_ZA_ASG_TX_YR_STRT;
1412       l_EndDate := dbi_ZA_ASG_TX_YR_END;
1413       hr_utility.set_location('py_za_tx_01032012.LteCalc',8);
1414 
1415       trc_SitFactor := (l_EndDate - l_StrtDte + 1) / py_za_tx_utl_01032012.DaysWorked;
1416       hr_utility.set_location('py_za_tx_01032012.LteCalc',9);
1417 
1418       -- Populate Local Balance Variables
1419       -- The PTD Globals are used as dummy to store the previous tax year's
1420       -- Balance values
1421 
1422       bal_ANN_ARR_PF_PTD           := getBalVal('Annual Arrear Pension Fund',l_EndDate);
1423       bal_ANN_ARR_RA_PTD           := getBalVal('Annual Arrear Retirement Annuity',l_EndDate);
1424       bal_ANN_PF_PTD               := getBalVal('Annual Pension Fund',l_EndDate);
1425       bal_ANN_RA_PTD               := getBalVal('Annual Retirement Annuity',l_EndDate);
1426       bal_ARR_PF_PTD               := getBalVal('Arrear Pension Fund',l_EndDate);
1427       bal_ARR_RA_PTD               := getBalVal('Arrear Retirement Annuity',l_EndDate);
1428       bal_BP_PTD                   := getBalVal('Bonus Provision',l_EndDate);
1429       bal_CUR_PF_PTD               := getBalVal('Current Pension Fund',l_EndDate);
1430       bal_CUR_RA_PTD               := getBalVal('Current Retirement Annuity',l_EndDate);
1431       bal_EXC_ARR_PEN_PTD          := getBalVal2('Excess Arrear Pension',l_EndDate);
1432       bal_EXC_ARR_RA_PTD           := getBalVal2('Excess Arrear Retirement Annuity',l_EndDate);
1433       bal_MED_CONTR_PTD            := getBalVal('Medical Aid Contribution',l_EndDate);
1434       bal_MED_CNTRB_ABM_PTD        := getBalVal('Medical Contributions Abatement',l_EndDate);
1435       bal_ANN_MED_CNTRB_ABM_PTD    := getBalVal('Annual Medical Contributions Abatement',l_EndDate);
1436       bal_TOT_INC_PTD              := getBalVal('Total Income',l_EndDate);
1437       bal_TOT_NRFI_AN_INC_PTD      := getBalVal('Total NRFIable Annual Income',l_EndDate);
1438       bal_TOT_NRFI_INC_PTD         := getBalVal('Total NRFIable Income',l_EndDate);
1439       bal_TOT_RFI_AN_INC_PTD       := getBalVal('Total RFIable Annual Income',l_EndDate);
1440       bal_TOT_RFI_INC_PTD          := getBalVal('Total RFIable Income',l_EndDate);
1441       bal_TOT_TXB_AB_PTD           := getBalVal('ZATax Total Taxable Annual Bonus',l_EndDate);
1442       bal_TOT_TXB_AP_PTD           := getBalVal('ZATax Total Taxable Annual Payments',l_EndDate);
1443       bal_TOT_TXB_FB_PTD           := getBalVal('ZATax Total Taxable Fringe Benefits',l_EndDate);
1444       bal_TOT_TXB_NI_PTD           := getBalVal('ZATax Total Taxable Normal Income',l_EndDate);
1445       bal_TOT_TXB_TA_PTD           := getBalVal('ZATax Total Taxable Travel Allowance',l_EndDate);
1446       bal_TOT_TXB_PO_PTD           := getBalVal('ZATax Total Taxable Public Office Allowance',l_EndDate);
1447       --NTG
1448       bal_TOT_TXB_AP_NTG_PTD       := getBalVal('ZATax Total Taxable Annual Payments NTG',l_EndDate);
1449       bal_TOT_TXB_EE_DBT_NTG_PTD   := getBalVal('ZATax Total Taxable Ann Pymnt of EE Debt NTG',l_EndDate);
1450       --End NTG
1451 
1452       --TYS2010
1453       bal_ANN_DONAT_MD_EE_PTD      := getBalVal('Annual Donations made by EE and paid by ER',l_EndDate);
1454       bal_DONAT_MD_EE_PTD          := getBalVal('Donations made by EE and paid by ER',l_EndDate);
1455 
1456 
1457       hr_utility.set_location('py_za_tx_01032012.LteCalc',10);
1458 
1459       -- Update Globals with Correct Taxable Values
1460       Fix for bug#10372926
1461       --py_za_tx_utl_01032012.TrvAll;
1462 
1463       -- Bug 8691928
1464       -- removed newlines between various operands of the expression
1465       bal_TOT_TXB_PO_PTD  := bal_TOT_TXB_PO_PTD * py_za_tx_utl_01032012.GlbVal('ZA_PUBL_TAX_PERC',l_EndDate) / 100;
1466       hr_utility.set_location('py_za_tx_01032012.LteCalc',11);
1467 
1468       -- Rebates
1469       py_za_tx_utl_01032012.SetRebates;
1470       -- Abatements
1471       py_za_tx_utl_01032012.Abatements;
1472 
1473       hr_utility.set_location('py_za_tx_01032012.LteCalc',12);
1474 
1475       -- Base Earnings
1476       --
1477        trc_BseErn :=
1478          ( ( bal_TOT_TXB_NI_PTD
1479            + bal_TOT_TXB_FB_PTD
1480            + bal_TOT_TXB_TA_PTD
1481            + bal_TOT_TXB_PO_PTD
1482            + bal_BP_PTD
1483          )* trc_SitFactor
1484          )
1485          + bal_TOT_TXB_AB_PTD
1486          + bal_TOT_TXB_AP_PTD
1487          -- Added for NTG
1488          + bal_TOT_TXB_AP_NTG_PTD
1489          + bal_TOT_TXB_EE_DBT_NTG_PTD;
1490       -- Taxable Base Income
1491       --TYS2010
1492       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1493 /*
1494       trc_TxbBseIncWoDon := trc_BseErn - trc_AnnTotNTGAbm;
1495       trc_TxbBseInc :=trc_TxbBseIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbBseIncWoDon,trc_AnnDonAmt);
1496 
1497       -- Threshold Check
1498       IF trc_TxbBseInc >= trc_Threshold THEN
1499          hr_utility.set_location('py_za_tx_01032012.LteCalc',13);
1500       -- Tax Liability
1501          trc_TotLibBse := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbBseInc);
1502       ELSE
1503          hr_utility.set_location('py_za_tx_01032012.LteCalc',14);
1504          trc_TotLibBse := 0;
1505       END IF;
1506 
1507       -- Populate the O Figure
1508       trc_OUpdFig := trc_TxbBseInc - bal_TOT_TXB_INC_ITD;
1509 
1510       -- Base Income
1511       WrtHrTrc('trc_BseErn:    '||to_char(trc_BseErn));
1512       WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
1513       WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
1514 
1515    ELSE
1516       hr_utility.set_location('py_za_tx_01032012.LteCalc',15);
1517       -- Use the 'O' Figure as Base
1518       -- Set the Global
1519       trc_CalTyp := 'LteCalc';
1520 
1521       -- Get the assignment's previous tax year's
1522       -- threshold and rebate figures
1523       -- Employee Tax Year Start and End Dates
1524       l_EndDate  := dbi_ZA_ASG_TX_YR_END;
1525 
1526       hr_utility.set_location('py_za_tx_01032012.LteCalc',16);
1527 
1528       -- Global Values
1529       l_ZA_TX_YR_END        := l_EndDate;
1530       l_ZA_ADL_TX_RBT       := py_za_tx_utl_01032012.GlbVal('ZA_ADDITIONAL_TAX_REBATE',l_EndDate);
1531       l_ZA_PRI_TX_RBT       := py_za_tx_utl_01032012.GlbVal('ZA_PRIMARY_TAX_REBATE',l_EndDate);
1532       l_ZA_PRI_TX_THRSHLD   := py_za_tx_utl_01032012.GlbVal('ZA_PRIM_TAX_THRESHOLD',l_EndDate);
1533       l_ZA_SC_TX_THRSHLD    := py_za_tx_utl_01032012.GlbVal('ZA_SEC_TAX_THRESHOLD',l_EndDate);
1534 
1535       -- Calculate the assignments 65 Year Date
1536       l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
1537 
1538       IF l_65Year <= l_ZA_TX_YR_END THEN
1539          hr_utility.set_location('py_za_tx_01032012.LteCalc',17);
1540          -- give the extra abatement
1541          trc_Rebate    := l_ZA_PRI_TX_RBT + l_ZA_ADL_TX_RBT;
1542          trc_Threshold := l_ZA_SC_TX_THRSHLD;
1543       ELSE
1544          hr_utility.set_location('py_za_tx_01032012.LteCalc',18);
1545          -- not eligable for extra abatement
1546          trc_Rebate    := l_ZA_PRI_TX_RBT;
1547          trc_Threshold := l_ZA_PRI_TX_THRSHLD;
1548       END IF;
1549 
1550 
1551    -- Base Earnings
1552    --
1553       -- Take the OFigure as Taxable Base Income
1554       trc_TxbBseInc := bal_TOT_TXB_INC_ITD;
1555       -- Threshold Check
1556       IF trc_TxbBseInc >= trc_Threshold THEN
1557          hr_utility.set_location('py_za_tx_01032012.LteCalc',19);
1558          -- Tax Liability
1559          trc_TotLibBse := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbBseInc);
1560       ELSE
1561          hr_utility.set_location('py_za_tx_01032012.LteCalc',20);
1562          trc_TotLibBse := 0;
1563       END IF;
1564 
1565       -- Base Income
1566       WrtHrTrc('trc_BseErn:    '||to_char(trc_BseErn));
1567       WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
1568       WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
1569    END IF;
1570 
1571    -- Override the Global
1572    trc_CalTyp := 'LteCalc';
1573    -- Set the SitFactor back to 1
1574    trc_SitFactor := 1;
1575 
1576    hr_utility.set_location('py_za_tx_01032012.LteCalc',21);
1577 
1578    -- Rebates
1579    py_za_tx_utl_01032012.SetRebates;
1580    -- Abatements
1581    py_za_tx_utl_01032012.Abatements;
1582 
1583    hr_utility.set_location('py_za_tx_01032012.LteCalc',22);
1584 
1585    -- Update Global Balance Values with correct TAXABLE values
1586    Fix for bug#10372926
1587    --py_za_tx_utl_01032012.TrvAll;
1588 
1589    bal_TOT_TXB_PO_YTD  := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
1590 
1591 -- Normal Income
1592 --
1593    -- Ytd Normal Income
1594    trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
1595    -- Skip the calculation if there is No Income
1596    IF trc_NorIncYtd <> 0 THEN
1597       hr_utility.set_location('py_za_tx_01032012.LteCalc',23);
1598       -- Normal Earnings
1599       trc_NorErn := trc_NorIncYtd + trc_TxbBseInc;
1600       -- Taxable Normal Income
1601       --TYS2010
1602       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1603       trc_TxbNorIncWoDon := trc_NorErn - trc_PerTotAbm;
1604       trc_TxbNorInc :=trc_TxbNorIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbNorIncWoDon,trc_PerDonAmt);
1605 
1606       -- Threshold Check
1607       IF trc_TxbNorInc >= trc_Threshold THEN
1608          hr_utility.set_location('py_za_tx_01032012.LteCalc',24);
1609          -- Tax Liability
1610          trc_TotLibNI := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbNorInc);
1611          trc_LibFyNI  := trc_TotLibNI - least(trc_TotLibNI,trc_TotLibBse);
1612          trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibBse);
1613          trc_LibFpNI  := trc_LibFyNI - bal_TX_ON_NI_YTD;
1614       ELSE
1615          hr_utility.set_location('py_za_tx_01032012.LteCalc',25);
1616          -- Set Cascade Figures and Refund
1617          trc_TotLibNI   := 0;
1618          trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
1619          trc_LibFpNIOvr := TRUE;
1620       END IF;
1621    ELSE
1622       hr_utility.set_location('py_za_tx_01032012.LteCalc',26);
1623       -- Set Cascade Figures and Refund
1624       trc_NorErn     := trc_TxbBseInc;
1625       trc_TxbNorInc  := 0;
1626       trc_TotLibNI   := trc_TotLibBse;
1627       trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
1628       trc_LibFpNIOvr := TRUE;
1629    END IF;
1630 
1631 -- Fringe Benefits
1632 --
1633    trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
1634    -- Skip the calculation if there is No Income
1635    IF trc_FrnBenYtd <> 0 THEN
1636       hr_utility.set_location('py_za_tx_01032012.LteCalc',27);
1637       -- Fringe Benefit Earnings
1638       trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
1639       -- Taxable Fringe Income
1640       --TYS2010
1641       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1642       trc_TxbFrnIncWoDon := trc_FrnBenErn - trc_PerTotAbm;
1643       trc_TxbFrnInc :=trc_TxbFrnIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbFrnIncWoDon,trc_PerDonAmt);
1644 
1645       -- Threshold Check
1646       IF trc_TxbFrnInc >= trc_Threshold THEN
1647          hr_utility.set_location('py_za_tx_01032012.LteCalc',28);
1648          -- Tax Liability
1649          trc_TotLibFB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbFrnInc);
1650          trc_LibFyFB  := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
1651          trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
1652          trc_LibFpFB  := trc_LibFyFB - bal_TX_ON_FB_YTD;
1653       ElSE
1654          hr_utility.set_location('py_za_tx_01032012.LteCalc',29);
1655          -- Set Cascade Figures and Refund
1656          trc_TotLibFB   := trc_TotLibNI;
1657          trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
1658          trc_LibFpFBOvr := TRUE;
1659       END IF;
1660    ELSE
1661       hr_utility.set_location('py_za_tx_01032012.LteCalc',30);
1662       -- Set Cascade Figures and Refund
1663       trc_FrnBenErn  := trc_NorErn;
1664       trc_TxbFrnInc  := trc_TxbNorInc;
1665       trc_TotLibFB   := trc_TotLibNI;
1666       trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
1667       trc_LibFpFBOvr := TRUE;
1668    END IF;
1669 
1670 -- Travel Allowance
1671 --
1672    -- Ytd Travel Allowance
1673    trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
1674    -- Skip the calculation if there is No Income
1675    IF trc_TrvAllYtd <> 0 THEN
1676       hr_utility.set_location('py_za_tx_01032012.LteCalc',31);
1677       -- Travel Earnings
1678       trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
1679       -- Taxable Travel Income
1680       --TYS2010
1681       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1682       trc_TxbTrvIncWoDon := trc_TrvAllErn - trc_PerTotAbm;
1683       trc_TxbTrvInc :=trc_TxbTrvIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbTrvIncWoDon,trc_PerDonAmt);
1684 
1685       -- Threshold Check
1686       IF trc_TxbTrvInc >= trc_Threshold THEN
1687          hr_utility.set_location('py_za_tx_01032012.LteCalc',32);
1688          -- Tax Liability
1689          trc_TotLibTA := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbTrvInc);
1690          trc_LibFyTA  := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
1691          trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
1692          trc_LibFpTA  := trc_LibFyTA - bal_TX_ON_TA_YTD;
1693       ELSE
1694          hr_utility.set_location('py_za_tx_01032012.LteCalc',33);
1695          -- Set Cascade Figures and Refund
1696          trc_TotLibTA   := trc_TotLibFB;
1697          trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
1698          trc_LibFpTAOvr := TRUE;
1699       END IF;
1700    ELSE
1701       hr_utility.set_location('py_za_tx_01032012.LteCalc',34);
1702       -- Set Cascade Figures and Refund
1703       trc_TrvAllErn  := trc_FrnBenErn;
1704       trc_TxbTrvInc  := trc_TxbFrnInc;
1705       trc_TotLibTA   := trc_TotLibFB;
1706       trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
1707       trc_LibFpTAOvr := TRUE;
1708    END IF;
1709 
1710 -- Annual Bonus
1711 --
1712    -- Ytd Annual Bonus
1713    trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
1714    -- Skip the calculation if there is No Income
1715    IF trc_AnnBonYtd <> 0 THEN
1716       hr_utility.set_location('py_za_tx_01032012.LteCalc',35);
1717       -- Annual Bonus Earnings
1718       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
1719       -- Taxable Annual Bonus Income
1720       --TYS2010
1721       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1722       trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
1723       trc_TxbAnnBonInc :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
1724 
1725       -- Threshold Check
1726       IF trc_TxbAnnBonInc >= trc_Threshold THEN
1727          hr_utility.set_location('py_za_tx_01032012.LteCalc',36);
1728          -- Tax Liability
1729          trc_TotLibAB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnBonInc);
1730          trc_LibFyAB  := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
1731          trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
1732          trc_LibFpAB  := trc_LibFyAB - bal_TX_ON_AB_YTD;
1733       ELSE
1734          hr_utility.set_location('py_za_tx_01032012.LteCalc',39);
1735          -- Set Cascade Figures and Refund
1736          trc_TotLibAB   := trc_TotLibTA;
1737          trc_LibFpAB    := -1 * bal_TX_ON_AB_YTD;
1738          trc_LibFpABOvr := TRUE;
1739       END IF;
1740    ELSE
1741       hr_utility.set_location('py_za_tx_01032012.LteCalc',40);
1742       -- Set Cascade Figures and Refund
1743       trc_AnnBonErn    := trc_TrvAllErn;
1744       trc_TxbAnnBonInc := trc_TxbTrvInc;
1745       trc_TotLibAB     := trc_TotLibTA;
1746       trc_LibFpAB      := -1 * bal_TX_ON_AB_YTD;
1747       trc_LibFpABOvr   := TRUE;
1748    END IF;
1749 
1750 -- Annual Payments
1751 --
1752    -- Ytd Annual Payments
1753    trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
1754    -- Skip the calculation if there is No Income
1755    IF trc_AnnPymYtd <> 0 THEN
1756       hr_utility.set_location('py_za_tx_01032012.LteCalc',41);
1757       -- Annual Payments Earnings
1758       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
1759       -- Taxable Annual Payments Income
1760       --TYS2010
1761       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1762       trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
1763       trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
1764 
1765       -- Threshold Check
1766       IF trc_TxbAnnPymInc >= trc_Threshold THEN
1767          hr_utility.set_location('py_za_tx_01032012.LteCalc',42);
1768          -- Tax Liability
1769          trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1770          trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
1771          trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
1772          trc_LibFpAP  := trc_LibFyAP - bal_TX_ON_AP_YTD;
1773       ELSE
1774          hr_utility.set_location('py_za_tx_01032012.LteCalc',45);
1775          -- Set Cascade Figures and Refund
1776          trc_TotLibAP   := trc_TotLibAB;
1777          trc_LibFpAP    := -1 * bal_TX_ON_AP_YTD;
1778          trc_LibFpAPOvr := TRUE;
1779       END IF;
1780    ELSE
1781       hr_utility.set_location('py_za_tx_01032012.LteCalc',46);
1782       -- Set Cascade Figures and Refund
1783       trc_AnnPymErn    := trc_AnnBonErn;
1784       trc_TxbAnnPymInc := trc_TxbAnnBonInc;
1785       trc_TotLibAP     := trc_TotLibAB;
1786       trc_LibFpAP      := -1 * bal_TX_ON_AP_YTD;
1787       trc_LibFpAPOvr   := TRUE;
1788    END IF;
1789 
1790 -- Public Office Allowance
1791 --
1792    -- Ytd Public Office Allowance
1793    trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
1794    -- Skip the calculation if there is No Income
1795    IF trc_PblOffYtd <> 0 THEN
1796       hr_utility.set_location('py_za_tx_01032012.LteCalc',47);
1797       -- Public Office Allowance Earnings
1798       trc_PblOffErn := trc_PblOffYtd + trc_AnnPymErn;
1799       -- Taxable Public Office Allowance
1800       --TYS2010
1801       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1802       trc_TxbPblOffIncWoDon := trc_PblOffErn - trc_AnnTotAbm;
1803       trc_TxbPblOffInc :=trc_TxbPblOffIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbPblOffIncWoDon,trc_AnnDonAmt);
1804 
1805       -- Threshold Check
1806       IF trc_TxbPblOffInc >= trc_Threshold THEN
1807          hr_utility.set_location('py_za_tx_01032012.LteCalc',48);
1808          -- Tax Liability
1809          trc_TotLibPO := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbPblOffInc);
1810          trc_LibFyPO  := trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP);
1811          trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
1812          trc_LibFpPO  := trc_LibFyPO - bal_TX_ON_PO_YTD;
1813       ElSE
1814          hr_utility.set_location('py_za_tx_01032012.LteCalc',49);
1815          -- Set Cascade Figures and Refund
1816          trc_TotLibPO   := trc_TotLibPO;
1817          trc_LibFpPO    := -1 * bal_TX_ON_PO_YTD;
1818          trc_LibFpPOOvr := TRUE;
1819       END IF;
1820    ELSE
1821       hr_utility.set_location('py_za_tx_01032012.LteCalc',50);
1822       -- Set Cascade Figures and Refund
1823       trc_PblOffErn     := trc_AnnPymErn;
1824       trc_TxbPblOffInc  := trc_TxbAnnPymInc;
1825       trc_TotLibPO      := trc_TotLibAP;
1826       trc_LibFpPO       := -1 * bal_TX_ON_PO_YTD;
1827       trc_LibFpPOOvr    := TRUE;
1828    END IF;
1829 
1830 -- Net Pay Validation
1831 --
1832    -- Net Pay of the Employee
1833    l_Np := bal_NET_PAY_RUN;
1834    -- Site Limit Check
1835    IF trc_TxbAnnPymInc + trc_PblOffErn < glb_ZA_SIT_LIM THEN
1836       hr_utility.set_location('py_za_tx_01032012.LteCalc',51);
1837       l_Sl := TRUE;
1838    ELSE
1839       hr_utility.set_location('py_za_tx_01032012.LteCalc',52);
1840       l_Sl := FALSE;
1841    END IF;
1842 
1843    py_za_tx_utl_01032012.ValidateTaxOns(p_Rf => l_Sl);
1844 
1845 -- Set IT3A Indicator
1846 --
1847    IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
1848       hr_utility.set_location('py_za_tx_01032012.LteCalc',53);
1849       trc_It3Ind := 0; -- Over Lim
1850    ELSE
1851       hr_utility.set_location('py_za_tx_01032012.LteCalc',54);
1852       trc_It3Ind := 1; -- Under Lim
1853    END IF;
1854 
1855    -- Normal Income
1856    WrtHrTrc('trc_NorIncYtd:       '||to_char(trc_NorIncYtd));
1857    WrtHrTrc('trc_NorIncPtd:       '||to_char(trc_NorIncPtd));
1858    WrtHrTrc('trc_NorErn:          '||to_char(trc_NorErn));
1859    WrtHrTrc('trc_TxbNorInc:       '||to_char(trc_TxbNorInc));
1860    WrtHrTrc('trc_TxbNorIncWoDon:  '||to_char(trc_TxbNorIncWoDon));
1861    WrtHrTrc('trc_TotLibNI:        '||to_char(trc_TotLibNI));
1862    WrtHrTrc('trc_LibFyNI:         '||to_char(trc_LibFyNI));
1863    WrtHrTrc('trc_LibFpNI:         '||to_char(trc_LibFpNI));
1864    -- Fringe Benefits
1865    WrtHrTrc('trc_FrnBenYtd:       '||to_char(trc_FrnBenYtd));
1866    WrtHrTrc('trc_FrnBenPtd:       '||to_char(trc_FrnBenPtd));
1867    WrtHrTrc('trc_FrnBenErn:       '||to_char(trc_FrnBenErn));
1868    WrtHrTrc('trc_TxbFrnInc:       '||to_char(trc_TxbFrnInc));
1869    WrtHrTrc('trc_TxbFrnIncWoDon:  '||to_char(trc_TxbFrnIncWoDon));
1870    WrtHrTrc('trc_TotLibFB:        '||to_char(trc_TotLibFB));
1871    WrtHrTrc('trc_LibFyFB:         '||to_char(trc_LibFyFB));
1872    WrtHrTrc('trc_LibFpFB:         '||to_char(trc_LibFpFB));
1873    -- Travel Allowance
1874    WrtHrTrc('trc_TrvAllYtd:       '||to_char(trc_TrvAllYtd));
1875    WrtHrTrc('trc_TrvAllPtd:       '||to_char(trc_TrvAllPtd));
1876    WrtHrTrc('trc_TrvAllErn:       '||to_char(trc_TrvAllErn));
1877    WrtHrTrc('trc_TxbTrvInc:       '||to_char(trc_TxbTrvInc));
1878    WrtHrTrc('trc_TxbTrvIncWoDon:  '||to_char(trc_TxbTrvIncWoDon));
1879    WrtHrTrc('trc_TotLibTA:        '||to_char(trc_TotLibTA));
1880    WrtHrTrc('trc_LibFyTA:         '||to_char(trc_LibFyTA));
1881    WrtHrTrc('trc_LibFpTA:         '||to_char(trc_LibFpTA));
1882    -- Annual Bonus
1883    WrtHrTrc('trc_AnnBonYtd:       '||to_char(trc_AnnBonYtd));
1884    WrtHrTrc('trc_AnnBonPtd:       '||to_char(trc_AnnBonPtd));
1885    WrtHrTrc('trc_AnnBonErn:       '||to_char(trc_AnnBonErn));
1886    WrtHrTrc('trc_TxbAnnBonInc:    '||to_char(trc_TxbAnnBonInc));
1887    WrtHrTrc('trc_TxbAnnBonIncWoDon:'||to_char(trc_TxbAnnBonIncWoDon));
1888    WrtHrTrc('trc_TotLibAB:        '||to_char(trc_TotLibAB));
1889    WrtHrTrc('trc_LibFyAB:         '||to_char(trc_LibFyAB));
1890    WrtHrTrc('trc_LibFpAB:         '||to_char(trc_LibFpAB));
1891    -- Annual Payments
1892    WrtHrTrc('trc_AnnPymYtd:       '||to_char(trc_AnnPymYtd));
1893    WrtHrTrc('trc_AnnPymPtd:       '||to_char(trc_AnnPymPtd));
1894    WrtHrTrc('trc_AnnPymErn:       '||to_char(trc_AnnPymErn));
1895    WrtHrTrc('trc_TxbAnnPymInc:    '||to_char(trc_TxbAnnPymInc));
1896    WrtHrTrc('trc_TxbAnnPymIncWoDon:'||to_char(trc_TxbAnnPymIncWoDon));
1897    WrtHrTrc('trc_TotLibAP:        '||to_char(trc_TotLibAP));
1898    WrtHrTrc('trc_LibFyAP:         '||to_char(trc_LibFyAP));
1899    WrtHrTrc('trc_LibFpAP:         '||to_char(trc_LibFpAP));
1900    -- Pubilc Office Allowance
1901    WrtHrTrc('trc_PblOffYtd:       '||to_char(trc_PblOffYtd));
1902    WrtHrTrc('trc_PblOffPtd:       '||to_char(trc_PblOffPtd));
1903    WrtHrTrc('trc_PblOffErn:       '||to_char(trc_PblOffErn));
1904    WrtHrTrc('trc_TxbPblOffInc:    '||to_char(trc_TxbPblOffInc));
1905    WrtHrTrc('trc_TxbPblOffIncWoDon:'||to_char(trc_TxbPblOffIncWoDon));
1906    WrtHrTrc('trc_TotLibPO:        '||to_char(trc_TotLibPO));
1907    WrtHrTrc('trc_LibFyPO:         '||to_char(trc_LibFyPO));
1908    WrtHrTrc('trc_LibFpPO:         '||to_char(trc_LibFpPO));
1909 
1910 
1911 
1912 EXCEPTION
1913    WHEN OTHERS THEN
1914       IF xpt_Msg = 'No Error' THEN
1915          xpt_Msg := 'LteCalc: '||TO_CHAR(SQLCODE);
1916       END IF;
1917       RAISE xpt_E;
1918 END LteCalc;
1919 */
1920 
1921 --New procedure for Bug 8844712
1922 --Late Payments must be taxed per 25% for tax statuses for which tax table is used.
1923 PROCEDURE LteCalc AS
1924    l_Sl                  BOOLEAN;
1925    l_Np                  BALANCE DEFAULT 0;
1926 BEGIN
1927    hr_utility.set_location('py_za_tx_01032012.LteCalc',1);
1928    trc_CalTyp := 'LteCalc';
1929    trc_SitFactor := 1;
1930    trc_LateSitePaye := 0;
1931 
1932    --Fix for bug#10372926
1933    --py_za_tx_utl_01032012.TrvAll;
1934    py_za_tx_utl_01032012.SetRebates;
1935 
1936    hr_utility.set_location('py_za_tx_01032012.LteCalc',2);
1937 
1938    bal_TOT_TXB_PO_YTD  := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
1939 
1940 -- Normal Income
1941 --
1942    -- Ytd Normal Income
1943    trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
1944    -- Skip the calculation if there is No Income
1945    IF trc_NorIncYtd <> 0 THEN
1946       hr_utility.set_location('py_za_tx_01032012.LteCalc',3);
1947       -- Normal Earnings
1948       trc_NorErn := trc_NorIncYtd;
1949       -- Tax Liability
1950       trc_TotLibNI := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_NorErn);
1951       trc_LibFyNI  := trc_TotLibNI - 0;
1952       trc_TotLibNI := greatest(trc_TotLibNI,0);
1953       trc_LibFpNI  := trc_LibFyNI - bal_TX_ON_NI_YTD;
1954    ELSE
1955       hr_utility.set_location('py_za_tx_01032012.LteCalc',4);
1956       -- Set Cascade Figures and Refund
1957       trc_NorErn     := 0;
1958       trc_TotLibNI   := 0;
1959       trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
1960       trc_LibFpNIOvr := TRUE;
1961    END IF;
1962 
1963 -- Fringe Benefits
1964 --
1965    -- Ytd Fringe Benefits
1966      trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
1967    -- Skip the calculation if there is No Income
1968    IF trc_FrnBenYtd <> 0 THEN
1969       hr_utility.set_location('py_za_tx_01032012.LteCalc',5);
1970       -- Fringe Benefit Earnings
1971       trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
1972       -- Tax Liability
1973       trc_TotLibFB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_FrnBenErn);
1974       trc_LibFyFB  := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
1975       trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
1976       trc_LibFpFB  := trc_LibFyFB - bal_TX_ON_FB_YTD;
1977    ELSE
1978       hr_utility.set_location('py_za_tx_01032012.LteCalc',6);
1979       -- Set Cascade Figures and Refund
1980       trc_FrnBenErn  := trc_NorErn;
1981       trc_TotLibFB   := trc_TotLibNI;
1982       trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
1983       trc_LibFpFBOvr := TRUE;
1984    END IF;
1985 
1986 -- Travel Allowance
1987 --
1988    -- Ytd Travel Allowance
1989    trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
1990    -- Skip the calculation if there is No Income
1991    IF trc_TrvAllYtd <> 0 THEN
1992       hr_utility.set_location('py_za_tx_01032012.LteCalc',7);
1993       -- Travel Allowance Earnings
1994       trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
1995       -- Tax Liability
1996       trc_TotLibTA := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TrvAllErn);
1997       trc_LibFyTA  := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
1998       trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
1999       trc_LibFpTA  := trc_LibFyTA - bal_TX_ON_TA_YTD;
2000    ELSE
2001       hr_utility.set_location('py_za_tx_01032012.LteCalc',8);
2002       -- Set Cascade Figures and Refund
2003       trc_TrvAllErn  := trc_FrnBenErn; --Cascade Figure
2004       trc_TotLibTA   := trc_TotLibFB;
2005       trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
2006       trc_LibFpTAOvr := TRUE;
2007    END IF;
2008 
2009 -- Annual Bonus
2010 --
2011    -- Ytd Annual Bonus
2012    trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
2013    -- Skip the calculation if there is No Income
2014    IF trc_AnnBonYtd <> 0 THEN
2015       hr_utility.set_location('py_za_tx_01032012.LteCalc',9);
2016       -- Annual Bonus Earnings
2017       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
2018       -- Tax Liability
2019       trc_TotLibAB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_AnnBonErn);
2020       trc_LibFyAB  := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
2021       trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
2022       -- Check Bonus Provision
2023       trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
2024    ELSE
2025       hr_utility.set_location('py_za_tx_01032012.LteCalc',10);
2026       trc_AnnBonErn  := trc_TrvAllErn;
2027       trc_TotLibAB   := trc_TotLibTA;
2028       trc_LibFpAB    := -1 * bal_TX_ON_BP_YTD;
2029       trc_LibFpABOvr := TRUE;
2030    END IF;
2031 
2032 -- Annual Payments
2033 --
2034    -- Ytd Annual Payments
2035    trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
2036    -- Skip the calculation if there is No Income
2037    IF trc_AnnPymYtd <> 0 THEN
2038       hr_utility.set_location('py_za_tx_01032012.LteCalc',11);
2039       -- Annual Payments Earnings
2040       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
2041       -- Tax Liability
2042       trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_AnnPymErn);
2043       trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
2044       trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
2045       trc_LibFpAP  := trc_LibFyAP - bal_TX_ON_AP_YTD;
2046    ElSE
2047       hr_utility.set_location('py_za_tx_01032012.LteCalc',12);
2048       -- Set Cascade Figures and Refund
2049       trc_AnnPymErn  := trc_AnnBonErn;
2050       trc_TotLibAP   := trc_TotLibAB;
2051       trc_LibFpAP    := -1 * bal_TX_ON_AP_YTD;
2052       trc_LibFpAPOvr := TRUE;
2053    END IF;
2054 
2055 
2056 
2057 -- Public Office Allowance
2058 --
2059    -- Ytd Public Office Allowance
2060    trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
2061    -- Skip the calculation if there is No Income
2062    IF trc_PblOffYtd <> 0 THEN
2063       hr_utility.set_location('py_za_tx_01032012.LteCalc',13);
2064       -- Public Office Allowance Earnings
2065       trc_PblOffErn := trc_PblOffYtd + trc_AnnPymErn;
2066       -- Tax Liability
2067       trc_TotLibPO := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_PblOffErn);
2068       trc_LibFyPO  := trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP);
2069       trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
2070       trc_LibFpPO  := trc_LibFyPO - bal_TX_ON_PO_YTD;
2071    ELSE
2072       hr_utility.set_location('py_za_tx_01032012.LteCalc',14);
2073       -- Set Cascade Figures and Refund
2074       trc_PblOffErn  := trc_AnnPymErn;
2075       trc_TotLibPO   := trc_TotLibAP;
2076       trc_LibFpPO    := -1 * bal_TX_ON_PO_YTD;
2077       trc_LibFpPOOvr := TRUE;
2078    END IF;
2079 
2080    l_Np := bal_NET_PAY_RUN;
2081    -- Site Limit Check
2082    IF trc_PblOffErn < glb_ZA_SIT_LIM THEN
2083       hr_utility.set_location('py_za_tx_01032012.LteCalc',51);
2084       l_Sl := TRUE;
2085    ELSE
2086       hr_utility.set_location('py_za_tx_01032012.LteCalc',52);
2087       l_Sl := FALSE;
2088    END IF;
2089 
2090    py_za_tx_utl_01032012.ValidateTaxOns(p_Rf => l_Sl);
2091 
2092 -- Set IT3A Indicator
2093 --
2094    IF trc_PblOffErn >= trc_Threshold THEN
2095       hr_utility.set_location('py_za_tx_01032012.LteCalc',53);
2096       trc_It3Ind := 0; -- Over Lim
2097    ELSE
2098       hr_utility.set_location('py_za_tx_01032012.LteCalc',54);
2099       trc_It3Ind := 1; -- Under Lim
2100    END IF;
2101 
2102    -- Normal Income
2103    WrtHrTrc('trc_NorIncYtd:       '||to_char(trc_NorIncYtd));
2104    WrtHrTrc('trc_NorErn:          '||to_char(trc_NorErn));
2105    WrtHrTrc('trc_TotLibNI:        '||to_char(trc_TotLibNI));
2106    WrtHrTrc('trc_LibFyNI:         '||to_char(trc_LibFyNI));
2107    WrtHrTrc('trc_LibFpNI:         '||to_char(trc_LibFpNI));
2108    -- Fringe Benefits
2109    WrtHrTrc('trc_FrnBenYtd:       '||to_char(trc_FrnBenYtd));
2110    WrtHrTrc('trc_FrnBenErn:       '||to_char(trc_FrnBenErn));
2111    WrtHrTrc('trc_TotLibFB:        '||to_char(trc_TotLibFB));
2112    WrtHrTrc('trc_LibFyFB:         '||to_char(trc_LibFyFB));
2113    WrtHrTrc('trc_LibFpFB:         '||to_char(trc_LibFpFB));
2114    -- Travel Allowance
2115    WrtHrTrc('trc_TrvAllYtd:       '||to_char(trc_TrvAllYtd));
2116    WrtHrTrc('trc_TrvAllErn:       '||to_char(trc_TrvAllErn));
2117    WrtHrTrc('trc_TotLibTA:        '||to_char(trc_TotLibTA));
2118    WrtHrTrc('trc_LibFyTA:         '||to_char(trc_LibFyTA));
2119    WrtHrTrc('trc_LibFpTA:         '||to_char(trc_LibFpTA));
2120    -- Annual Bonus
2121    WrtHrTrc('trc_AnnBonYtd:       '||to_char(trc_AnnBonYtd));
2122    WrtHrTrc('trc_AnnBonErn:       '||to_char(trc_AnnBonErn));
2123    WrtHrTrc('trc_TotLibAB:        '||to_char(trc_TotLibAB));
2124    WrtHrTrc('trc_LibFyAB:         '||to_char(trc_LibFyAB));
2125    WrtHrTrc('trc_LibFpAB:         '||to_char(trc_LibFpAB));
2126    -- Annual Payments
2127    WrtHrTrc('trc_AnnPymYtd:       '||to_char(trc_AnnPymYtd));
2128    WrtHrTrc('trc_AnnPymErn:       '||to_char(trc_AnnPymErn));
2129    WrtHrTrc('trc_TotLibAP:        '||to_char(trc_TotLibAP));
2130    WrtHrTrc('trc_LibFyAP:         '||to_char(trc_LibFyAP));
2131    WrtHrTrc('trc_LibFpAP:         '||to_char(trc_LibFpAP));
2132    -- Pubilc Office Allowance
2133    WrtHrTrc('trc_PblOffYtd:       '||to_char(trc_PblOffYtd));
2134    WrtHrTrc('trc_PblOffErn:       '||to_char(trc_PblOffErn));
2135    WrtHrTrc('trc_TotLibPO:        '||to_char(trc_TotLibPO));
2136    WrtHrTrc('trc_LibFyPO:         '||to_char(trc_LibFyPO));
2137    WrtHrTrc('trc_LibFpPO:         '||to_char(trc_LibFpPO));
2138 
2139 EXCEPTION
2140    WHEN OTHERS THEN
2141       IF xpt_Msg = 'No Error' THEN
2142          xpt_Msg := 'LteCalc: '||TO_CHAR(SQLCODE);
2143       END IF;
2144       RAISE xpt_E;
2145 
2146 END LteCalc;
2147 
2148 -------------------------------------------------------------------------------
2149 -- SeaCalc                                                                   --
2150 -- Tax Calculation for Seasonal Workers                                      --
2151 -------------------------------------------------------------------------------
2152 PROCEDURE SeaCalc AS
2153 -- Variables
2154 --
2155    l_Np       BALANCE DEFAULT 0;
2156    l_65Year   DATE;
2157    l_75Year   DATE;
2158 BEGIN
2159    hr_utility.set_location('py_za_tx_01032012.SeaCalc',1);
2160 -- Identify the calculation
2161 --
2162    trc_CalTyp := 'SeaCalc';
2163 
2164 -- Period Type Income
2165 --
2166    trc_TxbIncPtd :=
2167       ( bal_TOT_TXB_NI_RUN
2168       + bal_TOT_TXB_FB_RUN
2169       );
2170 -- Check if any Period Income Exists
2171 --
2172    hr_utility.set_location('py_za_tx_01032012.SeaCalc',2);
2173    IF trc_TxbIncPtd = 0 THEN -- Pre-Earnings Calc
2174       hr_utility.set_location('py_za_tx_01032012.SeaCalc',3);
2175       -- Site Factor
2176       --
2177       trc_SitFactor := glb_ZA_WRK_DYS_PR_YR / dbi_SEA_WRK_DYS_WRK;
2178 
2179       -- Tax Rebates, Threshold Figure and Medical Aid
2180       -- Abatements
2181       -- Calculate the assignments 65 Year Date
2182       l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
2183       l_75Year := add_months(dbi_PER_DTE_OF_BRTH,900);
2184 
2185      IF l_75Year BETWEEN dbi_ZA_TX_YR_STRT AND dbi_ZA_TX_YR_END THEN
2186         hr_utility.set_location('py_za_tx_01032012.SeaCalc',31);
2187          -- give the extra abatement
2188          trc_Rebate    := glb_ZA_PRI_TX_RBT + glb_ZA_ADL_TX_RBT+glb_ZA_TRI_TX_RBT;
2189          trc_Threshold := glb_ZA_TRI_TX_THRSHLD;
2190      ELSIF l_65Year BETWEEN dbi_ZA_TX_YR_STRT AND dbi_ZA_TX_YR_END THEN
2191          hr_utility.set_location('py_za_tx_01032012.SeaCalc',4);
2192          -- give the extra abatement
2193          trc_Rebate    := glb_ZA_PRI_TX_RBT + glb_ZA_ADL_TX_RBT;
2194          trc_Threshold := glb_ZA_SC_TX_THRSHLD;
2195       ELSE
2196          hr_utility.set_location('py_za_tx_01032012.SeaCalc',5);
2197          -- not eligable for extra abatement
2198          trc_Rebate    := glb_ZA_PRI_TX_RBT;
2199          trc_Threshold := glb_ZA_PRI_TX_THRSHLD;
2200       END IF;
2201 
2202    -- Base Income
2203    --
2204       -- Base Income
2205       trc_BseErn := bal_TOT_TXB_AP_RUN;
2206       -- Taxable Base Income
2207       trc_TxbBseInc := trc_BseErn * trc_SitFactor;
2208       -- Threshold Check
2209       IF trc_TxbBseInc >= trc_Threshold THEN
2210          hr_utility.set_location('py_za_tx_01032012.SeaCalc',6);
2211          -- Tax Liability
2212          trc_TotLibBse := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbBseInc);
2213       ELSE
2214          hr_utility.set_location('py_za_tx_01032012.SeaCalc',7);
2215          trc_TotLibBse := 0;
2216       END IF;
2217 
2218    -- Annual Payments
2219    --
2220       -- Taxable Annual Payments Income
2221       trc_TxbAnnPymInc := trc_BseErn + trc_TxbBseInc;-- AP was taken as base!
2222       -- Threshold Check
2223       IF trc_TxbAnnPymInc >= trc_Threshold THEN
2224          hr_utility.set_location('py_za_tx_01032012.SeaCalc',8);
2225          -- Tax Liability
2226          trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2227          trc_LibFpAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibBse);
2228       ElSE
2229          hr_utility.set_location('py_za_tx_01032012.SeaCalc',9);
2230          trc_LibFpAP := 0;
2231       END IF;
2232 
2233       -- Base Income
2234       WrtHrTrc('trc_BseErn: '      ||to_char(trc_BseErn));
2235       WrtHrTrc('trc_TxbBseInc: '   ||to_char(trc_TxbBseInc));
2236       WrtHrTrc('trc_TotLibBse: '   ||to_char(trc_TotLibBse));
2237       -- Annual Payments
2238       WrtHrTrc('trc_AnnPymYtd: '   ||to_char(trc_AnnPymYtd));
2239       WrtHrTrc('trc_AnnPymPtd: '   ||to_char(trc_AnnPymPtd));
2240       WrtHrTrc('trc_AnnPymErn: '   ||to_char(trc_AnnPymErn));
2241       WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2242       WrtHrTrc('trc_TotLibAP: '    ||to_char(trc_TotLibAP));
2243       WrtHrTrc('trc_LibFyAP: '     ||to_char(trc_LibFyAP));
2244       WrtHrTrc('trc_LibFpAP: '     ||to_char(trc_LibFpAP));
2245 
2246 
2247    ELSE
2248       hr_utility.set_location('py_za_tx_01032012.SeaCalc',10);
2249       -- Site Factor
2250       --
2251       trc_SitFactor := glb_ZA_WRK_DYS_PR_YR / dbi_SEA_WRK_DYS_WRK;
2252 
2253       -- Rebates
2254       py_za_tx_utl_01032012.SetRebates;
2255 
2256       -- Abatements
2257       py_za_tx_utl_01032012.Abatements;
2258 
2259 
2260       trc_curMedTxCrEle := greatest(bal_MED_AID_TAX_CR_RUN + bal_ANN_MED_AID_TAX_CR_RUN,0);
2261 
2262    hr_utility.set_location('py_za_tx_01032012.SeaCalc',11);
2263 
2264    -- Normal Income
2265      --
2266       -- Run Normal Income
2267       trc_NorIncPtd := bal_TOT_TXB_NI_RUN;
2268       -- Skip the calculation if there is No Income
2269       IF trc_NorIncPtd <> 0 THEN
2270          hr_utility.set_location('py_za_tx_01032012.SeaCalc',12);
2271          -- Normal Earnings
2272          trc_NorErn := trc_NorIncPtd * trc_SitFactor;
2273           --TYS2010
2274          --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2275          -- Taxable Normal Income
2276          trc_TxbNorIncWoDon := trc_NorErn - trc_PerTotAbm;
2277          trc_TxbNorInc :=trc_TxbNorIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbNorIncWoDon,trc_PerDonAmt);
2278 
2279          -- Threshold Check
2280          IF trc_TxbNorInc >= trc_Threshold THEN
2281             hr_utility.set_location('py_za_tx_01032012.SeaCalc',13);
2282             -- Tax Liability
2283             trc_TotLibNI := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbNorInc);
2284             trc_LibFyNI  := trc_TotLibNI - 0;
2285             trc_TotLibNI := greatest(trc_TotLibNI,0);
2286             trc_LibFpNI  := (trc_LibFyNI / trc_SitFactor) + bal_MED_TAX_CR_USED_NI_RUN;
2287 
2288             -- Start Medical Tax Credit Changes
2289             py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2290                                  (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
2291                                  ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_NI_RUN
2292                                  ,p_Tx_RUN               => trc_LibFpNI
2293                                  ,p_Tx_YTD               => 0
2294                                  ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedNI
2295                                  ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedNI_Upd
2296                                   );
2297             trc_LibFpNI_Upd := trc_LibFpNI - trc_MedTxCrUsedNI_Upd;
2298             trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNI,0);
2299             hr_utility.set_location('    trc_MedTxCrUsedNI:'||trc_MedTxCrUsedNI,10);
2300             hr_utility.set_location('trc_MedTxCrUsedNI_Upd:'||trc_MedTxCrUsedNI_Upd,10);
2301             hr_utility.set_location('      trc_LibFpNI_Upd:'||trc_LibFpNI_Upd,10);
2302             hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2303             -- End Medical Tax Credit Changes
2304 
2305          ELSE
2306             hr_utility.set_location('py_za_tx_01032012.SeaCalc',14);
2307             trc_TotLibNI := 0;
2308          END IF;
2309       ELSE
2310          hr_utility.set_location('py_za_tx_01032012.SeaCalc',15);
2311          trc_NorErn    := 0;
2312          trc_TxbNorInc := 0;
2313          trc_TotLibNI  := 0;
2314       END IF;
2315 
2316    -- Fringe Benefits
2317    --
2318       -- Run Fringe Benefits
2319       trc_FrnBenPtd := bal_TOT_TXB_FB_RUN;
2320       -- Skip the calculation if there is No Income
2321       IF trc_FrnBenPtd <> 0 THEN
2322          hr_utility.set_location('py_za_tx_01032012.SeaCalc',16);
2323          -- Fringe Benefit Earnings
2324          trc_FrnBenErn := trc_FrnBenPtd * trc_SitFactor + trc_NorErn;
2325           --TYS2010
2326           --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2327           -- Taxable Fringe Income
2328          trc_TxbFrnIncWoDon := trc_FrnBenErn - trc_PerTotAbm;
2329          trc_TxbFrnInc :=trc_TxbFrnIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbFrnIncWoDon,trc_PerDonAmt);
2330          -- Threshold Check
2331          IF trc_TxbFrnInc >= trc_Threshold THEN
2332             hr_utility.set_location('py_za_tx_01032012.SeaCalc',17);
2333             -- Tax Liability
2334             trc_TotLibFB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbFrnInc);
2335             trc_LibFyFB  := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
2336             trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
2337             trc_LibFpFB  := (trc_LibFyFB / trc_SitFactor) + bal_MED_TAX_CR_USED_FB_RUN;
2338 
2339             -- Start Medical Tax Credit Changes
2340             py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2341                                  (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
2342                                  ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_FB_RUN
2343                                  ,p_Tx_RUN               => trc_LibFpFB
2344                                  ,p_Tx_YTD               => 0
2345                                  ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedFB
2346                                  ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedFB_Upd
2347                                   );
2348             trc_LibFpFB_Upd := trc_LibFpFB - trc_MedTxCrUsedFB_Upd;
2349             trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedFB,0);
2350             hr_utility.set_location('    trc_MedTxCrUsedFB:'||trc_MedTxCrUsedFB,10);
2351             hr_utility.set_location('trc_MedTxCrUsedFB_Upd:'||trc_MedTxCrUsedFB_Upd,10);
2352             hr_utility.set_location('      trc_LibFpFB_Upd:'||trc_LibFpFB_Upd,10);
2353             hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2354             -- End Medical Tax Credit Changes
2355 
2356          ELSE
2357             hr_utility.set_location('py_za_tx_01032012.SeaCalc',18);
2358             trc_TotLibFB := trc_TotLibNI;
2359          END IF;
2360       ELSE
2361          hr_utility.set_location('py_za_tx_01032012.SeaCalc',19);
2362          trc_FrnBenErn := trc_NorErn;
2363          trc_TxbFrnInc := trc_TxbNorInc;
2364          trc_TotLibFB  := trc_TotLibNI;
2365       END IF;
2366 
2367  -- Annual Payments
2368    --
2369       -- Run Annual Payments
2370       trc_AnnPymPtd :=  bal_TOT_TXB_AP_RUN;
2371       -- Skip the calculation if there is No Income
2372       IF trc_AnnPymPtd <> 0 THEN
2373          hr_utility.set_location('py_za_tx_01032012.SeaCalc',20);
2374          -- Annual Payments Earnings
2375          trc_AnnPymErn := trc_AnnPymPtd + trc_FrnBenErn;
2376 
2377          --TYS2010
2378          --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2379          -- Taxable Annual Payments Income
2380          trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
2381          trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
2382 
2383          -- Threshold Check
2384          IF trc_TxbAnnPymInc >= trc_Threshold THEN
2385             hr_utility.set_location('py_za_tx_01032012.SeaCalc',21);
2386             -- Tax Liability
2387             trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2388             trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibFB);
2389             trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibFB);
2390             trc_LibFpAP  := trc_LibFyAP + bal_MED_TAX_CR_USED_AP_RUN;
2391 
2392             -- Start Medical Tax Credit Changes
2393             py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2394                                  (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
2395                                  ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AP_RUN
2396                                  ,p_Tx_RUN               => trc_LibFpAP
2397                                  ,p_Tx_YTD               => 0
2398                                  ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAP
2399                                  ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAP_Upd
2400                                   );
2401             trc_LibFpAP_Upd := trc_LibFpAP - trc_MedTxCrUsedAP_Upd;
2402             trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAP,0);
2403             hr_utility.set_location('    trc_MedTxCrUsedAP:'||trc_MedTxCrUsedAP,10);
2404             hr_utility.set_location('trc_MedTxCrUsedAP_Upd:'||trc_MedTxCrUsedAP_Upd,10);
2405             hr_utility.set_location('      trc_LibFpAP_Upd:'||trc_LibFpAP_Upd,10);
2406             hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2407             -- End Medical Tax Credit Changes
2408 
2409          ELSE
2410             hr_utility.set_location('py_za_tx_01032012.SeaCalc',22);
2411             trc_TotLibAP := trc_TotLibFB;
2412          END IF;
2413       ELSE
2414          hr_utility.set_location('py_za_tx_01032012.SeaCalc',23);
2415          trc_AnnPymErn    := trc_FrnBenErn;
2416          trc_TxbAnnPymInc := trc_TxbFrnInc;
2417          trc_TotLibAP     := trc_TotLibFB;
2418       END IF;
2419 
2420    trc_LibFpNI := trc_LibFpNI_Upd;
2421    trc_LibFpFB := trc_LibFpFB_Upd;
2422    trc_LibFpAP := trc_LibFpAP_Upd;
2423 
2424    -- Net Pay Validation
2425    --
2426       py_za_tx_utl_01032012.ValidateTaxOns;
2427 
2428    hr_utility.set_location('py_za_tx_01032012.SeaCalc',24);
2429 
2430    -- Set IT3A Indicator
2431    --
2432       IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
2433          hr_utility.set_location('py_za_tx_01032012.SeaCalc',25);
2434          trc_It3Ind := 0; -- Over Lim
2435       ELSE
2436          hr_utility.set_location('py_za_tx_01032012.SeaCalc',26);
2437          trc_It3Ind := 1; -- Under Lim
2438       END IF;
2439    END IF;
2440 
2441    -- Normal Income
2442    WrtHrTrc('trc_NorIncYtd:     '||to_char(trc_NorIncYtd));
2443    WrtHrTrc('trc_NorIncPtd:     '||to_char(trc_NorIncPtd));
2444    WrtHrTrc('trc_NorErn:        '||to_char(trc_NorErn));
2445    WrtHrTrc('trc_TxbNorInc:     '||to_char(trc_TxbNorInc));
2446    WrtHrTrc('trc_TxbNorIncWoDon:'||to_char(trc_TxbNorIncWoDon));
2447    WrtHrTrc('trc_TotLibNI:      '||to_char(trc_TotLibNI));
2448    WrtHrTrc('trc_LibFyNI:       '||to_char(trc_LibFyNI));
2449    WrtHrTrc('trc_LibFpNI:       '||to_char(trc_LibFpNI));
2450    -- Fringe Benefits
2451    WrtHrTrc('trc_FrnBenYtd:     '||to_char(trc_FrnBenYtd));
2452    WrtHrTrc('trc_FrnBenPtd:     '||to_char(trc_FrnBenPtd));
2453    WrtHrTrc('trc_FrnBenErn:     '||to_char(trc_FrnBenErn));
2454    WrtHrTrc('trc_TxbFrnInc:     '||to_char(trc_TxbFrnInc));
2455    WrtHrTrc('trc_TxbFrnIncWoDon:'||to_char(trc_TxbFrnIncWoDon));
2456    WrtHrTrc('trc_TotLibFB:      '||to_char(trc_TotLibFB));
2457    WrtHrTrc('trc_LibFyFB:       '||to_char(trc_LibFyFB));
2458    WrtHrTrc('trc_LibFpFB:       '||to_char(trc_LibFpFB));
2459    -- Annual Payments
2460    WrtHrTrc('trc_AnnPymYtd:     '||to_char(trc_AnnPymYtd));
2461    WrtHrTrc('trc_AnnPymPtd:     '||to_char(trc_AnnPymPtd));
2462    WrtHrTrc('trc_AnnPymErn:     '||to_char(trc_AnnPymErn));
2463    WrtHrTrc('trc_TxbAnnPymInc:  '||to_char(trc_TxbAnnPymInc));
2464    WrtHrTrc('trc_TxbAnnPymIncWoDon:'||to_char(trc_TxbAnnPymIncWoDon));
2465    WrtHrTrc('trc_TotLibAP:      '||to_char(trc_TotLibAP));
2466    WrtHrTrc('trc_LibFyAP:       '||to_char(trc_LibFyAP));
2467    WrtHrTrc('trc_LibFpAP:       '||to_char(trc_LibFpAP));
2468 
2469 EXCEPTION
2470    WHEN OTHERS THEN
2471       IF xpt_Msg = 'No Error' THEN
2472          xpt_Msg := 'SeaCalc: '||TO_CHAR(SQLCODE);
2473       END IF;
2474       RAISE xpt_E;
2475 END SeaCalc;
2476 
2477 -------------------------------------------------------------------------------
2478 -- SitCalc                                                                   --
2479 -- End of Year Tax Calculation                                               --
2480 -------------------------------------------------------------------------------
2481 PROCEDURE SitCalc AS
2482 -- Variables
2483 --
2484    l_Sl       BOOLEAN;
2485    l_Np       BALANCE;
2486 
2487 BEGIN
2488 
2489    hr_utility.set_location('py_za_tx_01032012.SitCalc',1);
2490 -- Identify the calculation
2491 --
2492    trc_CalTyp := 'SitCalc';
2493 
2494 -- Update Global Balance Values with correct TAXABLE values
2495 --
2496    --Fix for bug#10372926
2497    --py_za_tx_utl_01032012.TrvAll;
2498 
2499    hr_utility.set_location('py_za_tx_01032012.SitCalc',2);
2500 
2501    bal_TOT_TXB_PO_YTD  := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
2502 
2503 -- Ytd Taxable Income
2504 --
2505  trc_TxbIncYtd :=
2506     ( bal_TOT_TXB_NI_YTD
2507     + bal_TOT_TXB_FB_YTD
2508     + bal_TOT_TXB_TA_YTD
2509     + bal_BP_YTD
2510     );
2511    hr_utility.set_location('py_za_tx_01032012.SitCalc',3);
2512 
2513 -- Site Factor
2514 --
2515    trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032012.DaysWorked;
2516 
2517    hr_utility.set_location('py_za_tx_01032012.SitCalc',4);
2518 
2519 -- Rebates
2520    py_za_tx_utl_01032012.SetRebates;
2521 
2522 -- Abatements
2523    py_za_tx_utl_01032012.Abatements;
2524 
2525 
2526    trc_curMedTxCrEle := greatest(bal_MED_AID_TAX_CR_YTD + bal_ANN_MED_AID_TAX_CR_YTD,0,bal_MED_AID_TAX_CR_USED_YTD + bal_MED_AID_TAX_CR_USED_LS_YTD);
2527 
2528    hr_utility.set_location('py_za_tx_01032012.SitCalc',5);
2529 
2530 -- Deemed Remuneration
2531 --
2532    -- Run Deemed Remuneration
2533    trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
2534 
2535    -- Skip the calculation if there is No Income
2536    IF trc_DmdRmnRun <> 0 THEN
2537       hr_utility.set_location('py_za_tx_01032012.SitCalc',6);
2538       -- Taxable Deemed Remuneration
2539       trc_TxbDmdRmn := trc_DmdRmnRun;
2540       -- Threshold Check
2541       IF trc_TxbDmdRmn >= trc_Threshold THEN
2542          hr_utility.set_location('py_za_tx_01032012.SitCalc',7);
2543          -- Tax Liability
2544          trc_TotLibDR := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbDmdRmn);
2545          trc_LibFyDR  := (trc_TotLibDR - 0) / trc_SitFactor;
2546          trc_TotLibDR := greatest(trc_TotLibDR,0);
2547          trc_LibFpDR  := trc_LibFyDR - (bal_TX_ON_DR_YTD + bal_MED_TAX_CR_USED_DR_YTD);
2548 
2549          -- Start Medical Tax Credit Changes
2550          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2551                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
2552                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_DR_YTD
2553                               ,p_Tx_RUN               => trc_LibFpDR
2554                               ,p_Tx_YTD               => bal_TX_ON_DR_YTD
2555                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedDR
2556                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedDR_Upd
2557                                );
2558          trc_LibFpDR_Upd := trc_LibFpDR - trc_MedTxCrUsedDR_Upd;
2559          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedDR,0);
2560          hr_utility.set_location('    trc_MedTxCrUsedDR:'||trc_MedTxCrUsedDR,10);
2561          hr_utility.set_location('trc_MedTxCrUsedDR_Upd:'||trc_MedTxCrUsedDR_Upd,10);
2562          hr_utility.set_location('      trc_LibFpDR_Upd:'||trc_LibFpDR_Upd,10);
2563          hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2564          -- End Medical Tax Credit Changes
2565 
2566       ELSE
2567          hr_utility.set_location('py_za_tx_01032012.SitCalc',8);
2568          -- Set Cascade Figures and Refund
2569          trc_TotLibDR   := 0;
2570          trc_LibFpDR    := -1 * bal_TX_ON_DR_YTD;
2571          trc_MedTxCrUsedDR_Upd := -1 * bal_MED_TAX_CR_USED_DR_YTD;
2572          trc_LibFpDR_Upd := trc_LibFpDR;
2573          trc_LibFpDROvr := TRUE;
2574       END IF;
2575    ELSE
2576       hr_utility.set_location('py_za_tx_01032012.SitCalc',9);
2577       -- Set Cascade Figures and Refund
2578       trc_TxbDmdRmn  := 0;
2579       trc_TotLibDR   := 0;
2580       trc_LibFpDR    := -1 * bal_TX_ON_DR_YTD;
2581       trc_MedTxCrUsedDR_Upd := -1 * bal_MED_TAX_CR_USED_DR_YTD;
2582       trc_LibFpDR_Upd := trc_LibFpDR;
2583       trc_LibFpDROvr := TRUE;
2584    END IF;
2585 
2586    hr_utility.set_location('py_za_tx_01032012.SitCalc',10);
2587 
2588 -- Normal Income
2589 --
2590 -- Ytd Normal Income
2591    trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
2592    -- Skip the calculation if there is No Income
2593    IF trc_NorIncYtd <> 0 THEN
2594       hr_utility.set_location('py_za_tx_01032012.SitCalc',11);
2595       -- Normal Earnings
2596       trc_NorErn := trc_NorIncYtd * trc_SitFactor;
2597       -- Taxable Normal Income
2598       --TYS2010
2599       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2600       trc_TxbNorIncWoDon := trc_NorErn - trc_PerTotAbm;
2601       trc_TxbNorInc :=trc_TxbNorIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbNorIncWoDon,trc_PerDonAmt);
2602 
2603       -- Threshold Check
2604       IF trc_TxbNorInc >= trc_Threshold THEN
2605          hr_utility.set_location('py_za_tx_01032012.SitCalc',12);
2606          -- Tax Liability
2607          trc_TotLibNI := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbNorInc);
2608          trc_LibFyNI  := (trc_TotLibNI - least(trc_TotLibNI,trc_TotLibDR)) / trc_SitFactor;
2609          trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibDR);
2610          trc_LibFpNI  := trc_LibFyNI - (bal_TX_ON_NI_YTD + bal_MED_TAX_CR_USED_NI_YTD);
2611 
2612          -- Start Medical Tax Credit Changes
2613          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2614                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
2615                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_NI_YTD
2616                               ,p_Tx_RUN               => trc_LibFpNI
2617                               ,p_Tx_YTD               => bal_TX_ON_NI_YTD
2618                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedNI
2619                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedNI_Upd
2620                                );
2621          trc_LibFpNI_Upd := trc_LibFpNI - trc_MedTxCrUsedNI_Upd;
2622          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNI,0);
2623          hr_utility.set_location('    trc_MedTxCrUsedNI:'||trc_MedTxCrUsedNI,10);
2624          hr_utility.set_location('trc_MedTxCrUsedNI_Upd:'||trc_MedTxCrUsedNI_Upd,10);
2625          hr_utility.set_location('      trc_LibFpNI_Upd:'||trc_LibFpNI_Upd,10);
2626          hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2627          -- End Medical Tax Credit Changes
2628 
2629       ELSE
2630          hr_utility.set_location('py_za_tx_01032012.SitCalc',13);
2631          -- Set Cascade Figures and Refund
2632          trc_TotLibNI   := trc_TotLibDR;
2633 
2634          trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
2635          trc_MedTxCrUsedNI_Upd := -1 * bal_MED_TAX_CR_USED_NI_YTD;
2636          trc_LibFpNI_Upd := trc_LibFpNI;
2637          trc_LibFpNIOvr := TRUE;
2638       END IF;
2639    ELSE
2640       hr_utility.set_location('py_za_tx_01032012.SitCalc',14);
2641       -- Set Cascade Figures and Refund
2642       trc_NorErn     := 0;
2643       trc_TxbNorInc  := 0;
2644       trc_TotLibNI   := trc_TotLibDR;
2645       trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
2646       trc_MedTxCrUsedNI_Upd := -1 * bal_MED_TAX_CR_USED_NI_YTD;
2647       trc_LibFpNI_Upd := trc_LibFpNI;
2648       trc_LibFpNIOvr := TRUE;
2649    END IF;
2650 
2651 -- Fringe Benefits
2652 --
2653    -- Ytd Fringe Benefits
2654    trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
2655    -- Skip the calculation if there is No Income
2656    IF trc_FrnBenYtd <> 0 THEN
2657       hr_utility.set_location('py_za_tx_01032012.SitCalc',15);
2658       -- Fringe Benefit Earnings
2659       trc_FrnBenErn := trc_FrnBenYtd * trc_SitFactor + trc_NorErn;
2660       -- Taxable Fringe Income
2661       --TYS2010
2662       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2663       trc_TxbFrnIncWoDon := trc_FrnBenErn - trc_PerTotAbm;
2664       trc_TxbFrnInc :=trc_TxbFrnIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbFrnIncWoDon,trc_PerDonAmt);
2665 
2666       -- Threshold Check
2667       IF trc_TxbFrnInc >= trc_Threshold THEN
2668          hr_utility.set_location('py_za_tx_01032012.SitCalc',16);
2669          -- Tax Liability
2670          trc_TotLibFB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbFrnInc);
2671          trc_LibFyFB  := (trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI)) / trc_SitFactor;
2672          trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
2673          trc_LibFpFB  := trc_LibFyFB - (bal_TX_ON_FB_YTD + bal_MED_TAX_CR_USED_FB_YTD);
2674 
2675          -- Start Medical Tax Credit Changes
2676          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2677                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
2678                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_FB_YTD
2679                               ,p_Tx_RUN               => trc_LibFpFB
2680                               ,p_Tx_YTD               => bal_TX_ON_FB_YTD
2681                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedFB
2682                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedFB_Upd
2683                                );
2684          trc_LibFpFB_Upd := trc_LibFpFB - trc_MedTxCrUsedFB_Upd;
2685          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedFB,0);
2686          hr_utility.set_location('    trc_MedTxCrUsedFB:'||trc_MedTxCrUsedFB,10);
2687          hr_utility.set_location('trc_MedTxCrUsedFB_Upd:'||trc_MedTxCrUsedFB_Upd,10);
2688          hr_utility.set_location('      trc_LibFpFB_Upd:'||trc_LibFpFB_Upd,10);
2689          hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2690          -- End Medical Tax Credit Changes
2691 
2692       ElSE
2693          hr_utility.set_location('py_za_tx_01032012.SitCalc',17);
2694          -- Set Cascade Figures and Refund
2695          trc_TotLibFB   := trc_TotLibNI;
2696 
2697          trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
2698          trc_MedTxCrUsedFB_Upd := -1 * bal_MED_TAX_CR_USED_FB_YTD;
2699          trc_LibFpFB_Upd := trc_LibFpFB;
2700          trc_LibFpFBOvr := TRUE;
2701       END IF;
2702    ELSE
2703       hr_utility.set_location('py_za_tx_01032012.SitCalc',18);
2704       -- Set Cascade Figures and Refund
2705       trc_FrnBenErn  := trc_NorErn;
2706       trc_TxbFrnInc  := trc_TxbNorInc;
2707       trc_TotLibFB   := trc_TotLibNI;
2708       trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
2709       trc_MedTxCrUsedFB_Upd := -1 * bal_MED_TAX_CR_USED_FB_YTD;
2710       trc_LibFpFB_Upd := trc_LibFpFB;
2711       trc_LibFpFBOvr := TRUE;
2712    END IF;
2713 
2714 -- Travel Allowance
2715 --
2716    -- Ytd Travel Allowance
2717    trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
2718    -- Skip the calculation if there is No Income
2719    IF trc_TrvAllYtd <> 0 THEN
2720       hr_utility.set_location('py_za_tx_01032012.SitCalc',19);
2721       -- Travel Earnings
2722       trc_TrvAllErn := trc_TrvAllYtd * trc_SitFactor + trc_FrnBenErn;
2723       -- Taxable Travel Income
2724       --TYS2010
2725       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2726       trc_TxbTrvIncWoDon := trc_TrvAllErn - trc_PerTotAbm;
2727       trc_TxbTrvInc :=trc_TxbTrvIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbTrvIncWoDon,trc_PerDonAmt);
2728 
2729       -- Threshold Check
2730       IF trc_TxbTrvInc >= trc_Threshold THEN
2731          hr_utility.set_location('py_za_tx_01032012.SitCalc',20);
2732          -- Tax Liability
2733          trc_TotLibTA := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbTrvInc);
2734          trc_LibFyTA  := (trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB)) / trc_SitFactor;
2735          trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
2736          trc_LibFpTA  := trc_LibFyTA - (bal_TX_ON_TA_YTD + bal_MED_TAX_CR_USED_TA_YTD);
2737 
2738          -- Start Medical Tax Credit Changes
2739          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2740                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
2741                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_TA_YTD
2742                               ,p_Tx_RUN               => trc_LibFpTA
2743                               ,p_Tx_YTD               => bal_TX_ON_TA_YTD
2744                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedTA
2745                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedTA_Upd
2746                                );
2747          trc_LibFpTA_Upd := trc_LibFpTA - trc_MedTxCrUsedTA_Upd;
2748          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedTA,0);
2749          hr_utility.set_location('    trc_MedTxCrUsedTA:'||trc_MedTxCrUsedTA,10);
2750          hr_utility.set_location('trc_MedTxCrUsedTA_Upd:'||trc_MedTxCrUsedTA_Upd,10);
2751          hr_utility.set_location('      trc_LibFpTA_Upd:'||trc_LibFpTA_Upd,10);
2752          hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2753          -- End Medical Tax Credit Changes
2754 
2755       ELSE
2756          hr_utility.set_location('py_za_tx_01032012.SitCalc',21);
2757          -- Set Cascade Figures and Refund
2758          trc_TotLibTA   := trc_TotLibFB;
2759          trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
2760          trc_MedTxCrUsedTA_Upd := -1 * bal_MED_TAX_CR_USED_TA_YTD;
2761          trc_LibFpTA_Upd := trc_LibFpTA;
2762          trc_LibFpTAOvr := TRUE;
2763       END IF;
2764    ELSE
2765       hr_utility.set_location('py_za_tx_01032012.SitCalc',22);
2766       -- Set Cascade Figures and Refund
2767       trc_TrvAllErn  := trc_FrnBenErn;
2768       trc_TxbTrvInc  := trc_TxbFrnInc;
2769       trc_TotLibTA   := trc_TotLibFB;
2770       trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
2771       trc_MedTxCrUsedTA_Upd := -1 * bal_MED_TAX_CR_USED_TA_YTD;
2772       trc_LibFpTA_Upd := trc_LibFpTA;
2773       trc_LibFpTAOvr := TRUE;
2774    END IF;
2775 
2776 -- Bonus Provision
2777 --
2778    -- Ytd Bonus Prvision
2779    trc_BonProYtd := bal_BP_YTD;
2780    -- Skip the calculation if there is No Income
2781    IF trc_BonProYtd <> 0 THEN
2782       hr_utility.set_location('py_za_tx_01032012.SitCalc',23);
2783       -- Bonus Provision Earnings
2784       trc_BonProErn := trc_BonProYtd * trc_SitFactor + trc_TrvAllErn;
2785       -- Taxable Bonus Provision Income
2786       --TYS2010
2787       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2788       trc_TxbBonProIncWoDon := trc_BonProErn - trc_PerTotAbm;
2789       trc_TxbBonProInc :=trc_TxbBonProIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbBonProIncWoDon,trc_PerDonAmt);
2790 
2791       -- Threshold Check
2792       IF trc_TxbBonProInc >= trc_Threshold THEN
2793          hr_utility.set_location('py_za_tx_01032012.SitCalc',24);
2794          -- Tax Liability
2795          trc_TotLibBP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbBonProInc);
2796          trc_LibFyBP  := (trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA)) / trc_SitFactor;
2797          trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
2798          trc_LibFpBP  := trc_LibFyBP - (bal_TX_ON_BP_YTD + bal_MED_TAX_CR_USED_BP_YTD);
2799 
2800          -- Start Medical Tax Credit Changes
2801          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2802                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
2803                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_BP_YTD
2804                               ,p_Tx_RUN               => trc_LibFpBP
2805                               ,p_Tx_YTD               => bal_TX_ON_BP_YTD
2806                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedBP
2807                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedBP_Upd
2808                                );
2809          trc_LibFpBP_Upd := trc_LibFpBP - trc_MedTxCrUsedBP_Upd;
2810          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedBP,0);
2811          hr_utility.set_location('    trc_MedTxCrUsedBP:'||trc_MedTxCrUsedBP,10);
2812          hr_utility.set_location('trc_MedTxCrUsedBP_Upd:'||trc_MedTxCrUsedBP_Upd,10);
2813          hr_utility.set_location('      trc_LibFpBP_Upd:'||trc_LibFpBP_Upd,10);
2814          hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2815          -- End Medical Tax Credit Changes
2816 
2817       ELSE
2818          hr_utility.set_location('py_za_tx_01032012.SitCalc',25);
2819          -- Set Cascade Figures and Refund
2820          trc_TotLibBP   := trc_TotLibTA;
2821          trc_LibFpBP    := -1 * bal_TX_ON_BP_YTD;
2822          trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_YTD;
2823          trc_LibFpBP_Upd := trc_LibFpBP;
2824          trc_LibFpBPOvr := TRUE;
2825       END IF;
2826    ELSE
2827       hr_utility.set_location('py_za_tx_01032012.SitCalc',26);
2828       -- Set Cascade Figures and Refund
2829       trc_BonProErn    := trc_TrvAllErn;
2830       trc_TxbBonProInc := trc_TxbTrvInc;
2831       trc_TotLibBP     := trc_TotLibTA;
2832       trc_LibFpBP      := -1 * bal_TX_ON_BP_YTD;
2833       trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_YTD;
2834       trc_LibFpBP_Upd := trc_LibFpBP;
2835       trc_LibFpBPOvr   := TRUE;
2836    END IF;
2837 
2838 -- Annual Bonus
2839 --
2840    -- Ytd Annual Bonus
2841    trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
2842    -- Skip the calculation if there is No Income
2843    IF trc_AnnBonYtd <> 0 THEN
2844       hr_utility.set_location('py_za_tx_01032012.SitCalc',27);
2845       -- Annual Bonus Earnings
2846       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
2847       -- Taxable Annual Bonus Income
2848       --TYS2010
2849       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2850       trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
2851       trc_TxbAnnBonInc :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
2852 
2853       -- Threshold Check
2854       IF trc_TxbAnnBonInc >= trc_Threshold THEN
2855          hr_utility.set_location('py_za_tx_01032012.SitCalc',28);
2856          -- Tax Liability
2857          trc_TotLibAB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnBonInc);
2858          trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
2859          trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
2860          hr_utility.set_location('py_za_tx_01032012.SitCalc',29);
2861          -- Check Bonus Provision
2862          IF trc_BonProYtd <> 0 THEN
2863             hr_utility.set_location('py_za_tx_01032012.SitCalc',30);
2864             -- Check Bonus Provision Frequency
2865             IF dbi_BP_TX_RCV = 'B' OR py_za_tx_utl_01032012.SitePeriod THEN
2866                hr_utility.set_location('py_za_tx_01032012.SitCalc',31);
2867                trc_LibFpAB :=
2868                trc_LibFyAB - (bal_TX_ON_BP_YTD
2869                              + bal_MED_TAX_CR_USED_BP_YTD
2870                              + trc_LibFpBP
2871                              + bal_TX_ON_AB_YTD
2872                              + bal_MED_TAX_CR_USED_AB_YTD);
2873 
2874                -- Start Medical Tax Credit Changes
2875                py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2876                                     (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
2877                                     ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AB_YTD
2878                                     ,p_Tx_RUN               => trc_LibFpAB
2879                                     ,p_Tx_YTD               => bal_TX_ON_AB_YTD
2880                                     ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAB
2881                                     ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAB_Upd
2882                                      );
2883                trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
2884                trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
2885                hr_utility.set_location('    trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
2886                hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
2887                hr_utility.set_location('      trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
2888                hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2889                -- End Medical Tax Credit Changes
2890 
2891             ELSE
2892                hr_utility.set_location('py_za_tx_01032012.SitCalc',32);
2893                trc_LibFpAB := 0;
2894             END IF;
2895          ELSE
2896             hr_utility.set_location('py_za_tx_01032012.SitCalc',33);
2897             trc_LibFpAB := trc_LibFyAB - (bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
2898 
2899             -- Start Medical Tax Credit Changes
2900             py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2901                                  (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
2902                                  ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AB_YTD
2903                                  ,p_Tx_RUN               => trc_LibFpAB
2904                                  ,p_Tx_YTD               => bal_TX_ON_AB_YTD
2905                                  ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAB
2906                                  ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAB_Upd
2907                                   );
2908             trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
2909             trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
2910             hr_utility.set_location('    trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
2911             hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
2912             hr_utility.set_location('      trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
2913             hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2914             -- End Medical Tax Credit Changes
2915 
2916          END IF;
2917       ELSE
2918          hr_utility.set_location('py_za_tx_01032012.SitCalc',34);
2919          -- Set Cascade Figures and Refund
2920          trc_TotLibAB   := trc_TotLibTA;
2921          trc_LibFpAB    := -1 * bal_TX_ON_AB_YTD;
2922          trc_MedTxCrUsedAB_Upd := -1 * bal_MED_TAX_CR_USED_AB_YTD;
2923          trc_LibFpAB_Upd := trc_LibFpAB ;
2924          trc_LibFpABOvr := TRUE;
2925       END IF;
2926    ELSE
2927       hr_utility.set_location('py_za_tx_01032012.SitCalc',35);
2928       -- Set Cascade Figures and Refund
2929       trc_LibFpAB      := -1 * bal_TX_ON_AB_YTD;
2930       trc_MedTxCrUsedAB_Upd := -1 * bal_MED_TAX_CR_USED_AB_YTD;
2931       trc_LibFpAB_Upd := trc_LibFpAB ;
2932       trc_LibFpABOvr   := TRUE;
2933 
2934       IF dbi_BP_TX_RCV = 'A' AND py_za_tx_utl_01032012.SitePeriod THEN
2935          hr_utility.set_location('py_za_tx_01032012.SitCalc',36);
2936          trc_LibFpBP      := -1 * bal_TX_ON_BP_YTD;
2937 	 trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_PTD;
2938          trc_LibFpBP_Upd := trc_LibFpBP;
2939          trc_LibFpBPOvr   := TRUE;
2940          --Commented below line for bug 9438325
2941          --trc_LibFpAPOvr   := TRUE;
2942          trc_AnnBonErn    := trc_TrvAllErn;
2943          trc_TxbAnnBonInc := trc_TxbTrvInc;
2944          trc_TotLibAB     := trc_TotLibTA;
2945       ELSE
2946          hr_utility.set_location('py_za_tx_01032012.SitCalc',37);
2947          trc_AnnBonErn    := trc_BonProErn;
2948          trc_TxbAnnBonInc := trc_TxbBonProInc;
2949          trc_TotLibAB     := trc_TotLibBP;
2950       END IF;
2951    END IF;
2952 
2953 -- Annual Payments
2954 --
2955    -- Ytd Annual Payments
2956    trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
2957    -- Skip the calculation if there is No Income
2958    IF trc_AnnPymYtd <> 0 THEN
2959       hr_utility.set_location('py_za_tx_01032012.SitCalc',38);
2960       -- Annual Payments Earnings
2961       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
2962       --TYS2010
2963       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2964       -- Taxable Annual Payments Income
2965       trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
2966 
2967       trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
2968 
2969       -- Threshold Check
2970       IF trc_TxbAnnPymInc >= trc_Threshold THEN
2971          hr_utility.set_location('py_za_tx_01032012.SitCalc',39);
2972          -- Tax Liability
2973          trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2974          trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
2975          trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
2976          trc_LibFpAP  := trc_LibFyAP - (bal_TX_ON_AP_YTD + bal_MED_TAX_CR_USED_AP_YTD);
2977 
2978          -- Start Medical Tax Credit Changes
2979          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2980                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
2981                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AP_YTD
2982                               ,p_Tx_RUN               => trc_LibFpAP
2983                               ,p_Tx_YTD               => bal_TX_ON_AP_YTD
2984                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAP
2985                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAP_Upd
2986                                );
2987          trc_LibFpAP_Upd := trc_LibFpAP - trc_MedTxCrUsedAP_Upd;
2988          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAP,0);
2989          hr_utility.set_location('    trc_MedTxCrUsedAP:'||trc_MedTxCrUsedAP,10);
2990          hr_utility.set_location('trc_MedTxCrUsedAP_Upd:'||trc_MedTxCrUsedAP_Upd,10);
2991          hr_utility.set_location('      trc_LibFpAP_Upd:'||trc_LibFpAP_Upd,10);
2992          hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2993          -- End Medical Tax Credit Changes
2994 
2995       ELSE
2996          hr_utility.set_location('py_za_tx_01032012.SitCalc',40);
2997          -- Set Cascade Figures and Refund
2998          trc_TotLibAP   := trc_TotLibAB;
2999          trc_LibFpAP    := -1 * bal_TX_ON_AP_YTD;
3000          trc_MedTxCrUsedAP_Upd := -1 * bal_MED_TAX_CR_USED_AP_YTD;
3001          trc_LibFpAP_Upd := trc_LibFpAP ;
3002          trc_LibFpAPOvr := TRUE;
3003       END IF;
3004    ELSE
3005       hr_utility.set_location('py_za_tx_01032012.SitCalc',41);
3006       -- Set Cascade Figures and Refund
3007       trc_AnnPymErn    := trc_AnnBonErn;
3008       trc_TxbAnnPymInc := trc_TxbAnnBonInc;
3009       trc_TotLibAP     := trc_TotLibAB;
3010       trc_LibFpAP      := -1 * bal_TX_ON_AP_YTD;
3011       trc_MedTxCrUsedAP_Upd := -1 * bal_MED_TAX_CR_USED_AP_YTD;
3012       trc_LibFpAP_Upd := trc_LibFpAP ;
3013       trc_LibFpAPOvr   := TRUE;
3014    END IF;
3015 
3016 -- Public Office Allowance
3017 --
3018    -- Ytd Public Office Allowance
3019    trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
3020    -- Skip the calculation if there is No Income
3021    IF trc_PblOffYtd <> 0 THEN
3022       hr_utility.set_location('py_za_tx_01032012.SitCalc',42);
3023       -- Public Office Allowance Earnings
3024       trc_PblOffErn := trc_PblOffYtd * trc_SitFactor + trc_AnnPymErn;
3025       -- Taxable Public Office Allowance
3026       --TYS2010
3027       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3028       trc_TxbPblOffIncWoDon := trc_PblOffErn - trc_AnnTotAbm;
3029 
3030       trc_TxbPblOffInc :=trc_TxbPblOffIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbPblOffIncWoDon,trc_AnnDonAmt);
3031 
3032       -- Threshold Check
3033       IF trc_TxbPblOffInc >= trc_Threshold THEN
3034          hr_utility.set_location('py_za_tx_01032012.SitCalc',43);
3035          -- Tax Liability
3036          trc_TotLibPO := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbPblOffInc);
3037          trc_LibFyPO  := (trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP)) / trc_SitFactor;
3038          trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
3039          trc_LibFpPO  := trc_LibFyPO - (bal_TX_ON_PO_YTD + bal_MED_TAX_CR_USED_PO_YTD);
3040 
3041          -- Start Medical Tax Credit Changes
3042          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3043                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
3044                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_PO_YTD
3045                               ,p_Tx_RUN               => trc_LibFpPO
3046                               ,p_Tx_YTD               => bal_TX_ON_PO_YTD
3047                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedPO
3048                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedPO_Upd
3049                                );
3050          trc_LibFpPO_Upd := trc_LibFpPO - trc_MedTxCrUsedPO_Upd;
3051          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedPO,0);
3052          hr_utility.set_location('    trc_MedTxCrUsedPO:'||trc_MedTxCrUsedPO,10);
3053          hr_utility.set_location('trc_MedTxCrUsedPO_Upd:'||trc_MedTxCrUsedPO_Upd,10);
3054          hr_utility.set_location('      trc_LibFpPO_Upd:'||trc_LibFpPO_Upd,10);
3055          hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3056          -- End Medical Tax Credit Changes
3057 
3058       ElSE
3059          hr_utility.set_location('py_za_tx_01032012.SitCalc',44);
3060          -- Set Cascade Figures and Refund
3061          trc_TotLibPO   := trc_TotLibAP;
3062          trc_LibFpPO    := -1 * bal_TX_ON_PO_YTD;
3063          trc_MedTxCrUsedPO_Upd := -1 * bal_MED_TAX_CR_USED_PO_YTD;
3064          trc_LibFpPO_Upd := trc_LibFpPO;
3065          trc_LibFpPOOvr := TRUE;
3066       END IF;
3067    ELSE
3068       hr_utility.set_location('py_za_tx_01032012.SitCalc',45);
3069       -- Set Cascade Figures and Refund
3070       trc_PblOffErn     := trc_AnnPymErn;
3071       trc_TxbPblOffInc  := trc_TxbAnnPymInc;
3072       trc_TotLibPO      := trc_TotLibAP;
3073       trc_LibFpPO       := -1 * bal_TX_ON_PO_YTD;
3074       trc_MedTxCrUsedPO_Upd := -1 * bal_MED_TAX_CR_USED_PO_YTD;
3075       trc_LibFpPO_Upd := trc_LibFpPO;
3076       trc_LibFpPOOvr    := TRUE;
3077    END IF;
3078 
3079    -- Net to Gross Annual Payments.
3080    -- Ytd Net to Gross Annual Payments
3081    trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
3082    -- Skip the calculation if there is No Income
3083    IF trc_AnnPymNtgYtd <> 0 THEN
3084       hr_utility.set_location('py_za_tx_01032012.SitCalc',46);
3085       -- Annual Payments Net to Gross Earnings
3086       trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_PblOffErn;
3087 
3088       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3089       -- Taxable Annual Payments Income
3090       trc_TxbAnnPymNtgIncWoDon := trc_AnnPymNtgErn - trc_AnnTotAbm;
3091       trc_TxbAnnPymNtgInc :=trc_TxbAnnPymNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymNtgIncWoDon,trc_AnnDonAmt);
3092 
3093       -- Threshold Check
3094       IF trc_TxbAnnPymNtgInc >= trc_Threshold THEN
3095          hr_utility.set_location('py_za_tx_01032012.SitCalc',47);
3096          -- Tax Liability
3097          trc_TotLibNtgAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymNtgInc);
3098          trc_LibFyNtgAP  := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibPO);
3099          trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibPO);
3100 
3101          trc_LibFpNtgAP  := trc_LibFyNtgAP - (bal_TX_ON_AP_NTG_YTD+ bal_MED_TAX_CR_USED_NG_YTD);
3102 
3103          -- Start Medical Tax Credit Changes
3104          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3105                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
3106                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_NG_YTD
3107                               ,p_Tx_RUN               => trc_LibFpNtgAP
3108                               ,p_Tx_YTD               => bal_TX_ON_AP_NTG_YTD
3109                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedNtgAP
3110                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedNtgAP_Upd
3111                                );
3112          trc_LibFpNtgAP_Upd := trc_LibFpNtgAP - trc_MedTxCrUsedNtgAP_Upd;
3113          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgAP,0);
3114          hr_utility.set_location('    trc_MedTxCrUsedNtgAP:'||trc_MedTxCrUsedNtgAP,10);
3115          hr_utility.set_location('trc_MedTxCrUsedNtgAP_Upd:'||trc_MedTxCrUsedNtgAP_Upd,10);
3116          hr_utility.set_location('      trc_LibFpNtgAP_Upd:'||trc_LibFpNtgAP_Upd,10);
3117          hr_utility.set_location('       trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3118          -- End Medical Tax Credit Changes
3119 
3120       ELSE
3121          hr_utility.set_location('py_za_tx_01032012.SitCalc',48);
3122          -- Set Cascade Figures and Refund
3123          trc_TotLibNtgAP   := trc_TotLibPO;
3124          trc_LibFpNtgAP    := -1 * bal_TX_ON_AP_NTG_YTD;
3125          trc_MedTxCrUsedNtgAP_Upd := -1 * bal_MED_TAX_CR_USED_NG_YTD;
3126          trc_LibFpNtgAP_Upd := trc_LibFpNtgAP;
3127          trc_LibFpNtgAPOvr := TRUE;
3128       END IF;
3129    ELSE
3130       hr_utility.set_location('py_za_tx_01032012.SitCalc',49);
3131       -- Set Cascade Figures and Refund
3132       trc_AnnPymNtgErn     := trc_PblOffErn;
3133       trc_TxbAnnPymNtgInc  := trc_TxbPblOffInc;
3134       trc_TotLibNtgAP      := trc_TotLibPO;
3135       trc_LibFpNtgAP       := -1 * bal_TX_ON_AP_NTG_YTD;
3136       trc_MedTxCrUsedNtgAP_Upd := -1 * bal_MED_TAX_CR_USED_NG_YTD;
3137       trc_LibFpNtgAP_Upd := trc_LibFpNtgAP;
3138       trc_LibFpNtgAPOvr    := TRUE;
3139    END IF;
3140 
3141    -- Ytd Net to Gross EE Debt due to Net to Gross Annual Payments
3142    trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
3143    -- Skip the calculation if there is No Income
3144    IF trc_AnnEEDbtNtgYtd <> 0 THEN
3145       hr_utility.set_location('py_za_tx_01032012.SitCalc',50);
3146       -- Annual EE Debt Net to Gross Earnings
3147       trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
3148 
3149       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3150       trc_TxbAnnEEDbtNtgIncWoDon := trc_AnnEEDbtNtgErn - trc_AnnTotNTGAbm;
3151       trc_TxbAnnEEDbtNtgInc :=trc_TxbAnnEEDbtNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnEEDbtNtgIncWoDon,trc_AnnDonAmt);
3152 
3153       -- Threshold Check
3154       IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
3155          hr_utility.set_location('py_za_tx_01032012.SitCalc',51);
3156          -- Tax Liability
3157          trc_TotLibNtgEEDbt := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnEEDbtNtgInc);
3158          trc_LibFyNtgEEDbt  := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
3159          trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
3160          trc_LibFpNtgEEDbt  := trc_LibFyNtgEEDbt - (bal_TX_ON_EE_DBT_NTG_YTD + bal_MED_TAX_CR_USED_EE_YTD);
3161 
3162          -- Start Medical Tax Credit Changes
3163          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3164                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
3165                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_EE_YTD
3166                               ,p_Tx_RUN               => trc_LibFpNtgEEDbt
3167                               ,p_Tx_YTD               => bal_TX_ON_EE_DBT_NTG_YTD
3168                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedNtgEEDbt
3169                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedNtgEEDbt_Upd
3170                                );
3171          trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt - trc_MedTxCrUsedNtgEEDbt_Upd;
3172          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgEEDbt,0);
3173          hr_utility.set_location('    trc_MedTxCrUsedNtgEEDbt:'||trc_MedTxCrUsedNtgEEDbt,10);
3174          hr_utility.set_location('trc_MedTxCrUsedNtgEEDbt_Upd:'||trc_MedTxCrUsedNtgEEDbt_Upd,10);
3175          hr_utility.set_location('      trc_LibFpNtgEEDbt_Upd:'||trc_LibFpNtgEEDbt_Upd,10);
3176          hr_utility.set_location('          trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3177          -- End Medical Tax Credit Changes
3178 
3179       ELSE
3180          hr_utility.set_location('py_za_tx_01032012.SitCalc',52);
3181          -- Set Cascade Figures and Refund
3182          trc_TotLibNtgEEDbt   := trc_TotLibNtgAP;
3183          trc_LibFpNtgEEDbt    := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
3184          trc_MedTxCrUsedNtgEEDbt_Upd := -1 * bal_MED_TAX_CR_USED_EE_YTD;
3185          trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt;
3186          trc_LibFpNtgEEDbtOvr := TRUE;
3187       END IF;
3188    ELSE
3189       hr_utility.set_location('py_za_tx_01032012.SitCalc',53);
3190       -- Set Cascade Figures and Refund
3191       trc_AnnEEDbtNtgErn     := trc_AnnPymNtgErn;
3192       trc_TxbAnnEEDbtNtgInc  := trc_TxbAnnPymNtgInc;
3193       trc_TotLibNtgEEDbt      := trc_TotLibNtgAP;
3194       trc_LibFpNtgEEDbt       := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
3195       trc_MedTxCrUsedNtgEEDbt_Upd := -1 * bal_MED_TAX_CR_USED_EE_YTD;
3196       trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt;
3197       trc_LibFpNtgEEDbtOvr    := TRUE;
3198    END IF;
3199 
3200    trc_LibFpDR := trc_LibFpDR_Upd;
3201    trc_LibFpNI := trc_LibFpNI_Upd;
3202    trc_LibFpFB := trc_LibFpFB_Upd;
3203    trc_LibFpTA := trc_LibFpTA_Upd;
3204    trc_LibFpBP := trc_LibFpBP_Upd;
3205    trc_LibFpAB := trc_LibFpAB_Upd;
3206    trc_LibFpAP := trc_LibFpAP_Upd;
3207    trc_LibFpPO := trc_LibFpPO_Upd;
3208    trc_LibFpNtgAP := trc_LibFpNtgAP_Upd;
3209    trc_LibFpNtgEEDbt := trc_LibFpNtgEEDbt_Upd;
3210 
3211 -- Net Pay Validation
3212 --
3213    -- Net Pay of the Employee
3214    l_Np := bal_NET_PAY_RUN;
3215    -- Site Limit Check
3216   /* Commented for bug 8751513 as the value in trc_PblOffErn is duplicated because trc_TxbAnnPymInc holds that value
3217    IF trc_TxbAnnPymInc + trc_PblOffErn < glb_ZA_SIT_LIM THEN
3218       hr_utility.set_location('py_za_tx_01032012.SitCalc',54);
3219       l_Sl := TRUE;
3220    ELSE
3221       hr_utility.set_location('py_za_tx_01032012.SitCalc',47);
3222       l_Sl := FALSE;
3223    END IF;
3224 */
3225 
3226    --Added for Net to Gross
3227    IF trc_TxbAnnEEDbtNtgInc < glb_ZA_SIT_LIM THEN
3228       hr_utility.set_location('py_za_tx_01032012.SitCalc',54);
3229       l_Sl := TRUE;
3230    ELSE
3231       hr_utility.set_location('py_za_tx_01032012.SitCalc',55);
3232       l_Sl := FALSE;
3233    END IF;
3234 
3235    -- Allow Refund at last period for Non Cumulative Tax method
3236 -- Commented out for Bug 14195352
3237 /*
3238    IF (dbi_TX_MTD = 'N') THEN
3239       l_Sl := TRUE;
3240    END IF;
3241 */
3242 
3243    py_za_tx_utl_01032012.ValidateTaxOns(p_Rf => l_Sl);
3244 
3245    hr_utility.set_location('py_za_tx_01032012.SitCalc',56);
3246 
3247 -- Set IT3A Indicator
3248 --
3249 /* Commented for bug 8751513 as the value in trc_PblOffErn is duplicated because trc_TxbAnnPymInc holds that value
3250    IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN */
3251    IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
3252       hr_utility.set_location('py_za_tx_01032012.SitCalc',57);
3253       trc_It3Ind := 0; -- Over Lim
3254    ELSE
3255       hr_utility.set_location('py_za_tx_01032012.SitCalc',58);
3256       trc_It3Ind := 1; -- Under Lim
3257    END IF;
3258 
3259 -- Calculate Total Taxable Income and pass out
3260 --
3261 /* Commented for bug 8751513 as the value in trc_PblOffErn is duplicated because trc_TxbAnnPymInc holds that value
3262    trc_OUpdFig := (trc_TxbAnnPymInc + trc_PblOffErn) - bal_TOT_TXB_INC_ITD;  */
3263    trc_OUpdFig := trc_TxbAnnEEDbtNtgInc - bal_TOT_TXB_INC_ITD;
3264 
3265    hr_utility.set_location('py_za_tx_01032012.SitCalc',59);
3266 
3267    -- Deemed Remuneration
3268    WrtHrTrc('trc_TxbDmdRmn:        '||to_char(trc_TxbDmdRmn));
3269    WrtHrTrc('trc_TotLibDR:         '||to_char(trc_TotLibDR));
3270    WrtHrTrc('trc_LibFyDR:          '||to_char(trc_LibFyDR));
3271    WrtHrTrc('trc_LibFpDR:          '||to_char(trc_LibFpDR));
3272    -- Base Income
3273    WrtHrTrc('trc_BseErn:           '||to_char(trc_BseErn));
3274    WrtHrTrc('trc_TxbBseInc:        '||to_char(trc_TxbBseInc));
3275    WrtHrTrc('trc_TotLibBse:        '||to_char(trc_TotLibBse));
3276    -- Normal Income
3277    WrtHrTrc('trc_NorIncYtd:        '||to_char(trc_NorIncYtd));
3278    WrtHrTrc('trc_NorIncPtd:        '||to_char(trc_NorIncPtd));
3279    WrtHrTrc('trc_NorErn:           '||to_char(trc_NorErn));
3280    WrtHrTrc('trc_TxbNorInc:        '||to_char(trc_TxbNorInc));
3281    WrtHrTrc('trc_TxbNorIncWoDon:   '||to_char(trc_TxbNorIncWoDon));
3282    WrtHrTrc('trc_TotLibNI:         '||to_char(trc_TotLibNI));
3283    WrtHrTrc('trc_LibFyNI:          '||to_char(trc_LibFyNI));
3284    WrtHrTrc('trc_LibFpNI:          '||to_char(trc_LibFpNI));
3285    -- Fringe Benefits
3286    WrtHrTrc('trc_FrnBenYtd:        '||to_char(trc_FrnBenYtd));
3287    WrtHrTrc('trc_FrnBenPtd:        '||to_char(trc_FrnBenPtd));
3288    WrtHrTrc('trc_FrnBenErn:        '||to_char(trc_FrnBenErn));
3289    WrtHrTrc('trc_TxbFrnInc:        '||to_char(trc_TxbFrnInc));
3290    WrtHrTrc('trc_TxbFrnIncWoDon:   '||to_char(trc_TxbFrnIncWoDon));
3291    WrtHrTrc('trc_TotLibFB:         '||to_char(trc_TotLibFB));
3292    WrtHrTrc('trc_LibFyFB:          '||to_char(trc_LibFyFB));
3293    WrtHrTrc('trc_LibFpFB:          '||to_char(trc_LibFpFB));
3294    -- Travel Allowance
3295    WrtHrTrc('trc_TrvAllYtd:        '||to_char(trc_TrvAllYtd));
3296    WrtHrTrc('trc_TrvAllPtd:        '||to_char(trc_TrvAllPtd));
3297    WrtHrTrc('trc_TrvAllErn:        '||to_char(trc_TrvAllErn));
3298    WrtHrTrc('trc_TxbTrvInc:        '||to_char(trc_TxbTrvInc));
3299    WrtHrTrc('trc_TxbTrvIncWoDon:   '||to_char(trc_TxbTrvIncWoDon));
3300    WrtHrTrc('trc_TotLibTA:         '||to_char(trc_TotLibTA));
3301    WrtHrTrc('trc_LibFyTA:          '||to_char(trc_LibFyTA));
3302    WrtHrTrc('trc_LibFpTA:          '||to_char(trc_LibFpTA));
3303    -- Bonus Provision
3304    WrtHrTrc('trc_BonProYtd:        '||to_char(trc_BonProYtd));
3305    WrtHrTrc('trc_BonProPtd:        '||to_char(trc_BonProPtd));
3306    WrtHrTrc('trc_BonProErn:        '||to_char(trc_BonProErn));
3307    WrtHrTrc('trc_TxbBonProInc:     '||to_char(trc_TxbBonProInc));
3308    WrtHrTrc('trc_TxbBonProIncWoDon:'||to_char(trc_TxbBonProIncWoDon));
3309    WrtHrTrc('trc_TotLibBP:         '||to_char(trc_TotLibBP));
3310    WrtHrTrc('trc_LibFyBP:          '||to_char(trc_LibFyBP));
3311    WrtHrTrc('trc_LibFpBP:          '||to_char(trc_LibFpBP));
3312    -- Annual Bonus
3313    WrtHrTrc('trc_AnnBonYtd:        '||to_char(trc_AnnBonYtd));
3314    WrtHrTrc('trc_AnnBonPtd:        '||to_char(trc_AnnBonPtd));
3315    WrtHrTrc('trc_AnnBonErn:        '||to_char(trc_AnnBonErn));
3316    WrtHrTrc('trc_TxbAnnBonInc:     '||to_char(trc_TxbAnnBonInc));
3317    WrtHrTrc('trc_TxbAnnBonIncWoDon:'||to_char(trc_TxbAnnBonIncWoDon));
3318    WrtHrTrc('trc_TotLibAB:         '||to_char(trc_TotLibAB));
3319    WrtHrTrc('trc_LibFyAB:          '||to_char(trc_LibFyAB));
3320    WrtHrTrc('trc_LibFpAB:          '||to_char(trc_LibFpAB));
3321    -- Annual Payments
3322    WrtHrTrc('trc_AnnPymYtd:        '||to_char(trc_AnnPymYtd));
3323    WrtHrTrc('trc_AnnPymPtd:        '||to_char(trc_AnnPymPtd));
3324    WrtHrTrc('trc_AnnPymErn:        '||to_char(trc_AnnPymErn));
3325    WrtHrTrc('trc_TxbAnnPymInc:     '||to_char(trc_TxbAnnPymInc));
3326    WrtHrTrc('trc_TxbAnnPymIncWoDon:'||to_char(trc_TxbAnnPymIncWoDon));
3327    WrtHrTrc('trc_TotLibAP:         '||to_char(trc_TotLibAP));
3328    WrtHrTrc('trc_LibFyAP:          '||to_char(trc_LibFyAP));
3329    WrtHrTrc('trc_LibFpAP:          '||to_char(trc_LibFpAP));
3330    -- Pubilc Office Allowance
3331    WrtHrTrc('trc_PblOffYtd:        '||to_char(trc_PblOffYtd));
3332    WrtHrTrc('trc_PblOffPtd:        '||to_char(trc_PblOffPtd));
3333    WrtHrTrc('trc_PblOffErn:        '||to_char(trc_PblOffErn));
3334    WrtHrTrc('trc_TxbPblOffInc:     '||to_char(trc_TxbPblOffInc));
3335    WrtHrTrc('trc_TxbPblOffIncWoDon:'||to_char(trc_TxbPblOffIncWoDon));
3336    WrtHrTrc('trc_TotLibPO:         '||to_char(trc_TotLibPO));
3337    WrtHrTrc('trc_LibFyPO:          '||to_char(trc_LibFyPO));
3338    WrtHrTrc('trc_LibFpPO:          '||to_char(trc_LibFpPO));
3339 
3340    -- NTG
3341    WrtHrTrc('trc_AnnPymNtgYtd:          '||to_char(trc_AnnPymNtgYtd));
3342    WrtHrTrc('trc_AnnPymNtgPtd:          '||to_char(trc_AnnPymNtgPtd));
3343    WrtHrTrc('trc_AnnPymNtgErn:          '||to_char(trc_AnnPymNtgErn));
3344    WrtHrTrc('trc_TxbAnnPymNtgInc:       '||to_char(trc_TxbAnnPymNtgInc));
3345    WrtHrTrc('trc_TxbAnnPymNtgIncWoDon:  '||to_char(trc_TxbAnnPymNtgIncWoDon));
3346    WrtHrTrc('trc_TotLibNtgAP:           '||to_char(trc_TotLibNtgAP ));
3347    WrtHrTrc('trc_LibFyNtgAP:            '||to_char(trc_LibFyNtgAP  ));
3348    WrtHrTrc('trc_LibFpNtgAP:            '||to_char(trc_LibFpNtgAP  ));
3349 
3350    WrtHrTrc('trc_AnnEEDbtNTGYtd:        '||to_char(trc_AnnEEDbtNTGYtd));
3351    WrtHrTrc('trc_AnnEEDbtNtgPtd:        '||to_char(trc_AnnEEDbtNtgPtd));
3352    WrtHrTrc('trc_AnnEEDbtNtgErn:        '||to_char(trc_AnnEEDbtNtgErn));
3353    WrtHrTrc('trc_TxbAnnEEDbtNtgInc:     '||to_char(trc_TxbAnnEEDbtNtgInc));
3354    WrtHrTrc('trc_TxbAnnEEDbtNtgIncWoDon:'||to_char(trc_TxbAnnEEDbtNtgIncWoDon));
3355    WrtHrTrc('trc_TotLibNtgEEDbt:        '||to_char(trc_TotLibNtgEEDbt ));
3356    WrtHrTrc('trc_LibFyNtgEEDbt:         '||to_char(trc_LibFyNtgEEDbt  ));
3357    WrtHrTrc('trc_LibFpNtgEEDbt:         '||to_char(trc_LibFpNtgEEDbt  ));
3358 
3359 
3360 EXCEPTION
3361    WHEN OTHERS THEN
3362       IF xpt_Msg = 'No Error' THEN
3363          xpt_Msg := 'SitCalc: '||TO_CHAR(SQLCODE);
3364       END IF;
3365       RAISE xpt_E;
3366 END SitCalc;
3367 
3368 -------------------------------------------------------------------------------
3369 -- DirCalc                                                                   --
3370 -- Tax Calculation for Directive Assignments                                 --
3371 -------------------------------------------------------------------------------
3372 PROCEDURE DirCalc AS
3373 -- Variables
3374 --
3375    l_Np       BALANCE DEFAULT 0;
3376    l_Sl       BOOLEAN ; -- Bug 14195352
3377 
3378 BEGIN
3379 
3380    hr_utility.set_location('py_za_tx_01032012.DirCalc',1);
3381 -- Identify the calculation
3382 --
3383    trc_CalTyp := 'DirCalc';
3384 
3385 -- Update Global Balance Values with correct TAXABLE values
3386 --
3387    --Fix for bug#10372926
3388    --py_za_tx_utl_01032012.TrvAll;
3389 
3390    hr_utility.set_location('py_za_tx_01032012.DirCalc',2);
3391 
3392    bal_TOT_TXB_PO_YTD  := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
3393 
3394    trc_curMedTxCrEle := greatest(bal_MED_AID_TAX_CR_YTD + bal_ANN_MED_AID_TAX_CR_YTD,0,bal_MED_AID_TAX_CR_USED_YTD + bal_MED_AID_TAX_CR_USED_LS_YTD) ;
3395 -- Normal Income
3396 --
3397    -- Ytd Normal Income
3398    trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
3399    -- Skip the calculation if there is No Income
3400    IF trc_NorIncYtd <> 0 THEN
3401       hr_utility.set_location('py_za_tx_01032012.DirCalc',3);
3402       -- Normal Earnings
3403       trc_NorErn := trc_NorIncYtd;
3404       -- Tax Liability
3405       trc_TotLibNI := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_NorErn);
3406       trc_LibFyNI  := trc_TotLibNI - 0;
3407       trc_TotLibNI := greatest(trc_TotLibNI,0);
3408       trc_LibFpNI  := trc_LibFyNI - (bal_TX_ON_NI_YTD + bal_MED_TAX_CR_USED_NI_YTD);
3409 
3410       -- Start Medical Tax Credit Changes
3411       py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3412                            (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
3413                            ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_NI_YTD
3414                            ,p_Tx_RUN               => trc_LibFpNI
3415                            ,p_Tx_YTD               => bal_TX_ON_NI_YTD
3416                            ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedNI
3417                            ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedNI_Upd
3418                             );
3419       trc_LibFpNI_Upd := trc_LibFpNI - trc_MedTxCrUsedNI_Upd;
3420       trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNI,0);
3421       hr_utility.set_location('    trc_MedTxCrUsedNI:'||trc_MedTxCrUsedNI,10);
3422       hr_utility.set_location('trc_MedTxCrUsedNI_Upd:'||trc_MedTxCrUsedNI_Upd,10);
3423       hr_utility.set_location('      trc_LibFpNI_Upd:'||trc_LibFpNI_Upd,10);
3424       hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3425       -- End Medical Tax Credit Changes
3426 
3427    ELSE
3428       hr_utility.set_location('py_za_tx_01032012.DirCalc',4);
3429       -- Set Cascade Figures and Refund
3430       trc_NorErn     := 0;
3431       trc_TotLibNI   := 0;
3432       trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
3433       trc_MedTxCrUsedNI_Upd := -1 * bal_MED_TAX_CR_USED_NI_YTD;
3434       trc_LibFpNI_Upd := trc_LibFpNI;
3435       trc_LibFpNIOvr := TRUE;
3436    END IF;
3437 
3438 
3439 -- Fringe Benefits
3440 --
3441    -- Ytd Fringe Benefits
3442      trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
3443    -- Skip the calculation if there is No Income
3444    IF trc_FrnBenYtd <> 0 THEN
3445       hr_utility.set_location('py_za_tx_01032012.DirCalc',5);
3446       -- Fringe Benefit Earnings
3447       trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
3448       -- Tax Liability
3449       trc_TotLibFB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_FrnBenErn);
3450       trc_LibFyFB  := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
3451       trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
3452       trc_LibFpFB  := trc_LibFyFB - (bal_TX_ON_FB_YTD + bal_MED_TAX_CR_USED_FB_YTD);
3453 
3454       -- Start Medical Tax Credit Changes
3455       py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3456                            (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
3457                            ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_FB_YTD
3458                            ,p_Tx_RUN               => trc_LibFpFB
3459                            ,p_Tx_YTD               => bal_TX_ON_FB_YTD
3460                            ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedFB
3461                            ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedFB_Upd
3462                             );
3463       trc_LibFpFB_Upd := trc_LibFpFB - trc_MedTxCrUsedFB_Upd;
3464       trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedFB,0);
3465       hr_utility.set_location('    trc_MedTxCrUsedFB:'||trc_MedTxCrUsedFB,10);
3466       hr_utility.set_location('trc_MedTxCrUsedFB_Upd:'||trc_MedTxCrUsedFB_Upd,10);
3467       hr_utility.set_location('      trc_LibFpFB_Upd:'||trc_LibFpFB_Upd,10);
3468       hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3469       -- End Medical Tax Credit Changes
3470 
3471    ELSE
3472       hr_utility.set_location('py_za_tx_01032012.DirCalc',6);
3473       -- Set Cascade Figures and Refund
3474       trc_FrnBenErn  := trc_NorErn;
3475       trc_TotLibFB   := trc_TotLibNI;
3476       trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
3477       trc_MedTxCrUsedFB_Upd := -1 * bal_MED_TAX_CR_USED_FB_YTD;
3478       trc_LibFpFB_Upd := trc_LibFpFB;
3479       trc_LibFpFBOvr := TRUE;
3480    END IF;
3481 
3482 
3483 -- Travel Allowance
3484 --
3485    -- Ytd Travel Allowance
3486    trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
3487    -- Skip the calculation if there is No Income
3488    IF trc_TrvAllYtd <> 0 THEN
3489       hr_utility.set_location('py_za_tx_01032012.DirCalc',7);
3490       -- Travel Allowance Earnings
3491       trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
3492       -- Tax Liability
3493       trc_TotLibTA := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TrvAllErn);
3494       trc_LibFyTA  := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
3495       trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
3496       trc_LibFpTA  := trc_LibFyTA - (bal_TX_ON_TA_YTD + bal_MED_TAX_CR_USED_TA_YTD) ;
3497 
3498       -- Start Medical Tax Credit Changes
3499       py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3500                            (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
3501                            ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_TA_YTD
3502                            ,p_Tx_RUN               => trc_LibFpTA
3503                            ,p_Tx_YTD               => bal_TX_ON_TA_YTD
3504                            ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedTA
3505                            ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedTA_Upd
3506                             );
3507       trc_LibFpTA_Upd := trc_LibFpTA - trc_MedTxCrUsedTA_Upd;
3508       trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedTA,0);
3509       hr_utility.set_location('    trc_MedTxCrUsedTA:'||trc_MedTxCrUsedTA,10);
3510       hr_utility.set_location('trc_MedTxCrUsedTA_Upd:'||trc_MedTxCrUsedTA_Upd,10);
3511       hr_utility.set_location('      trc_LibFpTA_Upd:'||trc_LibFpTA_Upd,10);
3512       hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3513       -- End Medical Tax Credit Changes
3514 
3515    ELSE
3516       hr_utility.set_location('py_za_tx_01032012.DirCalc',8);
3517       -- Set Cascade Figures and Refund
3518       trc_TrvAllErn  := trc_FrnBenErn; --Cascade Figure
3519       trc_TotLibTA   := trc_TotLibFB;
3520       trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
3521       trc_MedTxCrUsedTA_Upd := -1 * bal_MED_TAX_CR_USED_TA_YTD;
3522       trc_LibFpTA_Upd := trc_LibFpTA;
3523       trc_LibFpTAOvr := TRUE;
3524    END IF;
3525 
3526 -- Bonus Provision
3527 --
3528    -- Ytd Bonus Provision
3529    trc_BonProYtd := bal_BP_YTD;
3530    -- Skip the calculation if there is No Income
3531    IF trc_BonProYtd <> 0 THEN
3532       hr_utility.set_location('py_za_tx_01032012.DirCalc',9);
3533       -- Bonus Provision Earnings
3534       trc_BonProErn := trc_BonProYtd + trc_TrvAllErn;
3535       -- Tax Liability
3536       trc_TotLibBP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_BonProErn);
3537       trc_LibFyBP  := trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA);
3538       trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
3539       trc_LibFpBP  := trc_LibFyBP - (bal_TX_ON_BP_YTD + bal_MED_TAX_CR_USED_BP_YTD);
3540 
3541       -- Start Medical Tax Credit Changes
3542       py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3543                            (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
3544                            ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_BP_YTD
3545                            ,p_Tx_RUN               => trc_LibFpBP
3546                            ,p_Tx_YTD               => bal_TX_ON_BP_YTD
3547                            ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedBP
3548                            ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedBP_Upd
3549                             );
3550       trc_LibFpBP_Upd := trc_LibFpBP - trc_MedTxCrUsedBP_Upd;
3551       trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedBP,0);
3552       hr_utility.set_location('    trc_MedTxCrUsedBP:'||trc_MedTxCrUsedBP,10);
3553       hr_utility.set_location('trc_MedTxCrUsedBP_Upd:'||trc_MedTxCrUsedBP_Upd,10);
3554       hr_utility.set_location('      trc_LibFpBP_Upd:'||trc_LibFpBP_Upd,10);
3555       hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3556       -- End Medical Tax Credit Changes
3557 
3558    ELSE
3559       hr_utility.set_location('py_za_tx_01032012.DirCalc',10);
3560       -- Set Cascade Figures and Refund
3561       trc_BonProErn  := trc_TrvAllErn;
3562       trc_TotLibBP   := trc_TotLibTA;
3563       trc_LibFpBP    := -1 * bal_TX_ON_BP_YTD;
3564       trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_YTD;
3565       trc_LibFpBP_Upd := trc_LibFpBP;
3566       trc_LibFpBPOvr := TRUE;
3567    END IF;
3568 
3569 -- Annual Bonus
3570 --
3571    -- Ytd Annual Bonus
3572    trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
3573    -- Skip the calculation if there is No Income
3574    IF trc_AnnBonYtd <> 0 THEN
3575       hr_utility.set_location('py_za_tx_01032012.DirCalc',11);
3576       -- Annual Bonus Earnings
3577       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
3578       -- Tax Liability
3579       trc_TotLibAB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_AnnBonErn);
3580       trc_LibFyAB  := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
3581       trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
3582       -- Check Bonus Provision
3583       IF trc_BonProYtd <> 0 THEN
3584          hr_utility.set_location('py_za_tx_01032012.DirCalc',12);
3585          -- Check Bonus Provision Frequency
3586          IF dbi_BP_TX_RCV = 'B' OR py_za_tx_utl_01032012.SitePeriod THEN
3587             hr_utility.set_location('py_za_tx_01032012.DirCalc',13);
3588             trc_LibFpAB :=
3589             trc_LibFyAB - (bal_TX_ON_BP_YTD
3590                           + bal_MED_TAX_CR_USED_BP_YTD
3591                           + trc_LibFpBP
3592                           + bal_TX_ON_AB_YTD
3593                           + bal_MED_TAX_CR_USED_AB_YTD
3594                           );
3595 
3596              -- Start Medical Tax Credit Changes
3597              py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3598                                   (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
3599                                   ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AB_YTD
3600                                   ,p_Tx_RUN               => trc_LibFpAB
3601                                   ,p_Tx_YTD               => bal_TX_ON_AB_YTD
3602                                   ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAB
3603                                   ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAB_Upd
3604                                    );
3605              trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
3606              trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
3607              hr_utility.set_location('    trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
3608              hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
3609              hr_utility.set_location('      trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
3610              hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3611              -- End Medical Tax Credit Changes
3612 
3613          ELSE
3614             hr_utility.set_location('py_za_tx_01032012.DirCalc',14);
3615             trc_LibFpAB := 0;
3616          END IF;
3617       ELSE
3618          hr_utility.set_location('py_za_tx_01032012.DirCalc',15);
3619          trc_LibFpAB := trc_LibFyAB - (bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
3620 
3621          -- Start Medical Tax Credit Changes
3622          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3623                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
3624                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AB_YTD
3625                               ,p_Tx_RUN               => trc_LibFpAB
3626                               ,p_Tx_YTD               => bal_TX_ON_AB_YTD
3627                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAB
3628                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAB_Upd
3629                                );
3630          trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
3631          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
3632          hr_utility.set_location('    trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
3633          hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
3634          hr_utility.set_location('      trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
3635          hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3636          -- End Medical Tax Credit Changes
3637 
3638       END IF;
3639    ELSE
3640       hr_utility.set_location('py_za_tx_01032012.DirCalc',16);
3641       -- Set Cascade Figures and Refund
3642       trc_LibFpAB    := -1 * bal_TX_ON_AB_YTD;
3643       trc_LibFpABOvr := TRUE;
3644       trc_MedTxCrUsedAB_Upd := -1 * bal_MED_TAX_CR_USED_AB_YTD;
3645       trc_LibFpAB_Upd := trc_LibFpAB ;
3646       IF dbi_BP_TX_RCV = 'A' AND py_za_tx_utl_01032012.SitePeriod THEN
3647          hr_utility.set_location('py_za_tx_01032012.DirCalc',17);
3648          trc_LibFpBP    := -1 * bal_TX_ON_BP_YTD;
3649 	 trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_YTD;
3650          trc_LibFpBPOvr := TRUE;
3651          trc_LibFpAPOvr := TRUE;
3652          trc_LibFpBP_Upd := trc_LibFpBP;
3653          trc_AnnBonErn  := trc_TrvAllErn;
3654          trc_TotLibAB   := trc_TotLibTA;
3655       ELSE
3656          hr_utility.set_location('py_za_tx_01032012.DirCalc',18);
3657          trc_AnnBonErn  := trc_BonProErn;
3658          trc_TotLibAB   := trc_TotLibBP;
3659       END IF;
3660    END IF;
3661 
3662 
3663 -- Annual Payments
3664 --
3665    -- Ytd Annual Payments
3666    trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
3667    -- Skip the calculation if there is No Income
3668    IF trc_AnnPymYtd <> 0 THEN
3669       hr_utility.set_location('py_za_tx_01032012.DirCalc',19);
3670       -- Annual Payments Earnings
3671       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
3672       -- Tax Liability
3673       trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_AnnPymErn);
3674       trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
3675       trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
3676       trc_LibFpAP  := trc_LibFyAP - (bal_TX_ON_AP_YTD + bal_MED_TAX_CR_USED_AP_YTD);
3677 
3678       -- Start Medical Tax Credit Changes
3679       py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3680                            (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
3681                            ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AP_YTD
3682                            ,p_Tx_RUN               => trc_LibFpAP
3683                            ,p_Tx_YTD               => bal_TX_ON_AP_YTD
3684                            ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAP
3685                            ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAP_Upd
3686                             );
3687       trc_LibFpAP_Upd := trc_LibFpAP - trc_MedTxCrUsedAP_Upd;
3688       trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAP,0);
3689       hr_utility.set_location('    trc_MedTxCrUsedAP:'||trc_MedTxCrUsedAP,10);
3690       hr_utility.set_location('trc_MedTxCrUsedAP_Upd:'||trc_MedTxCrUsedAP_Upd,10);
3691       hr_utility.set_location('      trc_LibFpAP_Upd:'||trc_LibFpAP_Upd,10);
3692       hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3693       -- End Medical Tax Credit Changes
3694 
3695    ElSE
3696       hr_utility.set_location('py_za_tx_01032012.DirCalc',20);
3697       -- Set Cascade Figures and Refund
3698       trc_AnnPymErn  := trc_AnnBonErn;
3699       trc_MedTxCrUsedAP_Upd := -1 * bal_MED_TAX_CR_USED_AP_YTD;
3700       trc_TotLibAP   := trc_TotLibAB;
3701       trc_LibFpAP    := -1 * bal_TX_ON_AP_YTD;
3702       trc_LibFpAP_Upd := trc_LibFpAP ;
3703       trc_LibFpAPOvr := TRUE;
3704    END IF;
3705 
3706 -- Public Office Allowance
3707 --
3708    -- Ytd Public Office Allowance
3709    trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
3710    -- Skip the calculation if there is No Income
3711    IF trc_PblOffYtd <> 0 THEN
3712       hr_utility.set_location('py_za_tx_01032012.DirCalc',21);
3713       -- Public Office Allowance Earnings
3714       trc_PblOffErn := trc_PblOffYtd + trc_AnnPymErn;
3715       -- Tax Liability
3716       trc_TotLibPO := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_PblOffErn);
3717       trc_LibFyPO  := trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP);
3718       trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
3719       trc_LibFpPO  := trc_LibFyPO - (bal_TX_ON_PO_YTD + bal_MED_TAX_CR_USED_PO_YTD);
3720 
3721       -- Start Medical Tax Credit Changes
3722       py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3723                            (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
3724                            ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_PO_YTD
3725                            ,p_Tx_RUN               => trc_LibFpPO
3726                            ,p_Tx_YTD               => bal_TX_ON_PO_YTD
3727                            ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedPO
3728                            ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedPO_Upd
3729                             );
3730       trc_LibFpPO_Upd := trc_LibFpPO - trc_MedTxCrUsedPO_Upd;
3731       trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedPO,0);
3732       hr_utility.set_location('    trc_MedTxCrUsedPO:'||trc_MedTxCrUsedPO,10);
3733       hr_utility.set_location('trc_MedTxCrUsedPO_Upd:'||trc_MedTxCrUsedPO_Upd,10);
3734       hr_utility.set_location('      trc_LibFpPO_Upd:'||trc_LibFpPO_Upd,10);
3735       hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3736       -- End Medical Tax Credit Changes
3737 
3738    ELSE
3739       hr_utility.set_location('py_za_tx_01032012.DirCalc',22);
3740       -- Set Cascade Figures and Refund
3741       trc_PblOffErn  := trc_AnnPymErn;
3742       trc_TotLibPO   := trc_TotLibAP;
3743       trc_LibFpPO    := -1 * bal_TX_ON_PO_YTD;
3744       trc_MedTxCrUsedPO_Upd := -1 * bal_MED_TAX_CR_USED_PO_YTD;
3745       trc_LibFpPO_Upd := trc_LibFpPO;
3746       trc_LibFpPOOvr := TRUE;
3747    END IF;
3748 
3749    -- Net to Gross Annual Payments.
3750    -- Ytd Net to Gross Annual Payments
3751    trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
3752    -- Skip the calculation if there is No Income
3753    IF trc_AnnPymNtgYtd <> 0 THEN
3754       hr_utility.set_location('py_za_tx_01032012.DirCalc',23);
3755       -- Annual Payments Net to Gross Earnings
3756       trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_PblOffErn;
3757       -- Tax Liability
3758       trc_TotLibNtgAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_AnnPymNtgErn);
3759       trc_LibFyNtgAP  := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibPO);
3760       trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibPO);
3761       trc_LibFpNtgAP  := trc_LibFyNtgAP - (bal_TX_ON_AP_NTG_YTD + bal_MED_TAX_CR_USED_NG_YTD);
3762 
3763       -- Start Medical Tax Credit Changes
3764       py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3765                            (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
3766                            ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_NG_YTD
3767                            ,p_Tx_RUN               => trc_LibFpNtgAP
3768                            ,p_Tx_YTD               => bal_TX_ON_AP_NTG_YTD
3769                            ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedNtgAP
3770                            ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedNtgAP_Upd
3771                             );
3772       trc_LibFpNtgAP_Upd := trc_LibFpNtgAP - trc_MedTxCrUsedNtgAP_Upd;
3773       trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgAP,0);
3774       hr_utility.set_location('    trc_MedTxCrUsedNtgAP:'||trc_MedTxCrUsedNtgAP,10);
3775       hr_utility.set_location('trc_MedTxCrUsedNtgAP_Upd:'||trc_MedTxCrUsedNtgAP_Upd,10);
3776       hr_utility.set_location('      trc_LibFpNtgAP_Upd:'||trc_LibFpNtgAP_Upd,10);
3777       hr_utility.set_location('       trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3778       -- End Medical Tax Credit Changes
3779 
3780    ELSE
3781       hr_utility.set_location('py_za_tx_01032012.DirCalc',24);
3782       -- Set Cascade Figures and Refund
3783       trc_AnnPymNtgErn  := trc_PblOffErn;
3784       trc_TotLibNtgAP   := trc_TotLibPO;
3785       trc_MedTxCrUsedNtgAP_Upd := -1 * bal_MED_TAX_CR_USED_NG_YTD;
3786       trc_LibFpNtgAP    := -1 * bal_TX_ON_AP_NTG_YTD;
3787       trc_LibFpNtgAP_Upd := trc_LibFpNtgAP;
3788       trc_LibFpNtgAPOvr := TRUE;
3789    END IF;
3790 
3791    -- Ytd Net to Gross EE Debt arised due to Net to Gross Annual Payments
3792    trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
3793    -- Skip the calculation if there is No Income
3794    IF trc_AnnEEDbtNtgYtd <> 0 THEN
3795       hr_utility.set_location('py_za_tx_01032012.DirCalc',25);
3796       -- Annual EE Debt Net to Gross Earnings
3797       trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
3798 
3799       -- Tax Liability
3800       trc_TotLibNtgEEDbt := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_AnnEEDbtNtgErn);
3801       trc_LibFyNtgEEDbt  := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
3802       trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
3803       trc_LibFpNtgEEDbt  := trc_LibFyNtgEEDbt - (bal_TX_ON_EE_DBT_NTG_YTD + bal_MED_TAX_CR_USED_EE_YTD);
3804 
3805       -- Start Medical Tax Credit Changes
3806       py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3807                            (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
3808                            ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_EE_YTD
3809                            ,p_Tx_RUN               => trc_LibFpNtgEEDbt
3810                            ,p_Tx_YTD               => bal_TX_ON_EE_DBT_NTG_YTD
3811                            ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedNtgEEDbt
3812                            ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedNtgEEDbt_Upd
3813                             );
3814       trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt - trc_MedTxCrUsedNtgEEDbt_Upd;
3815       trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgEEDbt,0);
3816       hr_utility.set_location('    trc_MedTxCrUsedNtgEEDbt:'||trc_MedTxCrUsedNtgEEDbt,10);
3817       hr_utility.set_location('trc_MedTxCrUsedNtgEEDbt_Upd:'||trc_MedTxCrUsedNtgEEDbt_Upd,10);
3818       hr_utility.set_location('      trc_LibFpNtgEEDbt_Upd:'||trc_LibFpNtgEEDbt_Upd,10);
3819       hr_utility.set_location('          trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3820       -- End Medical Tax Credit Changes
3821 
3822    ELSE
3823        hr_utility.set_location('py_za_tx_01032012.DirCalc',26);
3824        -- Set Cascade Figures and Refund
3825        trc_AnnEEDbtNtgErn   := trc_AnnPymNtgErn;
3826        trc_TotLibNtgEEDbt   := trc_TotLibNtgAP;
3827        trc_LibFpNtgEEDbt    := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
3828        trc_MedTxCrUsedNtgEEDbt_Upd := -1 * bal_MED_TAX_CR_USED_EE_YTD;
3829        trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt;
3830        trc_LibFpNtgEEDbtOvr := TRUE;
3831    END IF;
3832 
3833    trc_LibFpNI := trc_LibFpNI_Upd;
3834    trc_LibFpFB := trc_LibFpFB_Upd;
3835    trc_LibFpTA := trc_LibFpTA_Upd;
3836    trc_LibFpBP := trc_LibFpBP_Upd;
3837    trc_LibFpAB := trc_LibFpAB_Upd;
3838    trc_LibFpAP := trc_LibFpAP_Upd;
3839    trc_LibFpPO := trc_LibFpPO_Upd;
3840    trc_LibFpNtgAP := trc_LibFpNtgAP_Upd;
3841    trc_LibFpNtgEEDbt := trc_LibFpNtgEEDbt_Upd;
3842 
3843 -- Net Pay Validation
3844 --
3845 -- Bug 14195352
3846 -- Tax to be refunded only if net taxable earning is below SITE limit
3847 
3848    IF trc_AnnEEDbtNtgErn < glb_ZA_SIT_LIM THEN
3849       l_Sl := TRUE;
3850    ELSE
3851       l_Sl := FALSE;
3852    END IF;
3853       py_za_tx_utl_01032012.ValidateTaxOns(p_Rf => l_Sl);
3854 
3855    hr_utility.set_location('py_za_tx_01032012.DirCalc',27);
3856 
3857 -- Tax Percentage Indicator
3858 --
3859    IF dbi_TX_STA    IN ('D','P') THEN
3860       hr_utility.set_location('py_za_tx_01032012.DirCalc',28);
3861       trc_TxPercVal := dbi_TX_DIR_VAL;
3862    ELSIF dbi_TX_STA = 'E' THEN
3863       hr_utility.set_location('py_za_tx_01032012.DirCalc',29);
3864       trc_TxPercVal := glb_ZA_CC_TX_PRC;
3865    ELSIF dbi_TX_STA = 'F' THEN
3866       hr_utility.set_location('py_za_tx_01032012.DirCalc',30);
3867       trc_TxPercVal := glb_ZA_TMP_TX_RTE;
3868    ELSIF dbi_TX_STA = 'J' THEN
3869       hr_utility.set_location('py_za_tx_01032012.DirCalc',31);
3870       trc_TxPercVal := glb_ZA_PER_SERV_COMP_PERC;
3871    ELSIF dbi_TX_STA = 'K' THEN
3872       hr_utility.set_location('py_za_tx_01032012.DirCalc',32);
3873       trc_TxPercVal := glb_ZA_PER_SERV_TRST_PERC;
3874    ELSIF dbi_TX_STA = 'L' THEN
3875       hr_utility.set_location('py_za_tx_01032012.DirCalc',33);
3876       trc_TxPercVal := glb_ZA_PER_SERV_COMP_PERC;
3877    ELSE
3878       hr_utility.set_location('py_za_tx_01032012.DirCalc',34);
3879       trc_TxPercVal := 0;
3880    END IF;
3881 
3882    hr_utility.set_location('py_za_tx_01032012.DirCalc',35);
3883 
3884    -- Base Income
3885    WrtHrTrc('trc_BseErn:                '||to_char(trc_BseErn));
3886    WrtHrTrc('trc_TxbBseInc:             '||to_char(trc_TxbBseInc));
3887    WrtHrTrc('trc_TotLibBse:             '||to_char(trc_TotLibBse));
3888    -- Normal Income
3889    WrtHrTrc('trc_NorIncYtd:             '||to_char(trc_NorIncYtd));
3890    WrtHrTrc('trc_NorIncPtd:             '||to_char(trc_NorIncPtd));
3891    WrtHrTrc('trc_NorErn:                '||to_char(trc_NorErn));
3892    WrtHrTrc('trc_TxbNorInc:             '||to_char(trc_TxbNorInc));
3893    WrtHrTrc('trc_TotLibNI:              '||to_char(trc_TotLibNI));
3894    WrtHrTrc('trc_LibFyNI:               '||to_char(trc_LibFyNI));
3895    WrtHrTrc('trc_LibFpNI:               '||to_char(trc_LibFpNI));
3896    -- Fringe Benefits
3897    WrtHrTrc('trc_FrnBenYtd:             '||to_char(trc_FrnBenYtd));
3898    WrtHrTrc('trc_FrnBenPtd:             '||to_char(trc_FrnBenPtd));
3899    WrtHrTrc('trc_FrnBenErn:             '||to_char(trc_FrnBenErn));
3900    WrtHrTrc('trc_TxbFrnInc:             '||to_char(trc_TxbFrnInc));
3901    WrtHrTrc('trc_TotLibFB:              '||to_char(trc_TotLibFB));
3902    WrtHrTrc('trc_LibFyFB:               '||to_char(trc_LibFyFB));
3903    WrtHrTrc('trc_LibFpFB:               '||to_char(trc_LibFpFB));
3904    -- Travel Allowance
3905    WrtHrTrc('trc_TrvAllYtd:             '||to_char(trc_TrvAllYtd));
3906    WrtHrTrc('trc_TrvAllPtd:             '||to_char(trc_TrvAllPtd));
3907    WrtHrTrc('trc_TrvAllErn:             '||to_char(trc_TrvAllErn));
3908    WrtHrTrc('trc_TxbTrvInc:             '||to_char(trc_TxbTrvInc));
3909    WrtHrTrc('trc_TotLibTA:              '||to_char(trc_TotLibTA));
3910    WrtHrTrc('trc_LibFyTA:               '||to_char(trc_LibFyTA));
3911    WrtHrTrc('trc_LibFpTA:               '||to_char(trc_LibFpTA));
3912    -- Bonus Provision
3913    WrtHrTrc('trc_BonProYtd:             '||to_char(trc_BonProYtd));
3914    WrtHrTrc('trc_BonProPtd:             '||to_char(trc_BonProPtd));
3915    WrtHrTrc('trc_BonProErn:             '||to_char(trc_BonProErn));
3916    WrtHrTrc('trc_TxbBonProInc:          '||to_char(trc_TxbBonProInc));
3917    WrtHrTrc('trc_TotLibBP:              '||to_char(trc_TotLibBP));
3918    WrtHrTrc('trc_LibFyBP:               '||to_char(trc_LibFyBP));
3919    WrtHrTrc('trc_LibFpBP:               '||to_char(trc_LibFpBP));
3920    -- Annual Bonus
3921    WrtHrTrc('trc_AnnBonYtd:             '||to_char(trc_AnnBonYtd));
3922    WrtHrTrc('trc_AnnBonPtd:             '||to_char(trc_AnnBonPtd));
3923    WrtHrTrc('trc_AnnBonErn:             '||to_char(trc_AnnBonErn));
3924    WrtHrTrc('trc_TxbAnnBonInc:          '||to_char(trc_TxbAnnBonInc));
3925    WrtHrTrc('trc_TotLibAB:              '||to_char(trc_TotLibAB));
3926    WrtHrTrc('trc_LibFyAB:               '||to_char(trc_LibFyAB));
3927    WrtHrTrc('trc_LibFpAB:               '||to_char(trc_LibFpAB));
3928    -- Annual Payments
3929    WrtHrTrc('trc_AnnPymYtd:             '||to_char(trc_AnnPymYtd));
3930    WrtHrTrc('trc_AnnPymPtd:             '||to_char(trc_AnnPymPtd));
3931    WrtHrTrc('trc_AnnPymErn:             '||to_char(trc_AnnPymErn));
3932    WrtHrTrc('trc_TxbAnnPymInc:          '||to_char(trc_TxbAnnPymInc));
3933    WrtHrTrc('trc_TotLibAP:              '||to_char(trc_TotLibAP));
3934    WrtHrTrc('trc_LibFyAP:               '||to_char(trc_LibFyAP));
3935    WrtHrTrc('trc_LibFpAP:               '||to_char(trc_LibFpAP));
3936    -- Pubilc Office Allowance
3937    WrtHrTrc('trc_PblOffYtd:             '||to_char(trc_PblOffYtd));
3938    WrtHrTrc('trc_PblOffPtd:             '||to_char(trc_PblOffPtd));
3939    WrtHrTrc('trc_PblOffErn:             '||to_char(trc_PblOffErn));
3940    WrtHrTrc('trc_TxbPblOffInc:          '||to_char(trc_TxbPblOffInc));
3941    WrtHrTrc('trc_TotLibPO:              '||to_char(trc_TotLibPO));
3942    WrtHrTrc('trc_LibFyPO:               '||to_char(trc_LibFyPO));
3943    WrtHrTrc('trc_LibFpPO:               '||to_char(trc_LibFpPO));
3944 
3945    -- NTG
3946    WrtHrTrc('trc_AnnPymNtgYtd:          '||to_char(trc_AnnPymNtgYtd));
3947    WrtHrTrc('trc_AnnPymNtgPtd:          '||to_char(trc_AnnPymNtgPtd));
3948    WrtHrTrc('trc_AnnPymNtgErn:          '||to_char(trc_AnnPymNtgErn));
3949    WrtHrTrc('trc_TxbAnnPymNtgInc:       '||to_char(trc_TxbAnnPymNtgInc));
3950    WrtHrTrc('trc_TotLibNtgAP:           '||to_char(trc_TotLibNtgAP ));
3951    WrtHrTrc('trc_LibFyNtgAP:            '||to_char(trc_LibFyNtgAP  ));
3952    WrtHrTrc('trc_LibFpNtgAP:            '||to_char(trc_LibFpNtgAP  ));
3953 
3954    WrtHrTrc('trc_AnnEEDbtNTGYtd:        '||to_char(trc_AnnEEDbtNTGYtd));
3955    WrtHrTrc('trc_AnnEEDbtNtgPtd:        '||to_char(trc_AnnEEDbtNtgPtd));
3956    WrtHrTrc('trc_AnnEEDbtNtgErn:        '||to_char(trc_AnnEEDbtNtgErn));
3957    WrtHrTrc('trc_TxbAnnEEDbtNtgInc:     '||to_char(trc_TxbAnnEEDbtNtgInc));
3958    WrtHrTrc('trc_TotLibNtgEEDbt:        '||to_char(trc_TotLibNtgEEDbt ));
3959    WrtHrTrc('trc_LibFyNtgEEDbt:         '||to_char(trc_LibFyNtgEEDbt  ));
3960    WrtHrTrc('trc_LibFpNtgEEDbt:         '||to_char(trc_LibFpNtgEEDbt  ));
3961 
3962 EXCEPTION
3963    WHEN OTHERS THEN
3964       IF xpt_Msg = 'No Error' THEN
3965          xpt_Msg := 'DirCalc: '||TO_CHAR(SQLCODE);
3966       END IF;
3967       RAISE xpt_E;
3968 END DirCalc;
3969 
3970 -------------------------------------------------------------------------------
3971 -- BasCalc                                                                   --
3972 -- Pre-Earnings Tax Calculation                                              --
3973 -------------------------------------------------------------------------------
3974 PROCEDURE BasCalc AS
3975 -- Variables
3976 --
3977    l_Np       BALANCE;
3978    l_65Year   DATE;
3979 
3980 BEGIN
3981 
3982    hr_utility.set_location('py_za_tx_01032012.BasCalc',1);
3983 -- Identify the Calculation
3984 --
3985    trc_CalTyp := 'BasCalc';
3986 
3987 -- Rebates
3988    py_za_tx_utl_01032012.SetRebates;
3989 
3990 -- Abatements
3991    py_za_tx_utl_01032012.Abatements;
3992 
3993    trc_curMedTxCrEle := greatest(bal_MED_AID_TAX_CR_YTD + bal_ANN_MED_AID_TAX_CR_YTD,0,bal_MED_AID_TAX_CR_USED_YTD + bal_MED_AID_TAX_CR_USED_LS_YTD);
3994 
3995 -- Deemed Remuneration
3996 --
3997    -- Run Deemed Remuneration
3998    trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
3999 
4000    -- Skip the calculation if there is No Income
4001    IF trc_DmdRmnRun <> 0 THEN
4002       hr_utility.set_location('py_za_tx_01032012.BasCalc',2);
4003       -- Taxable Deemed Remuneration
4004       trc_TxbDmdRmn := trc_DmdRmnRun;
4005       -- Threshold Check
4006       IF trc_TxbDmdRmn >= trc_Threshold THEN
4007          hr_utility.set_location('py_za_tx_01032012.BasCalc',3);
4008          -- Tax Liability
4009          trc_TotLibDR := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbDmdRmn);
4010       ELSE
4011          hr_utility.set_location('py_za_tx_01032012.BasCalc',4);
4012          trc_TotLibDR := 0;
4013       END IF;
4014    ELSE
4015       hr_utility.set_location('py_za_tx_01032012.BasCalc',5);
4016       trc_TotLibDR := 0;
4017    END IF;
4018 
4019    hr_utility.set_location('py_za_tx_01032012.BasCalc',6);
4020 
4021 -- Base Earnings
4022 --
4023    --Base Earnings
4024    trc_BseErn := bal_TOT_TXB_AB_PTD + bal_TOT_TXB_AP_PTD + bal_TOT_TXB_AP_NTG_YTD;
4025       -- Estimate Base Taxable Income
4026       trc_TxbBseInc := trc_BseErn * dbi_ZA_PAY_PRDS_PER_YR;
4027    -- Threshold Check
4028    IF trc_TxbBseInc >= trc_Threshold THEN
4029       hr_utility.set_location('py_za_tx_01032012.BasCalc',7);
4030       -- Tax Liability
4031       trc_TotLibBse := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbBseInc);
4032       trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
4033    ELSE
4034       hr_utility.set_location('py_za_tx_01032012.BasCalc',8);
4035       trc_TotLibBse := trc_TotLibDR;
4036    END IF;
4037 
4038    hr_utility.set_location('py_za_tx_01032012.BasCalc',9);
4039 
4040 -- Annual Bonus
4041 --
4042    -- Ytd Annual Bonus
4043    trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
4044    -- Skip the calculation if there is No Income
4045    IF trc_AnnBonYtd <> 0 THEN
4046       hr_utility.set_location('py_za_tx_01032012.BasCalc',10);
4047       -- Annual Bonus Earnings
4048       trc_AnnBonErn := trc_AnnBonYtd + trc_TxbBseInc;
4049       -- Taxable Annual Bonus Income
4050       --TYS2010
4051       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4052       trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
4053       trc_TxbAnnBonInc      :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
4054 
4055       -- Threshold Check
4056       IF trc_TxbAnnBonInc >= trc_Threshold THEN
4057          hr_utility.set_location('py_za_tx_01032012.BasCalc',11);
4058          -- Tax Liability
4059          trc_TotLibAB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnBonInc);
4060          trc_LibFyAB  := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
4061          trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
4062          -- Check Bonus Provision
4063          IF bal_BP_YTD <> 0 THEN
4064             hr_utility.set_location('py_za_tx_01032012.BasCalc',12);
4065             -- Check Bonus Provision Frequency
4066             IF dbi_BP_TX_RCV = 'A' THEN
4067                hr_utility.set_location('py_za_tx_01032012.BasCalc',13);
4068                trc_LibFpAB := 0;
4069             ELSE
4070                hr_utility.set_location('py_za_tx_01032012.BasCalc',14);
4071                trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD +  bal_MED_TAX_CR_USED_BP_YTD
4072                                             + bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
4073 
4074                -- Start Medical Tax Credit Changes
4075                py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4076                                     (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
4077                                     ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AB_YTD
4078                                     ,p_Tx_RUN               => trc_LibFpAB
4079                                     ,p_Tx_YTD               => bal_TX_ON_AB_YTD
4080                                     ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAB
4081                                     ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAB_Upd
4082                                      );
4083                trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
4084                trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
4085                hr_utility.set_location('    trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
4086                hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
4087                hr_utility.set_location('      trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
4088                hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4089                -- End Medical Tax Credit Changes
4090 
4091             END IF;
4092          ELSE
4093             hr_utility.set_location('py_za_tx_01032012.BasCalc',15);
4094             trc_LibFpAB := trc_LibFyAB - (bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
4095 
4096             -- Start Medical Tax Credit Changes
4097             py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4098                                  (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
4099                                  ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AB_YTD
4100                                  ,p_Tx_RUN               => trc_LibFpAB
4101                                  ,p_Tx_YTD               => bal_TX_ON_AB_YTD
4102                                  ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAB
4103                                  ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAB_Upd
4104                                   );
4105             trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
4106             trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
4107             hr_utility.set_location('    trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
4108             hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
4109             hr_utility.set_location('      trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
4110             hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4111             -- End Medical Tax Credit Changes
4112 
4113          END IF;
4114       ELSE
4115          hr_utility.set_location('py_za_tx_01032012.BasCalc',16);
4116          trc_TotLibAB := trc_TotLibBse;
4117       END IF;
4118    ELSE
4119       hr_utility.set_location('py_za_tx_01032012.BasCalc',17);
4120       trc_AnnBonErn    := trc_TxbBseInc; -- Bug 14024624
4121       trc_TotLibAB     := trc_TotLibBse;
4122       trc_TxbAnnBonInc := trc_TxbBseInc;
4123    END IF;
4124 
4125    hr_utility.set_location('py_za_tx_01032012.BasCalc',18);
4126 
4127 -- Annual Payments
4128 --
4129    -- Ytd Annual Payments
4130    trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
4131    -- Skip the calculation if there is No Income
4132    IF trc_AnnPymYtd <> 0 THEN
4133       hr_utility.set_location('py_za_tx_01032012.BasCalc',19);
4134    -- Taxable Annual Payments Income
4135    /* Commented for TYS2010
4136       trc_TxbAnnPymInc := trc_AnnPymYtd + trc_TxbAnnBonInc;  */
4137       --Added for TYS2010
4138       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
4139       trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
4140       trc_TxbAnnPymInc      :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
4141 
4142    -- Threshold Check
4143       IF trc_TxbAnnPymInc >= trc_Threshold THEN
4144          hr_utility.set_location('py_za_tx_01032012.BasCalc',20);
4145       -- Tax Liability
4146          trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymInc);
4147          trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
4148          trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
4149          trc_LibFpAP  := trc_LibFyAP - (bal_TX_ON_AP_YTD + bal_MED_TAX_CR_USED_AP_YTD);
4150 
4151          -- Start Medical Tax Credit Changes
4152          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4153                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
4154                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AP_YTD
4155                               ,p_Tx_RUN               => trc_LibFpAP
4156                               ,p_Tx_YTD               => bal_TX_ON_AP_YTD
4157                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAP
4158                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAP_Upd
4159                                );
4160          trc_LibFpAP_Upd := trc_LibFpAP - trc_MedTxCrUsedAP_Upd;
4161          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAP,0);
4162          hr_utility.set_location('    trc_MedTxCrUsedAP:'||trc_MedTxCrUsedAP,10);
4163          hr_utility.set_location('trc_MedTxCrUsedAP_Upd:'||trc_MedTxCrUsedAP_Upd,10);
4164          hr_utility.set_location('      trc_LibFpAP_Upd:'||trc_LibFpAP_Upd,10);
4165          hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4166          -- End Medical Tax Credit Changes
4167 
4168       ELSE
4169          hr_utility.set_location('py_za_tx_01032012.BasCalc',21);
4170         /* NULL; */
4171         --Added NTG
4172          trc_TotLibAP :=trc_TotLibAB;
4173       END IF;
4174    ELSE
4175       hr_utility.set_location('py_za_tx_01032012.BasCalc',22);
4176       --NULL;
4177       --Added NTG
4178       trc_AnnPymErn    := trc_AnnBonErn; -- Bug 14024624
4179       trc_TotLibAP     := trc_TotLibAB;
4180       trc_TxbAnnPymInc := trc_TxbAnnBonInc;
4181    END IF;
4182 
4183 -- Net to Gross Annual Payments.
4184 
4185  -- Ytd Net to Gross Annual Payments
4186    trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
4187    -- Skip the calculation if there is No Income
4188    IF trc_AnnPymNtgYtd <> 0 THEN
4189       hr_utility.set_location('py_za_tx_01032012.BasCalc',23);
4190       -- Annual Payments Net to Gross Earnings
4191       trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_AnnPymErn;
4192 
4193       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4194       -- Taxable Annual Payments Income
4195       trc_TxbAnnPymNtgIncWoDon := trc_AnnPymNtgErn - trc_AnnTotAbm;
4196       trc_TxbAnnPymNtgInc :=trc_TxbAnnPymNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymNtgIncWoDon,trc_AnnDonAmt);
4197 
4198       -- Threshold Check
4199       IF trc_TxbAnnPymNtgInc >= trc_Threshold THEN
4200          hr_utility.set_location('py_za_tx_01032012.BasCalc',24);
4201          -- Tax Liability
4202          trc_TotLibNtgAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymNtgInc);
4203          trc_LibFyNtgAP  := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibAP);
4204          trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibAP);
4205          trc_LibFpNtgAP  := trc_LibFyNtgAP - (bal_TX_ON_AP_NTG_YTD + bal_MED_TAX_CR_USED_NG_YTD);
4206 
4207          -- Start Medical Tax Credit Changes
4208          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4209                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
4210                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_NG_YTD
4211                               ,p_Tx_RUN               => trc_LibFpNtgAP
4212                               ,p_Tx_YTD               => bal_TX_ON_AP_NTG_YTD
4213                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedNtgAP
4214                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedNtgAP_Upd
4215                                );
4216          trc_LibFpNtgAP_Upd := trc_LibFpNtgAP - trc_MedTxCrUsedNtgAP_Upd;
4217          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgAP,0);
4218          hr_utility.set_location('    trc_MedTxCrUsedNtgAP:'||trc_MedTxCrUsedNtgAP,10);
4219          hr_utility.set_location('trc_MedTxCrUsedNtgAP_Upd:'||trc_MedTxCrUsedNtgAP_Upd,10);
4220          hr_utility.set_location('      trc_LibFpNtgAP_Upd:'||trc_LibFpNtgAP_Upd,10);
4221          hr_utility.set_location('       trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4222          -- End Medical Tax Credit Changes
4223 
4224       ELSE
4225          hr_utility.set_location('py_za_tx_01032012.BasCalc',25);
4226          trc_TotLibNtgAP   := trc_TotLibAP;
4227       END IF;
4228    ELSE
4229       hr_utility.set_location('py_za_tx_01032012.BasCalc',26);
4230       trc_AnnPymNtgErn     := trc_AnnPymErn; -- Bug 14024624
4231       trc_TxbAnnPymNtgInc  := trc_TxbAnnPymInc;
4232       trc_TotLibNtgAP      := trc_TotLibAP;
4233    END IF;
4234 
4235    -- Ytd Net to Gross EE Debt due to Net to Gross Annual Payments
4236    trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
4237    -- Skip the calculation if there is No Income
4238    IF trc_AnnEEDbtNtgYtd <> 0 THEN
4239       hr_utility.set_location('py_za_tx_01032012.BasCalc',27);
4240       -- Annual EE Debt Net to Gross Earnings
4241       trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
4242 
4243       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4244       trc_TxbAnnEEDbtNtgIncWoDon := trc_AnnEEDbtNtgErn - trc_AnnTotNTGAbm;
4245       trc_TxbAnnEEDbtNtgInc :=trc_TxbAnnEEDbtNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnEEDbtNtgIncWoDon,trc_AnnDonAmt);
4246 
4247       -- Threshold Check
4248       IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
4249          hr_utility.set_location('py_za_tx_01032012.BasCalc',28);
4250          -- Tax Liability
4251          trc_TotLibNtgEEDbt := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnEEDbtNtgInc);
4252          trc_LibFyNtgEEDbt  := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
4253          trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
4254 
4255          hr_utility.set_location('py_za_tx_01032012.BasCalc',29);
4256          trc_LibFpNtgEEDbt  := trc_LibFyNtgEEDbt - (bal_TX_ON_EE_DBT_NTG_YTD + bal_MED_TAX_CR_USED_EE_YTD);
4257 
4258          -- Start Medical Tax Credit Changes
4259          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4260                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
4261                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_EE_YTD
4262                               ,p_Tx_RUN               => trc_LibFpNtgEEDbt
4263                               ,p_Tx_YTD               => bal_TX_ON_EE_DBT_NTG_YTD
4264                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedNtgEEDbt
4265                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedNtgEEDbt_Upd
4266                                );
4267          trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt - trc_MedTxCrUsedNtgEEDbt_Upd;
4268          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgEEDbt,0);
4269          hr_utility.set_location('    trc_MedTxCrUsedNtgEEDbt:'||trc_MedTxCrUsedNtgEEDbt,10);
4270          hr_utility.set_location('trc_MedTxCrUsedNtgEEDbt_Upd:'||trc_MedTxCrUsedNtgEEDbt_Upd,10);
4271          hr_utility.set_location('      trc_LibFpNtgEEDbt_Upd:'||trc_LibFpNtgEEDbt_Upd,10);
4272          hr_utility.set_location('          trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4273          -- End Medical Tax Credit Changes
4274 
4275       ELSE
4276          hr_utility.set_location('py_za_tx_01032012.BasCalc',30);
4277          trc_TotLibNtgEEDbt   := trc_TotLibNtgAP;
4278       END IF;
4279    ELSE
4280       hr_utility.set_location('py_za_tx_01032012.BasCalc',31);
4281       trc_AnnEEDbtNtgErn     := trc_AnnPymNtgErn; -- Bug 14024624
4282       trc_TxbAnnEEDbtNtgInc  := trc_TxbAnnPymNtgInc;
4283       trc_TotLibNtgEEDbt      := trc_TotLibNtgAP;
4284    END IF;
4285 
4286    trc_LibFpAB := trc_LibFpAB_Upd;
4287    trc_LibFpAP := trc_LibFpAP_Upd;
4288    trc_LibFpNtgAP := trc_LibFpNtgAP_Upd;
4289    trc_LibFpNtgEEDbt := trc_LibFpNtgEEDbt_Upd;
4290 
4291 -- Net Pay Validation
4292 --
4293    py_za_tx_utl_01032012.ValidateTaxOns;
4294 
4295    -- Deemed Remuneration
4296    WrtHrTrc('trc_TxbDmdRmn:             '||to_char(trc_TxbDmdRmn));
4297    WrtHrTrc('trc_TotLibDR:              '||to_char(trc_TotLibDR));
4298    WrtHrTrc('trc_LibFyDR:               '||to_char(trc_LibFyDR));
4299    WrtHrTrc('trc_LibFpDR:               '||to_char(trc_LibFpDR));
4300    -- Base Income
4301    WrtHrTrc('trc_BseErn:                '||to_char(trc_BseErn));
4302    WrtHrTrc('trc_TxbBseInc:             '||to_char(trc_TxbBseInc));
4303    WrtHrTrc('trc_TotLibBse:             '||to_char(trc_TotLibBse));
4304    -- Normal Income
4305    WrtHrTrc('trc_NorIncYtd:             '||to_char(trc_NorIncYtd));
4306    WrtHrTrc('trc_NorIncPtd:             '||to_char(trc_NorIncPtd));
4307    WrtHrTrc('trc_NorErn:                '||to_char(trc_NorErn));
4308    WrtHrTrc('trc_TxbNorInc:             '||to_char(trc_TxbNorInc));
4309    WrtHrTrc('trc_TxbNorIncWoDon:        '||to_char(trc_TxbNorInc));
4310    WrtHrTrc('trc_TotLibNI:              '||to_char(trc_TotLibNI));
4311    WrtHrTrc('trc_LibFyNI:               '||to_char(trc_LibFyNI));
4312    WrtHrTrc('trc_LibFpNI:               '||to_char(trc_LibFpNI));
4313    -- Fringe Benefits
4314    WrtHrTrc('trc_FrnBenYtd:             '||to_char(trc_FrnBenYtd));
4315    WrtHrTrc('trc_FrnBenPtd:             '||to_char(trc_FrnBenPtd));
4316    WrtHrTrc('trc_FrnBenErn:             '||to_char(trc_FrnBenErn));
4317    WrtHrTrc('trc_TxbFrnInc:             '||to_char(trc_TxbFrnInc));
4318    WrtHrTrc('trc_TxbFrnIncWoDon:        '||to_char(trc_TxbFrnIncWoDon));
4319    WrtHrTrc('trc_TotLibFB:              '||to_char(trc_TotLibFB));
4320    WrtHrTrc('trc_LibFyFB:               '||to_char(trc_LibFyFB));
4321    WrtHrTrc('trc_LibFpFB:               '||to_char(trc_LibFpFB));
4322    -- Travel Allowance
4323    WrtHrTrc('trc_TrvAllYtd:             '||to_char(trc_TrvAllYtd));
4324    WrtHrTrc('trc_TrvAllPtd:             '||to_char(trc_TrvAllPtd));
4325    WrtHrTrc('trc_TrvAllErn:             '||to_char(trc_TrvAllErn));
4326    WrtHrTrc('trc_TxbTrvInc:             '||to_char(trc_TxbTrvInc));
4327    WrtHrTrc('trc_TxbTrvIncWoDon:        '||to_char(trc_TxbTrvIncWoDon));
4328    WrtHrTrc('trc_TotLibTA:              '||to_char(trc_TotLibTA));
4329    WrtHrTrc('trc_LibFyTA:               '||to_char(trc_LibFyTA));
4330    WrtHrTrc('trc_LibFpTA:               '||to_char(trc_LibFpTA));
4331    -- Bonus Provision
4332    WrtHrTrc('trc_BonProYtd:             '||to_char(trc_BonProYtd));
4333    WrtHrTrc('trc_BonProPtd:             '||to_char(trc_BonProPtd));
4334    WrtHrTrc('trc_BonProErn:             '||to_char(trc_BonProErn));
4335    WrtHrTrc('trc_TxbBonProInc:          '||to_char(trc_TxbBonProInc));
4336    WrtHrTrc('trc_TxbBonProIncWoDon:     '||to_char(trc_TxbBonProIncWoDon));
4337    WrtHrTrc('trc_TotLibBP:              '||to_char(trc_TotLibBP));
4338    WrtHrTrc('trc_LibFyBP:               '||to_char(trc_LibFyBP));
4339    WrtHrTrc('trc_LibFpBP:               '||to_char(trc_LibFpBP));
4340    -- Annual Bonus
4341    WrtHrTrc('trc_AnnBonYtd:             '||to_char(trc_AnnBonYtd));
4342    WrtHrTrc('trc_AnnBonPtd:             '||to_char(trc_AnnBonPtd));
4343    WrtHrTrc('trc_AnnBonErn:             '||to_char(trc_AnnBonErn));
4344    WrtHrTrc('trc_TxbAnnBonInc:          '||to_char(trc_TxbAnnBonInc));
4345    WrtHrTrc('trc_TxbAnnBonIncWoDon:     '||to_char(trc_TxbAnnBonIncWoDon));
4346    WrtHrTrc('trc_TotLibAB:              '||to_char(trc_TotLibAB));
4347    WrtHrTrc('trc_LibFyAB:               '||to_char(trc_LibFyAB));
4348    WrtHrTrc('trc_LibFpAB:               '||to_char(trc_LibFpAB));
4349    -- Annual Payments
4350    WrtHrTrc('trc_AnnPymYtd:             '||to_char(trc_AnnPymYtd));
4351    WrtHrTrc('trc_AnnPymPtd:             '||to_char(trc_AnnPymPtd));
4352    WrtHrTrc('trc_AnnPymErn:             '||to_char(trc_AnnPymErn));
4353    WrtHrTrc('trc_TxbAnnPymInc:          '||to_char(trc_TxbAnnPymInc));
4354    WrtHrTrc('trc_TxbAnnPymIncWoDon:     '||to_char(trc_TxbAnnPymIncWoDon));
4355    WrtHrTrc('trc_TotLibAP:              '||to_char(trc_TotLibAP));
4356    WrtHrTrc('trc_LibFyAP:               '||to_char(trc_LibFyAP));
4357    WrtHrTrc('trc_LibFpAP:               '||to_char(trc_LibFpAP));
4358    -- Pubilc Office Allowance
4359    WrtHrTrc('trc_PblOffYtd:             '||to_char(trc_PblOffYtd));
4360    WrtHrTrc('trc_PblOffPtd:             '||to_char(trc_PblOffPtd));
4361    WrtHrTrc('trc_PblOffErn:             '||to_char(trc_PblOffErn));
4362    WrtHrTrc('trc_LibFyPO:               '||to_char(trc_LibFyPO));
4363    WrtHrTrc('trc_LibFpPO:               '||to_char(trc_LibFpPO));
4364 
4365    -- NTG Annual Payments
4366    WrtHrTrc('trc_AnnPymNtgYtd:          '||to_char(trc_AnnPymNtgYtd));
4367    WrtHrTrc('trc_AnnPymNtgPtd:          '||to_char(trc_AnnPymNtgPtd));
4368    WrtHrTrc('trc_AnnPymNtgErn:          '||to_char(trc_AnnPymNtgErn));
4369    WrtHrTrc('trc_TxbAnnPymNtgInc:       '||to_char(trc_TxbAnnPymNtgInc));
4370    WrtHrTrc('trc_TxbAnnPymNtgIncWoDon:  '||to_char(trc_TxbAnnPymNtgIncWoDon));
4371    WrtHrTrc('trc_TotLibNtgAP:           '||to_char(trc_TotLibNtgAP ));
4372    WrtHrTrc('trc_LibFyNtgAP:            '||to_char(trc_LibFyNtgAP  ));
4373    WrtHrTrc('trc_LibFpNtgAP:            '||to_char(trc_LibFpNtgAP  ));
4374 
4375    -- NTG EE Debt due to Annual Payments
4376    WrtHrTrc('trc_AnnEEDbtNTGYtd:        '||to_char(trc_AnnEEDbtNTGYtd));
4377    WrtHrTrc('trc_AnnEEDbtNtgPtd:        '||to_char(trc_AnnEEDbtNtgPtd));
4378    WrtHrTrc('trc_AnnEEDbtNtgErn:        '||to_char(trc_AnnEEDbtNtgErn));
4379    WrtHrTrc('trc_TxbAnnEEDbtNtgInc:     '||to_char(trc_TxbAnnEEDbtNtgInc));
4380    WrtHrTrc('trc_TxbAnnEEDbtNtgIncWoDon:'||to_char(trc_TxbAnnEEDbtNtgIncWoDon));
4381    WrtHrTrc('trc_TotLibNtgEEDbt:        '||to_char(trc_TotLibNtgEEDbt ));
4382    WrtHrTrc('trc_LibFyNtgEEDbt:         '||to_char(trc_LibFyNtgEEDbt  ));
4383    WrtHrTrc('trc_LibFpNtgEEDbt:         '||to_char(trc_LibFpNtgEEDbt  ));
4384 
4385 
4386 EXCEPTION
4387    WHEN OTHERS THEN
4388       IF xpt_Msg = 'No Error' THEN
4389          xpt_Msg := 'BasCalc: '||TO_CHAR(SQLCODE);
4390       END IF;
4391       RAISE xpt_E;
4392 END BasCalc;
4393 
4394 -------------------------------------------------------------------------------
4395 -- CalCalc                                                                   --
4396 -- Pre-Earnings Tax Calculation                                              --
4397 -------------------------------------------------------------------------------
4398 PROCEDURE CalCalc AS
4399 -- Variables
4400 --
4401    l_Np       BALANCE;
4402 
4403 
4404 BEGIN
4405 
4406    hr_utility.set_location('py_za_tx_01032012.CalCalc',1);
4407 -- Identify the calculation
4408 --
4409    trc_CalTyp := 'CalCalc';
4410 
4411 -- Update Global Balance Values with correct TAXABLE values
4412 --
4413    --Fix for bug#10372926
4414    --py_za_tx_utl_01032012.TrvAll;
4415 
4416    hr_utility.set_location('py_za_tx_01032012.CalCalc',2);
4417 
4418 -- Calendar Ytd Taxable Income
4419 --
4420    trc_TxbIncYtd := ( bal_TOT_TXB_NI_CYTD
4421                     + bal_TOT_TXB_FB_CYTD
4422                     + bal_TOT_TXB_TA_CYTD );
4423 -- If there is no Income Execute the Base calculation
4424 --
4425    IF trc_TxbIncYtd = 0 THEN
4426       hr_utility.set_location('py_za_tx_01032012.CalCalc',3);
4427       BasCalc;
4428    ELSE -- continue CalCalc
4429       hr_utility.set_location('py_za_tx_01032012.CalCalc',4);
4430    -- Site Factor
4431    --
4432       trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032012.DaysWorked;
4433 
4434    -- Rebates
4435       py_za_tx_utl_01032012.SetRebates;
4436 
4437    -- Abatements
4438       py_za_tx_utl_01032012.Abatements;
4439 
4440       hr_utility.set_location('py_za_tx_01032012.CalCalc',5);
4441 
4442       trc_curMedTxCrEle := greatest(bal_MED_AID_TAX_CR_YTD + bal_ANN_MED_AID_TAX_CR_YTD,0,bal_MED_AID_TAX_CR_USED_YTD + bal_MED_AID_TAX_CR_USED_LS_YTD);
4443 
4444    -- Deemed Remuneration
4445    --
4446       -- Run Deemed Remuneration
4447       trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
4448 
4449       -- Skip the calculation if there is No Income
4450       IF trc_DmdRmnRun <> 0 THEN
4451          hr_utility.set_location('py_za_tx_01032012.CalCalc',6);
4452          -- Taxable Deemed Remuneration
4453          trc_TxbDmdRmn := trc_DmdRmnRun;
4454          -- Threshold Check
4455          IF trc_TxbDmdRmn >= trc_Threshold THEN
4456             hr_utility.set_location('py_za_tx_01032012.CalCalc',7);
4457          -- Tax Liability
4458             trc_TotLibDR := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbDmdRmn);
4459          ELSE
4460             hr_utility.set_location('py_za_tx_01032012.CalCalc',8);
4461             trc_TotLibDR := 0;
4462          END IF;
4463       ELSE
4464          hr_utility.set_location('py_za_tx_01032012.CalCalc',9);
4465          trc_TotLibDR := 0;
4466       END IF;
4467 
4468       hr_utility.set_location('py_za_tx_01032012.CalCalc',10);
4469 
4470    -- Base Earnings
4471    --
4472       -- Base Earnings
4473       trc_BseErn := trc_TxbIncYtd * trc_SitFactor;
4474       --TYS2010
4475       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4476       -- Taxable Base Income
4477       trc_TxbBseIncWoDon := trc_BseErn - trc_PerTotAbm;
4478       trc_TxbBseInc      :=trc_TxbBseIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbBseIncWoDon,trc_PerDonAmt);
4479 
4480       -- Threshold Check
4481       IF trc_TxbBseInc >= trc_Threshold THEN
4482          hr_utility.set_location('py_za_tx_01032012.CalCalc',11);
4483          -- Tax Liability
4484          trc_TotLibBse := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbBseInc);
4485          trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
4486       ELSE
4487          hr_utility.set_location('py_za_tx_01032012.CalCalc',12);
4488          trc_TotLibBse := trc_TotLibDR;
4489       END IF;
4490 
4491       hr_utility.set_location('py_za_tx_01032012.CalCalc',13);
4492 -- Annual Bonus
4493    --
4494       -- Ytd Annual Bonus
4495       trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
4496       -- Skip the calculation if there is No Income
4497       IF trc_AnnBonYtd <> 0 THEN
4498          hr_utility.set_location('py_za_tx_01032012.CalCalc',14);
4499          -- Annual Bonus Earnings
4500          trc_AnnBonErn := trc_AnnBonYtd + trc_BseErn;
4501          -- Taxable Annual Bonus Income
4502          --TYS2010
4503          --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4504          trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
4505          trc_TxbAnnBonInc :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
4506 
4507          -- Threshold Check
4508          IF trc_TxbAnnBonInc >= trc_Threshold THEN
4509             hr_utility.set_location('py_za_tx_01032012.CalCalc',15);
4510             -- Tax Liability
4511             trc_TotLibAB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnBonInc);
4512             trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
4513             trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
4514             -- Check Bonus Provision
4515             IF bal_BP_YTD <> 0 THEN
4516                hr_utility.set_location('py_za_tx_01032012.CalCalc',16);
4517                -- Check Bonus Provision Frequency
4518                IF dbi_BP_TX_RCV = 'A' THEN
4519                   hr_utility.set_location('py_za_tx_01032012.CalCalc',17);
4520                   trc_LibFpAB := 0;
4521                ELSE
4522                   hr_utility.set_location('py_za_tx_01032012.CalCalc',18);
4523                   trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD + bal_MED_TAX_CR_USED_BP_YTD
4524                                                + bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
4525                   -- Start Medical Tax Credit Changes
4526                   py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4527                                        (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
4528                                        ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AB_YTD
4529                                        ,p_Tx_RUN               => trc_LibFpAB
4530                                        ,p_Tx_YTD               => bal_TX_ON_AB_YTD
4531                                        ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAB
4532                                        ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAB_Upd
4533                                         );
4534                   trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
4535                   trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
4536                   hr_utility.set_location('    trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
4537                   hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
4538                   hr_utility.set_location('      trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
4539                   hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4540                   -- End Medical Tax Credit Changes
4541 
4542                END IF;
4543             ELSE
4544                hr_utility.set_location('py_za_tx_01032012.CalCalc',19);
4545                trc_LibFpAB := trc_LibFyAB - (bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
4546 
4547                -- Start Medical Tax Credit Changes
4548                py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4549                                     (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
4550                                     ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AB_YTD
4551                                     ,p_Tx_RUN               => trc_LibFpAB
4552                                     ,p_Tx_YTD               => bal_TX_ON_AB_YTD
4553                                     ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAB
4554                                     ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAB_Upd
4555                                      );
4556                trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
4557                trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
4558                hr_utility.set_location('    trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
4559                hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
4560                hr_utility.set_location('      trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
4561                hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4562                -- End Medical Tax Credit Changes
4563 
4564             END IF;
4565          ELSE
4566             hr_utility.set_location('py_za_tx_01032012.CalCalc',20);
4567             trc_TotLibAB := trc_TotLibBse;
4568          END IF;
4569       ELSE
4570          hr_utility.set_location('py_za_tx_01032012.CalCalc',21);
4571          trc_AnnBonErn    := trc_BseErn;
4572          trc_TxbAnnBonInc := trc_TxbBseInc;
4573          trc_TotLibAB     := trc_TotLibBse;
4574       END IF;
4575 
4576       hr_utility.set_location('py_za_tx_01032012.CalCalc',22);
4577 
4578    -- Annual Payments
4579    --
4580       -- Ytd Annual Payments
4581       trc_AnnPymYtd := bal_TOT_TXB_AP_YTD ;
4582       -- Skip the calculation if there is No Income
4583       IF trc_AnnPymYtd <> 0 THEN
4584          hr_utility.set_location('py_za_tx_01032012.CalCalc',23);
4585          -- Annual Payments Earnings
4586          trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
4587          -- Taxable Annual Payments Income
4588          --TYS2010
4589          --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4590          trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
4591          trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
4592 
4593          -- Threshold Check
4594          IF trc_TxbAnnPymInc >= trc_Threshold THEN
4595             hr_utility.set_location('py_za_tx_01032012.CalCalc',24);
4596             -- Tax Liability
4597             trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymInc);
4598             trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
4599             trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
4600             trc_LibFpAP  := trc_LibFyAP - (bal_TX_ON_AP_YTD + bal_MED_TAX_CR_USED_AP_YTD);
4601 
4602             -- Start Medical Tax Credit Changes
4603             py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4604                                  (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
4605                                  ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AP_YTD
4606                                  ,p_Tx_RUN               => trc_LibFpAP
4607                                  ,p_Tx_YTD               => bal_TX_ON_AP_YTD
4608                                  ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAP
4609                                  ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAP_Upd
4610                                   );
4611             trc_LibFpAP_Upd := trc_LibFpAP - trc_MedTxCrUsedAP_Upd;
4612             trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAP,0);
4613             hr_utility.set_location('    trc_MedTxCrUsedAP:'||trc_MedTxCrUsedAP,10);
4614             hr_utility.set_location('trc_MedTxCrUsedAP_Upd:'||trc_MedTxCrUsedAP_Upd,10);
4615             hr_utility.set_location('      trc_LibFpAP_Upd:'||trc_LibFpAP_Upd,10);
4616             hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4617             -- End Medical Tax Credit Changes
4618 
4619          ELSE
4620             hr_utility.set_location('py_za_tx_01032012.CalCalc',25);
4621             trc_TotLibAP := trc_TotLibAB;
4622          END IF;
4623       ELSE
4624          hr_utility.set_location('py_za_tx_01032012.CalCalc',26);
4625          trc_AnnPymErn    := trc_AnnBonErn;
4626          trc_TxbAnnPymInc := trc_TxbAnnBonInc;
4627          trc_TotLibAP     := trc_TotLibAB;
4628       END IF;
4629 
4630  -- Net to Gross Annual Payments.
4631    -- Ytd Net to Gross Annual Payments
4632    trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
4633    -- Skip the calculation if there is No Income
4634    IF trc_AnnPymNtgYtd <> 0 THEN
4635       hr_utility.set_location('py_za_tx_01032012.CalCalc',27);
4636       -- Annual Payments Net to Gross Earnings
4637       trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_AnnPymErn;
4638 
4639       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4640       -- Taxable Annual Payments Income
4641       trc_TxbAnnPymNtgIncWoDon := trc_AnnPymNtgErn - trc_AnnTotAbm;
4642       trc_TxbAnnPymNtgInc :=trc_TxbAnnPymNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymNtgIncWoDon,trc_AnnDonAmt);
4643 
4644       -- Threshold Check
4645       IF trc_TxbAnnPymNtgInc >= trc_Threshold THEN
4646          hr_utility.set_location('py_za_tx_01032012.CalCalc',28);
4647          -- Tax Liability
4648          trc_TotLibNtgAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymNtgInc);
4649          trc_LibFyNtgAP  := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibAP);
4650          trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibAP);
4651 
4652          hr_utility.set_location('py_za_tx_01032012.CalCalc',29);
4653          trc_LibFpNtgAP  := trc_LibFyNtgAP - (bal_TX_ON_AP_NTG_YTD + bal_MED_TAX_CR_USED_NG_YTD);
4654 
4655          -- Start Medical Tax Credit Changes
4656          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4657                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
4658                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_NG_YTD
4659                               ,p_Tx_RUN               => trc_LibFpNtgAP
4660                               ,p_Tx_YTD               => bal_TX_ON_AP_NTG_YTD
4661                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedNtgAP
4662                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedNtgAP_Upd
4663                                );
4664          trc_LibFpNtgAP_Upd := trc_LibFpNtgAP - trc_MedTxCrUsedNtgAP_Upd;
4665          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgAP,0);
4666          hr_utility.set_location('    trc_MedTxCrUsedNtgAP:'||trc_MedTxCrUsedNtgAP,10);
4667          hr_utility.set_location('trc_MedTxCrUsedNtgAP_Upd:'||trc_MedTxCrUsedNtgAP_Upd,10);
4668          hr_utility.set_location('      trc_LibFpNtgAP_Upd:'||trc_LibFpNtgAP_Upd,10);
4669          hr_utility.set_location('       trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4670          -- End Medical Tax Credit Changes
4671 
4672       ELSE
4673          hr_utility.set_location('py_za_tx_01032012.CalCalc',30);
4674          trc_TotLibNtgAP   := trc_TotLibAP;
4675       END IF;
4676    ELSE
4677       hr_utility.set_location('py_za_tx_01032012.CalCalc',31);
4678       trc_AnnPymNtgErn     := trc_AnnPymErn;
4679       trc_TxbAnnPymNtgInc  := trc_TxbAnnPymInc;
4680       trc_TotLibNtgAP      := trc_TotLibAP;
4681    END IF;
4682 
4683    -- Ytd Net to Gross EE Debt arised due to Net to Gross Annual Payments
4684    trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
4685    -- Skip the calculation if there is No Income
4686    IF trc_AnnEEDbtNtgYtd <> 0 THEN
4687       hr_utility.set_location('py_za_tx_01032012.CalCalc',32);
4688       -- Annual EE Debt Net to Gross Earnings
4689       trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
4690 
4691       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4692       trc_TxbAnnEEDbtNtgIncWoDon := trc_AnnEEDbtNtgErn - trc_AnnTotNTGAbm;
4693       trc_TxbAnnEEDbtNtgInc :=trc_TxbAnnEEDbtNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnEEDbtNtgIncWoDon,trc_AnnDonAmt);
4694 
4695       -- Threshold Check
4696       IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
4697          hr_utility.set_location('py_za_tx_01032012.CalCalc',33);
4698          -- Tax Liability
4699          trc_TotLibNtgEEDbt := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnEEDbtNtgInc);
4700          trc_LibFyNtgEEDbt  := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
4701          trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
4702 
4703          hr_utility.set_location('py_za_tx_01032012.CalCalc',34);
4704          trc_LibFpNtgEEDbt  := trc_LibFyNtgEEDbt - (bal_TX_ON_EE_DBT_NTG_YTD + bal_MED_TAX_CR_USED_EE_YTD);
4705 
4706          -- Start Medical Tax Credit Changes
4707          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4708                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
4709                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_EE_YTD
4710                               ,p_Tx_RUN               => trc_LibFpNtgEEDbt
4711                               ,p_Tx_YTD               => bal_TX_ON_EE_DBT_NTG_YTD
4712                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedNtgEEDbt
4713                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedNtgEEDbt_Upd
4714                                );
4715          trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt - trc_MedTxCrUsedNtgEEDbt_Upd;
4716          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgEEDbt,0);
4717          hr_utility.set_location('    trc_MedTxCrUsedNtgEEDbt:'||trc_MedTxCrUsedNtgEEDbt,10);
4718          hr_utility.set_location('trc_MedTxCrUsedNtgEEDbt_Upd:'||trc_MedTxCrUsedNtgEEDbt_Upd,10);
4719          hr_utility.set_location('      trc_LibFpNtgEEDbt_Upd:'||trc_LibFpNtgEEDbt_Upd,10);
4720          hr_utility.set_location('          trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4721          -- End Medical Tax Credit Changes
4722 
4723       ELSE
4724          hr_utility.set_location('py_za_tx_01032012.CalCalc',35);
4725          trc_TotLibNtgEEDbt   := trc_TotLibNtgAP;
4726       END IF;
4727    ELSE
4728       hr_utility.set_location('py_za_tx_01032012.CalCalc',36);
4729       trc_AnnEEDbtNtgErn     := trc_AnnPymNtgErn;
4730       trc_TxbAnnEEDbtNtgInc  := trc_TxbAnnPymNtgInc;
4731       trc_TotLibNtgEEDbt      := trc_TotLibNtgAP;
4732    END IF;
4733 
4734    trc_LibFpAB := trc_LibFpAB_Upd;
4735    trc_LibFpAP := trc_LibFpAP_Upd;
4736    trc_LibFpNtgAP := trc_LibFpNtgAP_Upd;
4737    trc_LibFpNtgEEDbt := trc_LibFpNtgEEDbt_Upd;
4738 
4739    -- Net pay Validation
4740    --
4741       py_za_tx_utl_01032012.ValidateTaxOns;
4742 
4743       -- Deemed Remuneration
4744    WrtHrTrc('trc_TxbDmdRmn:             '||to_char(trc_TxbDmdRmn));
4745    WrtHrTrc('trc_TotLibDR:              '||to_char(trc_TotLibDR));
4746    WrtHrTrc('trc_LibFyDR:               '||to_char(trc_LibFyDR));
4747    WrtHrTrc('trc_LibFpDR:               '||to_char(trc_LibFpDR));
4748    -- Base Income
4749    WrtHrTrc('trc_BseErn:                '||to_char(trc_BseErn));
4750    WrtHrTrc('trc_TxbBseInc:             '||to_char(trc_TxbBseInc));
4751    WrtHrTrc('trc_TxbBseIncWoDon:        '||to_char(trc_TxbBseIncWoDon));
4752    WrtHrTrc('trc_TotLibBse:             '||to_char(trc_TotLibBse));
4753    -- Normal Income
4754    WrtHrTrc('trc_NorIncYtd:             '||to_char(trc_NorIncYtd));
4755    WrtHrTrc('trc_NorIncPtd:             '||to_char(trc_NorIncPtd));
4756    WrtHrTrc('trc_NorErn:                '||to_char(trc_NorErn));
4757    WrtHrTrc('trc_TxbNorInc:             '||to_char(trc_TxbNorInc));
4758    WrtHrTrc('trc_TxbNorIncWoDon:        '||to_char(trc_TxbNorInc));
4759    WrtHrTrc('trc_TotLibNI:              '||to_char(trc_TotLibNI));
4760    WrtHrTrc('trc_LibFyNI:               '||to_char(trc_LibFyNI));
4761    WrtHrTrc('trc_LibFpNI:               '||to_char(trc_LibFpNI));
4762    -- Fringe Benefits
4763    WrtHrTrc('trc_FrnBenYtd:             '||to_char(trc_FrnBenYtd));
4764    WrtHrTrc('trc_FrnBenPtd:             '||to_char(trc_FrnBenPtd));
4765    WrtHrTrc('trc_FrnBenErn:             '||to_char(trc_FrnBenErn));
4766    WrtHrTrc('trc_TxbFrnInc:             '||to_char(trc_TxbFrnInc));
4767    WrtHrTrc('trc_TxbFrnIncWoDon:        '||to_char(trc_TxbFrnIncWoDon));
4768    WrtHrTrc('trc_TotLibFB:              '||to_char(trc_TotLibFB));
4769    WrtHrTrc('trc_LibFyFB:               '||to_char(trc_LibFyFB));
4770    WrtHrTrc('trc_LibFpFB:               '||to_char(trc_LibFpFB));
4771    -- Travel Allowance
4772    WrtHrTrc('trc_TrvAllYtd:             '||to_char(trc_TrvAllYtd));
4773    WrtHrTrc('trc_TrvAllPtd:             '||to_char(trc_TrvAllPtd));
4774    WrtHrTrc('trc_TrvAllErn:             '||to_char(trc_TrvAllErn));
4775    WrtHrTrc('trc_TxbTrvInc:             '||to_char(trc_TxbTrvInc));
4776    WrtHrTrc('trc_TxbTrvIncWoDon:        '||to_char(trc_TxbTrvIncWoDon));
4777    WrtHrTrc('trc_TotLibTA:              '||to_char(trc_TotLibTA));
4778    WrtHrTrc('trc_LibFyTA:               '||to_char(trc_LibFyTA));
4779    WrtHrTrc('trc_LibFpTA:               '||to_char(trc_LibFpTA));
4780    -- Bonus Provision
4781    WrtHrTrc('trc_BonProYtd:             '||to_char(trc_BonProYtd));
4782    WrtHrTrc('trc_BonProPtd:             '||to_char(trc_BonProPtd));
4783    WrtHrTrc('trc_BonProErn:             '||to_char(trc_BonProErn));
4784    WrtHrTrc('trc_TxbBonProInc:          '||to_char(trc_TxbBonProInc));
4785    WrtHrTrc('trc_TxbBonProIncWoDon:     '||to_char(trc_TxbBonProIncWoDon));
4786    WrtHrTrc('trc_TotLibBP:              '||to_char(trc_TotLibBP));
4787    WrtHrTrc('trc_LibFyBP:               '||to_char(trc_LibFyBP));
4788    WrtHrTrc('trc_LibFpBP:               '||to_char(trc_LibFpBP));
4789    -- Annual Bonus
4790    WrtHrTrc('trc_AnnBonYtd:             '||to_char(trc_AnnBonYtd));
4791    WrtHrTrc('trc_AnnBonPtd:             '||to_char(trc_AnnBonPtd));
4792    WrtHrTrc('trc_AnnBonErn:             '||to_char(trc_AnnBonErn));
4793    WrtHrTrc('trc_TxbAnnBonInc:          '||to_char(trc_TxbAnnBonInc));
4794    WrtHrTrc('trc_TxbAnnBonIncWoDon:     '||to_char(trc_TxbAnnBonIncWoDon));
4795    WrtHrTrc('trc_TotLibAB:              '||to_char(trc_TotLibAB));
4796    WrtHrTrc('trc_LibFyAB:               '||to_char(trc_LibFyAB));
4797    WrtHrTrc('trc_LibFpAB:               '||to_char(trc_LibFpAB));
4798    -- Annual Payments
4799    WrtHrTrc('trc_AnnPymYtd:             '||to_char(trc_AnnPymYtd));
4800    WrtHrTrc('trc_AnnPymPtd:             '||to_char(trc_AnnPymPtd));
4801    WrtHrTrc('trc_AnnPymErn:             '||to_char(trc_AnnPymErn));
4802    WrtHrTrc('trc_TxbAnnPymInc:          '||to_char(trc_TxbAnnPymInc));
4803    WrtHrTrc('trc_TxbAnnPymIncWoDon:     '||to_char(trc_TxbAnnPymIncWoDon));
4804    WrtHrTrc('trc_TotLibAP:              '||to_char(trc_TotLibAP));
4805    WrtHrTrc('trc_LibFyAP:               '||to_char(trc_LibFyAP));
4806    WrtHrTrc('trc_LibFpAP:               '||to_char(trc_LibFpAP));
4807    -- Pubilc Office Allowance
4808    WrtHrTrc('trc_PblOffYtd:             '||to_char(trc_PblOffYtd));
4809    WrtHrTrc('trc_PblOffPtd:             '||to_char(trc_PblOffPtd));
4810    WrtHrTrc('trc_PblOffErn:             '||to_char(trc_PblOffErn));
4811    WrtHrTrc('trc_LibFyPO:               '||to_char(trc_LibFyPO));
4812    WrtHrTrc('trc_LibFpPO:               '||to_char(trc_LibFpPO));
4813 
4814    -- NTG Annual Payments
4815    WrtHrTrc('trc_AnnPymNtgYtd:          '||to_char(trc_AnnPymNtgYtd));
4816    WrtHrTrc('trc_AnnPymNtgPtd:          '||to_char(trc_AnnPymNtgPtd));
4817    WrtHrTrc('trc_AnnPymNtgErn:          '||to_char(trc_AnnPymNtgErn));
4818    WrtHrTrc('trc_TxbAnnPymNtgInc:       '||to_char(trc_TxbAnnPymNtgInc));
4819    WrtHrTrc('trc_TxbAnnPymNtgIncWoDon:  '||to_char(trc_TxbAnnPymNtgIncWoDon));
4820    WrtHrTrc('trc_TotLibNtgAP:           '||to_char(trc_TotLibNtgAP ));
4821    WrtHrTrc('trc_LibFyNtgAP:            '||to_char(trc_LibFyNtgAP  ));
4822    WrtHrTrc('trc_LibFpNtgAP:            '||to_char(trc_LibFpNtgAP  ));
4823 
4824    -- NTG EE Debt due to Annual Payments
4825    WrtHrTrc('trc_AnnEEDbtNTGYtd:        '||to_char(trc_AnnEEDbtNTGYtd));
4826    WrtHrTrc('trc_AnnEEDbtNtgPtd:        '||to_char(trc_AnnEEDbtNtgPtd));
4827    WrtHrTrc('trc_AnnEEDbtNtgErn:        '||to_char(trc_AnnEEDbtNtgErn));
4828    WrtHrTrc('trc_TxbAnnEEDbtNtgInc:     '||to_char(trc_TxbAnnEEDbtNtgInc));
4829    WrtHrTrc('trc_TxbAnnEEDbtNtgIncWoDon:'||to_char(trc_TxbAnnEEDbtNtgIncWoDon));
4830    WrtHrTrc('trc_TotLibNtgEEDbt:        '||to_char(trc_TotLibNtgEEDbt ));
4831    WrtHrTrc('trc_LibFyNtgEEDbt:         '||to_char(trc_LibFyNtgEEDbt  ));
4832    WrtHrTrc('trc_LibFpNtgEEDbt:         '||to_char(trc_LibFpNtgEEDbt  ));
4833 
4834 
4835    END IF;
4836 
4837    hr_utility.set_location('py_za_tx_01032012.CalCalc',37);
4838 
4839 EXCEPTION
4840    WHEN OTHERS THEN
4841       IF xpt_Msg = 'No Error' THEN
4842          xpt_Msg := 'CalCalc: '||TO_CHAR(SQLCODE);
4843       END IF;
4844       RAISE xpt_E;
4845 END CalCalc;
4846 -------------------------------------------------------------------------------
4847 -- YtdCalc                                                                   --
4848 -- Pre-Earnings Tax Calculation                                              --
4849 -------------------------------------------------------------------------------
4850 PROCEDURE YtdCalc AS
4851 -- Variables
4852 --
4853    l_Np       BALANCE;
4854 
4855 BEGIN
4856 
4857    hr_utility.set_location('py_za_tx_01032012.YtdCalc',1);
4858 -- Identify the calculation
4859 --
4860    trc_CalTyp := 'YtdCalc';
4861 
4862 -- Update Global Balance Values with correct TAXABLE values
4863    --Fix for bug#10372926
4864    --py_za_tx_utl_01032012.TrvAll;
4865 
4866    hr_utility.set_location('py_za_tx_01032012.YtdCalc',2);
4867 
4868 -- Ytd Taxable Income
4869    trc_TxbIncYtd :=
4870       ( bal_TOT_TXB_NI_YTD
4871       + bal_TOT_TXB_FB_YTD
4872       + bal_TOT_TXB_TA_YTD
4873       + bal_BP_YTD
4874       );
4875 -- If the Ytd Taxable Income = 0, execute the CalCalc
4876    IF trc_TxbIncYtd = 0 THEN
4877       hr_utility.set_location('py_za_tx_01032012.YtdCalc',3);
4878       --When a YtdCalc or CalCalc would be performed,
4879       --the system must do a Bascalc if the method is non-cumulative
4880       IF (dbi_TX_MTD = 'N') then
4881          BasCalc;
4882       ELSE
4883          CalCalc;
4884       END IF;
4885    ELSE --Continue YtdCalc
4886       hr_utility.set_location('py_za_tx_01032012.YtdCalc',4);
4887    -- Site Factor
4888       trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032012.DaysWorked;
4889 
4890    -- Rebates
4891       py_za_tx_utl_01032012.SetRebates;
4892 
4893    -- Abatements
4894       py_za_tx_utl_01032012.Abatements;
4895 
4896 -- Arrive at Medical tax credit Available for Annual Bonus and Annual paymet
4897       trc_curMedTxCrEle := greatest(bal_MED_AID_TAX_CR_YTD + bal_ANN_MED_AID_TAX_CR_YTD
4898              - (bal_MED_TAX_CR_USED_DR_YTD + bal_MED_TAX_CR_USED_NI_YTD + bal_MED_TAX_CR_USED_FB_YTD + bal_MED_TAX_CR_USED_TA_YTD + bal_MED_TAX_CR_USED_BP_YTD),0,
4899                 bal_MED_AID_TAX_CR_USED_YTD + bal_MED_AID_TAX_CR_USED_LS_YTD-(bal_MED_TAX_CR_USED_DR_YTD + bal_MED_TAX_CR_USED_NI_YTD + bal_MED_TAX_CR_USED_FB_YTD + bal_MED_TAX_CR_USED_TA_YTD + bal_MED_TAX_CR_USED_BP_YTD)) ;
4900 
4901       hr_utility.set_location('py_za_tx_01032012.YtdCalc',5);
4902 
4903 
4904       --Bug 9369895
4905       --Used in abatement calculation of Package structure employees
4906       bal_TOT_TXB_PO_YTD  := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
4907 
4908    -- Deemed Remuneration
4909    --
4910       -- Run Deemed Remuneration
4911       trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
4912 
4913       -- Skip the calculation if there is No Income
4914       IF trc_DmdRmnRun <> 0 THEN
4915          hr_utility.set_location('py_za_tx_01032012.YtdCalc',6);
4916          -- Taxable Deemed Remuneration
4917          trc_TxbDmdRmn := trc_DmdRmnRun;
4918          -- Threshold Check
4919          IF trc_TxbDmdRmn >= trc_Threshold THEN
4920             hr_utility.set_location('py_za_tx_01032012.YtdCalc',7);
4921             -- Tax Liability
4922             trc_TotLibDR := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbDmdRmn);
4923          ELSE
4924             hr_utility.set_location('py_za_tx_01032012.YtdCalc',8);
4925             trc_TotLibDR := 0;
4926          END IF;
4927       ELSE
4928          hr_utility.set_location('py_za_tx_01032012.YtdCalc',9);
4929          trc_TotLibDR := 0;
4930       END IF;
4931 
4932       hr_utility.set_location('py_za_tx_01032012.YtdCalc',10);
4933 
4934    -- Base Earnings
4935    --
4936       -- Base Earnings
4937       trc_BseErn := trc_TxbIncYtd * trc_SitFactor;
4938       -- Taxable Base Income
4939       --TYS2010
4940       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4941       trc_TxbBseIncWoDon := trc_BseErn - trc_PerTotAbm;
4942       trc_TxbBseInc :=trc_TxbBseIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbBseIncWoDon,trc_PerDonAmt);
4943 
4944       -- Threshold Check
4945       IF trc_TxbBseInc >= trc_Threshold THEN
4946          hr_utility.set_location('py_za_tx_01032012.YtdCalc',11);
4947          -- Tax Liability
4948          trc_TotLibBse := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbBseInc);
4949          trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
4950       ELSE
4951          hr_utility.set_location('py_za_tx_01032012.YtdCalc',12);
4952          trc_TotLibBse := trc_TotLibDR;
4953       END IF;
4954 
4955       hr_utility.set_location('py_za_tx_01032012.YtdCalc',13);
4956 
4957 
4958 -- Annual Bonus
4959    --
4960       -- Ytd Annual Bonus
4961       trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
4962       -- Skip the calculation if there is No Income
4963       IF trc_AnnBonYtd <> 0 THEN
4964          hr_utility.set_location('py_za_tx_01032012.YtdCalc',14);
4965          -- Annual Bonus Earnings
4966          trc_AnnBonErn := trc_AnnBonYtd + trc_BseErn;
4967          -- Taxable Annual Bonus Income
4968          --TYS2010
4969          --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4970          trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
4971          trc_TxbAnnBonInc :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
4972 
4973          -- Threshold Check
4974          IF trc_TxbAnnBonInc >= trc_Threshold THEN
4975             hr_utility.set_location('py_za_tx_01032012.YtdCalc',15);
4976             -- Tax Liability
4977             trc_TotLibAB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnBonInc);
4978             trc_LibFyAB  := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
4979             trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
4980             -- Check Bonus Provision
4981             IF bal_BP_YTD <> 0 THEN
4982                hr_utility.set_location('py_za_tx_01032012.YtdCalc',16);
4983                -- Check Bonus Provision Frequency
4984                IF dbi_BP_TX_RCV = 'A' THEN
4985                   hr_utility.set_location('py_za_tx_01032012.YtdCalc',17);
4986                   trc_LibFpAB := 0;
4987                ELSE
4988                   hr_utility.set_location('py_za_tx_01032012.YtdCalc',18);
4989                   trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD + bal_MED_TAX_CR_USED_BP_YTD
4990                                                + bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
4991 
4992                    -- Start Medical Tax Credit Changes
4993                    py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4994                                         (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
4995                                         ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AB_YTD
4996                                         ,p_Tx_RUN               => trc_LibFpAB
4997                                         ,p_Tx_YTD               => bal_TX_ON_AB_YTD
4998                                         ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAB
4999                                         ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAB_Upd
5000                                          );
5001                    trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
5002                    trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
5003                    hr_utility.set_location('    trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
5004                    hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
5005                    hr_utility.set_location('      trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
5006                    hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5007                    -- End Medical Tax Credit Changes
5008 
5009                END IF;
5010             ELSE
5011                hr_utility.set_location('py_za_tx_01032012.YtdCalc',19);
5012                trc_LibFpAB := trc_LibFyAB - (bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
5013 
5014                -- Start Medical Tax Credit Changes
5015                py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5016                                     (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
5017                                     ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AB_YTD
5018                                     ,p_Tx_RUN               => trc_LibFpAB
5019                                     ,p_Tx_YTD               => bal_TX_ON_AB_YTD
5020                                     ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAB
5021                                     ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAB_Upd
5022                                      );
5023                trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
5024                trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
5025                hr_utility.set_location('    trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
5026                hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
5027                hr_utility.set_location('      trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
5028                hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5029                -- End Medical Tax Credit Changes
5030 
5031             END IF;
5032          ELSE
5033             hr_utility.set_location('py_za_tx_01032012.YtdCalc',20);
5034             trc_TotLibAB := trc_TotLibBse;
5035 
5036          END IF;
5037       ELSE
5038          hr_utility.set_location('py_za_tx_01032012.YtdCalc',21);
5039          trc_AnnBonErn    := trc_BseErn;
5040          trc_TxbAnnBonInc := trc_TxbBseInc;
5041          trc_TotLibAB     := trc_TotLibBse;
5042       END IF;
5043 
5044       hr_utility.set_location('py_za_tx_01032012.YtdCalc',22);
5045 
5046 
5047  -- Annual Payments
5048    --
5049       -- Ytd Annual Payments
5050       trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
5051       -- Skip the calculation if there is No Income
5052       IF trc_AnnPymYtd <> 0 THEN
5053          hr_utility.set_location('py_za_tx_01032012.YtdCalc',23);
5054          -- Annual Payments Earnings
5055          trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
5056          -- Taxable Annual Payments Income
5057          --TYS2010
5058          --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5059          trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
5060          trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
5061 
5062          -- Threshold Check
5063          IF trc_TxbAnnPymInc >= trc_Threshold THEN
5064             hr_utility.set_location('py_za_tx_01032012.YtdCalc',24);
5065             -- Tax Liability
5066             trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymInc);
5067             trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
5068             trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
5069             trc_LibFpAP  := trc_LibFyAP - (bal_TX_ON_AP_YTD + bal_MED_TAX_CR_USED_AP_YTD);
5070 
5071             -- Start Medical Tax Credit Changes
5072             py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5073                                  (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
5074                                  ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AP_YTD
5075                                  ,p_Tx_RUN               => trc_LibFpAP
5076                                  ,p_Tx_YTD               => bal_TX_ON_AP_YTD
5077                                  ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAP
5078                                  ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAP_Upd
5079                                   );
5080             trc_LibFpAP_Upd := trc_LibFpAP - trc_MedTxCrUsedAP_Upd;
5081             trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAP,0);
5082             hr_utility.set_location('    trc_MedTxCrUsedAP:'||trc_MedTxCrUsedAP,10);
5083             hr_utility.set_location('trc_MedTxCrUsedAP_Upd:'||trc_MedTxCrUsedAP_Upd,10);
5084             hr_utility.set_location('      trc_LibFpAP_Upd:'||trc_LibFpAP_Upd,10);
5085             hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5086             -- End Medical Tax Credit Changes
5087 
5088          ELSE
5089             hr_utility.set_location('py_za_tx_01032012.YtdCalc',25);
5090             trc_TotLibAP := trc_TotLibAB;
5091          END IF;
5092       ELSE
5093          hr_utility.set_location('py_za_tx_01032012.YtdCalc',26);
5094          trc_AnnPymErn    := trc_AnnBonErn;
5095          trc_TxbAnnPymInc := trc_TxbAnnBonInc;
5096          trc_TotLibAP     := trc_TotLibAB;
5097       END IF;
5098 
5099 
5100  -- Net to Gross Annual Payments.
5101    -- Ytd Net to Gross Annual Payments
5102    trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
5103    -- Skip the calculation if there is No Income
5104    IF trc_AnnPymNtgYtd <> 0 THEN
5105       hr_utility.set_location('py_za_tx_01032012.YtdCalc',27);
5106       -- Annual Payments Net to Gross Earnings
5107       trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_AnnPymErn;
5108 
5109       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5110       -- Taxable Annual Payments Income
5111       trc_TxbAnnPymNtgIncWoDon := trc_AnnPymNtgErn - trc_AnnTotAbm;
5112       trc_TxbAnnPymNtgInc :=trc_TxbAnnPymNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymNtgIncWoDon,trc_AnnDonAmt);
5113 
5114       -- Threshold Check
5115       IF trc_TxbAnnPymNtgInc >= trc_Threshold THEN
5116          hr_utility.set_location('py_za_tx_01032012.YtdCalc',28);
5117          -- Tax Liability
5118          trc_TotLibNtgAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymNtgInc);
5119          trc_LibFyNtgAP  := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibAP);
5120          trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibAP);
5121 
5122          hr_utility.set_location('py_za_tx_01032012.YtdCalc',29);
5123          trc_LibFpNtgAP  := trc_LibFyNtgAP - (bal_TX_ON_AP_NTG_YTD + bal_MED_TAX_CR_USED_NG_YTD);
5124 
5125          -- Start Medical Tax Credit Changes
5126          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5127                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
5128                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_NG_YTD
5129                               ,p_Tx_RUN               => trc_LibFpNtgAP
5130                               ,p_Tx_YTD               => bal_TX_ON_AP_NTG_YTD
5131                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedNtgAP
5132                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedNtgAP_Upd
5133                                );
5134          trc_LibFpNtgAP_Upd := trc_LibFpNtgAP - trc_MedTxCrUsedNtgAP_Upd;
5135          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgAP,0);
5136          hr_utility.set_location('    trc_MedTxCrUsedNtgAP:'||trc_MedTxCrUsedNtgAP,10);
5137          hr_utility.set_location('trc_MedTxCrUsedNtgAP_Upd:'||trc_MedTxCrUsedNtgAP_Upd,10);
5138          hr_utility.set_location('      trc_LibFpNtgAP_Upd:'||trc_LibFpNtgAP_Upd,10);
5139          hr_utility.set_location('       trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5140          -- End Medical Tax Credit Changes
5141 
5142       ELSE
5143          hr_utility.set_location('py_za_tx_01032012.YtdCalc',30);
5144          trc_TotLibNtgAP   := trc_TotLibAP;
5145         -- trc_LibFpNtgAP    := -1 * bal_TX_ON_AP_NTG_YTD;
5146       END IF;
5147    ELSE
5148       hr_utility.set_location('py_za_tx_01032012.YtdCalc',31);
5149       trc_AnnPymNtgErn     := trc_AnnPymErn;
5150       trc_TxbAnnPymNtgInc  := trc_TxbAnnPymInc;
5151       trc_TotLibNtgAP      := trc_TotLibAP;
5152      -- trc_LibFpNtgAP       := -1 * bal_TX_ON_AP_NTG_YTD;
5153    END IF;
5154 
5155 
5156    -- Ytd Net to Gross EE Debt arised due to Net to Gross Annual Payments
5157    trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
5158    -- Skip the calculation if there is No Income
5159    IF trc_AnnEEDbtNtgYtd <> 0 THEN
5160       hr_utility.set_location('py_za_tx_01032012.YtdCalc',32);
5161       -- Annual EE Debt Net to Gross Earnings
5162       trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
5163 
5164       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5165       trc_TxbAnnEEDbtNtgIncWoDon := trc_AnnEEDbtNtgErn - trc_AnnTotNTGAbm;
5166       trc_TxbAnnEEDbtNtgInc :=trc_TxbAnnEEDbtNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnEEDbtNtgIncWoDon,trc_AnnDonAmt);
5167 
5168       -- Threshold Check
5169       IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
5170          hr_utility.set_location('py_za_tx_01032012.YtdCalc',33);
5171          -- Tax Liability
5172          trc_TotLibNtgEEDbt := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnEEDbtNtgInc);
5173          trc_LibFyNtgEEDbt  := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
5174          trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
5175 
5176          hr_utility.set_location('py_za_tx_01032012.YtdCalc',34);
5177          trc_LibFpNtgEEDbt  := trc_LibFyNtgEEDbt - (bal_TX_ON_EE_DBT_NTG_YTD + bal_MED_TAX_CR_USED_EE_YTD);
5178 
5179          -- Start Medical Tax Credit Changes
5180          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5181                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
5182                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_EE_YTD
5183                               ,p_Tx_RUN               => trc_LibFpNtgEEDbt
5184                               ,p_Tx_YTD               => bal_TX_ON_EE_DBT_NTG_YTD
5185                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedNtgEEDbt
5186                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedNtgEEDbt_Upd
5187                                );
5188          trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt - trc_MedTxCrUsedNtgEEDbt_Upd;
5189          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgEEDbt,0);
5190          hr_utility.set_location('    trc_MedTxCrUsedNtgEEDbt:'||trc_MedTxCrUsedNtgEEDbt,10);
5191          hr_utility.set_location('trc_MedTxCrUsedNtgEEDbt_Upd:'||trc_MedTxCrUsedNtgEEDbt_Upd,10);
5192          hr_utility.set_location('      trc_LibFpNtgEEDbt_Upd:'||trc_LibFpNtgEEDbt_Upd,10);
5193          hr_utility.set_location('          trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5194          -- End Medical Tax Credit Changes
5195 
5196       ELSE
5197          hr_utility.set_location('py_za_tx_01032012.YtdCalc',35);
5198          trc_TotLibNtgEEDbt   := trc_TotLibNtgAP;
5199          --trc_LibFpNtgEEDbt    := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
5200       END IF;
5201    ELSE
5202       hr_utility.set_location('py_za_tx_01032012.YtdCalc',36);
5203       trc_AnnEEDbtNtgErn     := trc_AnnPymNtgErn;
5204       trc_TxbAnnEEDbtNtgInc  := trc_TxbAnnPymNtgInc;
5205       trc_TotLibNtgEEDbt      := trc_TotLibNtgAP;
5206       --trc_LibFpNtgEEDbt       := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
5207    END IF;
5208 
5209    trc_LibFpAB := trc_LibFpAB_Upd;
5210    trc_LibFpAP := trc_LibFpAP_Upd;
5211    trc_LibFpNtgAP := trc_LibFpNtgAP_Upd;
5212    trc_LibFpNtgEEDbt := trc_LibFpNtgEEDbt_Upd;
5213 
5214    -- Net Pay validation
5215    --
5216       py_za_tx_utl_01032012.ValidateTaxOns;
5217 
5218       hr_utility.set_location('py_za_tx_01032012.YtdCalc',37);
5219 
5220       -- Deemed Remuneration
5221       WrtHrTrc('trc_TxbDmdRmn:             '||to_char(trc_TxbDmdRmn));
5222       WrtHrTrc('trc_TotLibDR:              '||to_char(trc_TotLibDR));
5223       WrtHrTrc('trc_LibFyDR:               '||to_char(trc_LibFyDR));
5224       WrtHrTrc('trc_LibFpDR:               '||to_char(trc_LibFpDR));
5225       -- Base Income
5226       WrtHrTrc('trc_BseErn:                '||to_char(trc_BseErn));
5227       WrtHrTrc('trc_TxbBseInc:             '||to_char(trc_TxbBseInc));
5228       WrtHrTrc('trc_TxbBseIncWoDon:        '||to_char(trc_TxbBseIncWoDon));
5229       WrtHrTrc('trc_TotLibBse:             '||to_char(trc_TotLibBse));
5230       -- Normal Income
5231       WrtHrTrc('trc_NorIncYtd:             '||to_char(trc_NorIncYtd));
5232       WrtHrTrc('trc_NorIncPtd:             '||to_char(trc_NorIncPtd));
5233       WrtHrTrc('trc_NorErn:                '||to_char(trc_NorErn));
5234       WrtHrTrc('trc_TxbNorInc:             '||to_char(trc_TxbNorInc));
5235       WrtHrTrc('trc_TxbNorIncWoDon:        '||to_char(trc_TxbNorIncWoDon));
5236       WrtHrTrc('trc_TotLibNI:              '||to_char(trc_TotLibNI));
5237       WrtHrTrc('trc_LibFyNI:               '||to_char(trc_LibFyNI));
5238       WrtHrTrc('trc_LibFpNI:               '||to_char(trc_LibFpNI));
5239       -- Fringe Benefits
5240       WrtHrTrc('trc_FrnBenYtd:             '||to_char(trc_FrnBenYtd));
5241       WrtHrTrc('trc_FrnBenPtd:             '||to_char(trc_FrnBenPtd));
5242       WrtHrTrc('trc_FrnBenErn:             '||to_char(trc_FrnBenErn));
5243       WrtHrTrc('trc_TxbFrnInc:             '||to_char(trc_TxbFrnInc));
5244       WrtHrTrc('trc_TxbFrnIncWoDon:        '||to_char(trc_TxbFrnIncWoDon));
5245       WrtHrTrc('trc_TotLibFB:              '||to_char(trc_TotLibFB));
5246       WrtHrTrc('trc_LibFyFB:               '||to_char(trc_LibFyFB));
5247       WrtHrTrc('trc_LibFpFB:               '||to_char(trc_LibFpFB));
5248       -- Travel Allowance
5249       WrtHrTrc('trc_TrvAllYtd:             '||to_char(trc_TrvAllYtd));
5250       WrtHrTrc('trc_TrvAllPtd:             '||to_char(trc_TrvAllPtd));
5251       WrtHrTrc('trc_TrvAllErn:             '||to_char(trc_TrvAllErn));
5252       WrtHrTrc('trc_TxbTrvInc:             '||to_char(trc_TxbTrvInc));
5253       WrtHrTrc('trc_TxbTrvIncWoDon:        '||to_char(trc_TxbTrvIncWoDon));
5254       WrtHrTrc('trc_TotLibTA:              '||to_char(trc_TotLibTA));
5255       WrtHrTrc('trc_LibFyTA:               '||to_char(trc_LibFyTA));
5256       WrtHrTrc('trc_LibFpTA:               '||to_char(trc_LibFpTA));
5257       -- Bonus Provision
5258       WrtHrTrc('trc_BonProYtd:             '||to_char(trc_BonProYtd));
5259       WrtHrTrc('trc_BonProPtd:             '||to_char(trc_BonProPtd));
5260       WrtHrTrc('trc_BonProErn:             '||to_char(trc_BonProErn));
5261       WrtHrTrc('trc_TxbBonProInc:          '||to_char(trc_TxbBonProInc));
5262       WrtHrTrc('trc_TxbBonProIncWoDon:     '||to_char(trc_TxbBonProIncWoDon));
5263       WrtHrTrc('trc_TotLibBP:              '||to_char(trc_TotLibBP));
5264       WrtHrTrc('trc_LibFyBP:               '||to_char(trc_LibFyBP));
5265       WrtHrTrc('trc_LibFpBP:               '||to_char(trc_LibFpBP));
5266       -- Annual Bonus
5267       WrtHrTrc('trc_AnnBonYtd:             '||to_char(trc_AnnBonYtd));
5268       WrtHrTrc('trc_AnnBonPtd:             '||to_char(trc_AnnBonPtd));
5269       WrtHrTrc('trc_AnnBonErn:             '||to_char(trc_AnnBonErn));
5270       WrtHrTrc('trc_TxbAnnBonInc:          '||to_char(trc_TxbAnnBonInc));
5271       WrtHrTrc('trc_TxbAnnBonIncWoDon:     '||to_char(trc_TxbAnnBonIncWoDon));
5272       WrtHrTrc('trc_TotLibAB:              '||to_char(trc_TotLibAB));
5273       WrtHrTrc('trc_LibFyAB:               '||to_char(trc_LibFyAB));
5274       WrtHrTrc('trc_LibFpAB:               '||to_char(trc_LibFpAB));
5275       -- Annual Payments
5276       WrtHrTrc('trc_AnnPymYtd:             '||to_char(trc_AnnPymYtd));
5277       WrtHrTrc('trc_AnnPymPtd:             '||to_char(trc_AnnPymPtd));
5278       WrtHrTrc('trc_AnnPymErn:             '||to_char(trc_AnnPymErn));
5279       WrtHrTrc('trc_TxbAnnPymInc:          '||to_char(trc_TxbAnnPymInc));
5280       WrtHrTrc('trc_TxbAnnPymIncWoDon:     '||to_char(trc_TxbAnnPymIncWoDon));
5281       WrtHrTrc('trc_TotLibAP:              '||to_char(trc_TotLibAP));
5282       WrtHrTrc('trc_LibFyAP:               '||to_char(trc_LibFyAP));
5283       WrtHrTrc('trc_LibFpAP:               '||to_char(trc_LibFpAP));
5284       -- Pubilc Office Allowance
5285       WrtHrTrc('trc_PblOffYtd:             '||to_char(trc_PblOffYtd));
5286       WrtHrTrc('trc_PblOffPtd:             '||to_char(trc_PblOffPtd));
5287       WrtHrTrc('trc_PblOffErn:             '||to_char(trc_PblOffErn));
5288       WrtHrTrc('trc_LibFyPO:               '||to_char(trc_LibFyPO));
5289       WrtHrTrc('trc_LibFpPO:               '||to_char(trc_LibFpPO));
5290 
5291       -- NTG Annual Payments
5292       WrtHrTrc('trc_AnnPymNtgYtd:          '||to_char(trc_AnnPymNtgYtd));
5293       WrtHrTrc('trc_AnnPymNtgPtd:          '||to_char(trc_AnnPymNtgPtd));
5294       WrtHrTrc('trc_AnnPymNtgErn:          '||to_char(trc_AnnPymNtgErn));
5295       WrtHrTrc('trc_TxbAnnPymNtgInc:       '||to_char(trc_TxbAnnPymNtgInc));
5296       WrtHrTrc('trc_TxbAnnPymNtgIncWoDon:  '||to_char(trc_TxbAnnPymNtgIncWoDon));
5297       WrtHrTrc('trc_TotLibNtgAP:           '||to_char(trc_TotLibNtgAP ));
5298       WrtHrTrc('trc_LibFyNtgAP:            '||to_char(trc_LibFyNtgAP  ));
5299       WrtHrTrc('trc_LibFpNtgAP:            '||to_char(trc_LibFpNtgAP  ));
5300 
5301       -- NTG EE Debt due to Annual Payments
5302       WrtHrTrc('trc_AnnEEDbtNTGYtd:        '||to_char(trc_AnnEEDbtNTGYtd));
5303       WrtHrTrc('trc_AnnEEDbtNtgPtd:        '||to_char(trc_AnnEEDbtNtgPtd));
5304       WrtHrTrc('trc_AnnEEDbtNtgErn:        '||to_char(trc_AnnEEDbtNtgErn));
5305       WrtHrTrc('trc_TxbAnnEEDbtNtgInc:     '||to_char(trc_TxbAnnEEDbtNtgInc));
5306       WrtHrTrc('trc_TxbAnnEEDbtNtgIncWoDon:'||to_char(trc_TxbAnnEEDbtNtgIncWoDon));
5307       WrtHrTrc('trc_TotLibNtgEEDbt:        '||to_char(trc_TotLibNtgEEDbt ));
5308       WrtHrTrc('trc_LibFyNtgEEDbt:         '||to_char(trc_LibFyNtgEEDbt  ));
5309       WrtHrTrc('trc_LibFpNtgEEDbt:         '||to_char(trc_LibFpNtgEEDbt  ));
5310 
5311    END IF;
5312 
5313 EXCEPTION
5314    WHEN OTHERS THEN
5315       IF xpt_Msg = 'No Error' THEN
5316          xpt_Msg := 'YtdCalc: '||TO_CHAR(SQLCODE);
5317       END IF;
5318       RAISE xpt_E;
5319 END YtdCalc;
5320 -------------------------------------------------------------------------------
5321 -- NorCalc                                                                   --
5322 -- Main Tax Calculation for Periodic Income                                  --
5323 -------------------------------------------------------------------------------
5324 PROCEDURE NorCalc AS
5325 -- Variables
5326 --
5327    l_Np       BALANCE DEFAULT 0;
5328 
5329 BEGIN
5330 
5331 
5332    hr_utility.set_location('py_za_tx_01032012.NorCalc',1);
5333 -- Identify the calculation
5334 --
5335    trc_CalTyp := 'NorCalc';
5336 
5337 -- Update Global Balance Values with correct TAXABLE values
5338 --
5339    --Fix for bug#10372926
5340    --bal_TOT_TXB_TA_PTD  := bal_TOT_TXB_TA_PTD * glb_ZA_TRV_ALL_TX_PRC / 100;
5341 
5342    --py_za_tx_utl_01032012.TrvAll;
5343 
5344    hr_utility.set_location('py_za_tx_01032012.NorCalc',2);
5345 
5346    bal_TOT_TXB_PO_PTD  := bal_TOT_TXB_PO_PTD * glb_ZA_PBL_TX_PRC / 100;
5347    bal_TOT_TXB_PO_YTD  := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
5348 
5349 -- PTD Taxable Income
5350 --
5351    trc_TxbIncPtd :=
5352       ( bal_TOT_TXB_NI_PTD
5353       + bal_TOT_TXB_FB_PTD
5354       + bal_TOT_TXB_TA_PTD
5355       + bal_BP_PTD
5356       );
5357 -- Period Factor
5358    py_za_tx_utl_01032012.PeriodFactor;
5359 
5360 -- Possible Periods Factor
5361    py_za_tx_utl_01032012.PossiblePeriodsFactor;
5362 
5363 -- Rebates
5364    py_za_tx_utl_01032012.SetRebates;
5365 
5366 -- Abatements
5367    py_za_tx_utl_01032012.Abatements;
5368 
5369    hr_utility.set_location('py_za_tx_01032012.NorCalc',3);
5370 
5371    trc_curMedTxCrEle := greatest(bal_MED_AID_TAX_CR_YTD + bal_ANN_MED_AID_TAX_CR_YTD,0,bal_MED_AID_TAX_CR_USED_YTD + bal_MED_AID_TAX_CR_USED_LS_YTD);
5372 
5373 -- Deemed Remuneration
5374 --
5375 
5376    -- Run Deemed Remuneration
5377    trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
5378    -- Skip the calculation if there is No Income
5379    IF trc_DmdRmnRun <> 0 THEN
5380       hr_utility.set_location('py_za_tx_01032012.NorCalc',4);
5381       -- Taxable Deemed Remuneration
5382       trc_TxbDmdRmn := trc_DmdRmnRun;
5383       -- Threshold Check
5384       IF trc_TxbDmdRmn >= trc_Threshold THEN
5385          hr_utility.set_location('py_za_tx_01032012.NorCalc',5);
5386          -- Tax Liability
5387          trc_TotLibDR := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbDmdRmn);
5388          trc_LibFyDR  := trc_TotLibDR - 0;
5389          trc_TotLibDR := greatest(trc_TotLibDR,0);
5390          -- DeAnnualise
5391          trc_LibFpDR := py_za_tx_utl_01032012.DeAnnualise
5392                            ( p_Liab    => trc_LibFyDR
5393                            , p_TxOnYtd => bal_TX_ON_DR_YTD + bal_MED_TAX_CR_USED_DR_YTD
5394                            , p_TxOnPtd => bal_TX_ON_DR_PTD + bal_MED_TAX_CR_USED_DR_PTD
5395                            );
5396 
5397          -- Start Medical Tax Credit Changes
5398          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5399                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
5400                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_DR_YTD
5401                               ,p_Tx_RUN               => trc_LibFpDR
5402                               ,p_Tx_YTD               => bal_TX_ON_DR_YTD
5403                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedDR
5404                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedDR_Upd
5405                                );
5406          trc_LibFpDR_Upd := trc_LibFpDR - trc_MedTxCrUsedDR_Upd;
5407          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedDR,0);
5408          hr_utility.set_location('    trc_MedTxCrUsedDR:'||trc_MedTxCrUsedDR,10);
5409          hr_utility.set_location('trc_MedTxCrUsedDR_Upd:'||trc_MedTxCrUsedDR_Upd,10);
5410          hr_utility.set_location('      trc_LibFpDR_Upd:'||trc_LibFpDR_Upd,10);
5411          hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5412          -- End Medical Tax Credit Changes
5413 
5414      ELSE
5415           hr_utility.set_location('py_za_tx_01032012.NorCalc',6);
5416           -- Set Cascade Figures and Refund
5417           trc_TotLibDR   := 0;
5418           trc_LibFpDR    := -1 * bal_TX_ON_DR_YTD;
5419           trc_MedTxCrUsedDR_Upd := -1 * bal_MED_TAX_CR_USED_DR_YTD;
5420           trc_LibFpDR_Upd := trc_LibFpDR;
5421           trc_LibFpDROvr := TRUE;
5422      END IF;
5423   ELSE
5424       hr_utility.set_location('py_za_tx_01032012.NorCalc',7);
5425       -- Set Cascade Figures and Refund
5426       trc_TxbDmdRmn  := 0;
5427       trc_TotLibDR   := 0;
5428       trc_LibFpDR    := -1 * bal_TX_ON_DR_YTD;
5429       trc_MedTxCrUsedDR_Upd := -1 * bal_MED_TAX_CR_USED_DR_YTD;
5430       trc_LibFpDR_Upd := trc_LibFpDR;
5431       trc_LibFpDROvr := TRUE;
5432   END IF;
5433 
5434 -- Normal Income
5435 --
5436    -- Ytd Normal Income
5437    trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
5438    -- Ptd Normal Income
5439    trc_NorIncPtd := bal_TOT_TXB_NI_PTD;
5440    -- Skip the calculation if there is No Income
5441    -- If Tax Method is Cumulative check for YTD Income
5442    -- If Tax Method is Non Cumulative check for PTD Income
5443    IF (dbi_TX_MTD = 'C' AND trc_NorIncYtd <> 0) OR (dbi_TX_MTD = 'N' AND trc_NorIncPtd > 0) THEN
5444       hr_utility.set_location('py_za_tx_01032012.NorCalc',8);
5445 
5446       -- Annualise Normal Income
5447       trc_NorErn := py_za_tx_utl_01032012.Annualise
5448          (p_YtdInc => trc_NorIncYtd
5449          ,p_PtdInc => trc_NorIncPtd
5450          );
5451       --TYS2010
5452       -- Taxable Normal Income
5453       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5454       trc_TxbNorIncWoDon := trc_NorErn - trc_PerTotAbm;
5455       trc_TxbNorInc :=trc_TxbNorIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbNorIncWoDon,trc_PerDonAmt);
5456       -- Threshold Check
5457       IF trc_TxbNorInc >= trc_Threshold THEN
5458          hr_utility.set_location('py_za_tx_01032012.NorCalc',9);
5459          -- Tax Liability
5460          trc_TotLibNI := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbNorInc);
5461          trc_LibFyNI  := trc_TotLibNI - least(trc_TotLibNI,trc_TotLibDR);
5462          trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibDR);
5463          -- DeAnnualise
5464           trc_LibFpNI := py_za_tx_utl_01032012.DeAnnualise
5465                            ( p_Liab    => trc_LibFyNI
5466                            , p_TxOnYtd => bal_TX_ON_NI_YTD + bal_MED_TAX_CR_USED_NI_YTD
5467                            , p_TxOnPtd => bal_TX_ON_NI_PTD + bal_MED_TAX_CR_USED_NI_PTD
5468                            );
5469 
5470          -- Start Medical Tax Credit Changes
5471          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5472                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
5473                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_NI_YTD
5474                               ,p_Tx_RUN               => trc_LibFpNI
5475                               ,p_Tx_YTD               => bal_TX_ON_NI_YTD
5476                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedNI
5477                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedNI_Upd
5478                                );
5479          trc_LibFpNI_Upd := trc_LibFpNI - trc_MedTxCrUsedNI_Upd;
5480          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNI,0);
5481          hr_utility.set_location('    trc_MedTxCrUsedNI:'||trc_MedTxCrUsedNI,10);
5482          hr_utility.set_location('trc_MedTxCrUsedNI_Upd:'||trc_MedTxCrUsedNI_Upd,10);
5483          hr_utility.set_location('      trc_LibFpNI_Upd:'||trc_LibFpNI_Upd,10);
5484          hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5485          -- End Medical Tax Credit Changes
5486 
5487       ELSE
5488          hr_utility.set_location('py_za_tx_01032012.NorCalc',10);
5489          -- Set Cascade Figures and Refund
5490          trc_TotLibNI   := trc_TotLibDR;
5491          IF (dbi_TX_MTD = 'C') THEN
5492            trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
5493            trc_MedTxCrUsedNI_Upd := -1 * bal_MED_TAX_CR_USED_NI_YTD;
5494            trc_LibFpNI_Upd := trc_LibFpNI;
5495          ELSE -- in case of Non Cumilative Tax Method
5496            trc_LibFpNI    := -1 * bal_TX_ON_NI_PTD;
5497            trc_MedTxCrUsedNI_Upd := -1 * bal_MED_TAX_CR_USED_NI_PTD;
5498            trc_LibFpNI_Upd := trc_LibFpNI;
5499          END IF;
5500            trc_LibFpNIOvr := TRUE;
5501       END IF;
5502    ELSE
5503       hr_utility.set_location('py_za_tx_01032012.NorCalc',11);
5504       -- Set Cascade Figures and Refund
5505       trc_NorErn     := 0;
5506       trc_TxbNorInc  := 0;
5507       trc_TotLibNI   := trc_TotLibDR;
5508       IF (dbi_TX_MTD = 'C') THEN
5509         trc_LibFpNI    := -1 * bal_TX_ON_NI_YTD;
5510         trc_MedTxCrUsedNI_Upd := -1 * bal_MED_TAX_CR_USED_NI_YTD;
5511         trc_LibFpNI_Upd := trc_LibFpNI;
5512       ELSE -- in case of Non Cumilative Tax Method
5513         trc_LibFpNI    := -1 * bal_TX_ON_NI_PTD;
5514         trc_MedTxCrUsedNI_Upd := -1 * bal_MED_TAX_CR_USED_NI_PTD;
5515         trc_LibFpNI_Upd := trc_LibFpNI;
5516       END IF;
5517         trc_LibFpNIOvr := TRUE;
5518    END IF;
5519 
5520 -- Fringe Benefits
5521 --
5522    -- Ytd Fringe Benefits
5523    trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
5524    -- Ptd Fringe Benefits
5525    trc_FrnBenPtd := bal_TOT_TXB_FB_PTD;
5526    -- Skip the calculation if there is No Income
5527    -- If Tax Method is Cumulative check for YTD Income
5528    -- If Tax Method is Non Cumulative check for PTD Income
5529    IF (dbi_TX_MTD = 'C' AND trc_FrnBenYtd <> 0) OR (dbi_TX_MTD = 'N' AND trc_FrnBenPtd > 0) THEN
5530       hr_utility.set_location('py_za_tx_01032012.NorCalc',12);
5531 
5532       -- Annualise Fringe Benefits
5533       trc_FrnBenErn := py_za_tx_utl_01032012.Annualise
5534                           ( p_YtdInc => trc_FrnBenYtd
5535                           , p_PtdInc => trc_FrnBenPtd
5536                           ) + trc_NorErn;
5537       --TYS2010
5538       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5539       -- Taxable Fringe Income
5540       trc_TxbFrnIncWoDon := trc_FrnBenErn - trc_PerTotAbm;
5541       trc_TxbFrnInc :=trc_TxbFrnIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbFrnIncWoDon,trc_PerDonAmt);
5542 
5543       -- Threshold Check
5544       IF trc_TxbFrnInc >= trc_Threshold THEN
5545          hr_utility.set_location('py_za_tx_01032012.NorCalc',13);
5546          -- Tax Liability
5547          trc_TotLibFB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbFrnInc);
5548          trc_LibFyFB  := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
5549          trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
5550          -- DeAnnualise
5551          trc_LibFpFB := py_za_tx_utl_01032012.DeAnnualise
5552                            ( trc_LibFyFB
5553                            , bal_TX_ON_FB_YTD + bal_MED_TAX_CR_USED_FB_YTD
5554                            , bal_TX_ON_FB_PTD + bal_MED_TAX_CR_USED_FB_PTD
5555                            );
5556 
5557          -- Start Medical Tax Credit Changes
5558          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5559                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
5560                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_FB_YTD
5561                               ,p_Tx_RUN               => trc_LibFpFB
5562                               ,p_Tx_YTD               => bal_TX_ON_FB_YTD
5563                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedFB
5564                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedFB_Upd
5565                                );
5566          trc_LibFpFB_Upd := trc_LibFpFB - trc_MedTxCrUsedFB_Upd;
5567          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedFB,0);
5568          hr_utility.set_location('    trc_MedTxCrUsedFB:'||trc_MedTxCrUsedFB,10);
5569          hr_utility.set_location('trc_MedTxCrUsedFB_Upd:'||trc_MedTxCrUsedFB_Upd,10);
5570          hr_utility.set_location('      trc_LibFpFB_Upd:'||trc_LibFpFB_Upd,10);
5571          hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5572          -- End Medical Tax Credit Changes
5573 
5574       ELSE
5575          hr_utility.set_location('py_za_tx_01032012.NorCalc',14);
5576          -- Set Cascade Figures and Refund
5577          trc_TotLibFB   := trc_TotLibNI;
5578          IF (dbi_TX_MTD = 'C') THEN
5579            trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
5580            trc_MedTxCrUsedFB_Upd := -1 * bal_MED_TAX_CR_USED_FB_YTD;
5581            trc_LibFpFB_Upd := trc_LibFpFB;
5582          ELSE -- in case of Non Cumilative Tax Method
5583            trc_LibFpFB    := -1 * bal_TX_ON_FB_PTD;
5584            trc_MedTxCrUsedFB_Upd := -1 * bal_MED_TAX_CR_USED_FB_PTD;
5585            trc_LibFpFB_Upd := trc_LibFpFB;
5586          END IF;
5587          trc_LibFpFBOvr := TRUE;
5588       END IF;
5589    ELSE
5590       hr_utility.set_location('py_za_tx_01032012.NorCalc',15);
5591       -- Set Cascade Figures and Refund
5592       trc_FrnBenErn  := trc_NorErn;
5593       trc_TxbFrnInc  := trc_TxbNorInc;
5594       trc_TotLibFB   := trc_TotLibNI;
5595       IF (dbi_TX_MTD = 'C') THEN
5596         trc_LibFpFB    := -1 * bal_TX_ON_FB_YTD;
5597         trc_MedTxCrUsedFB_Upd := -1 * bal_MED_TAX_CR_USED_FB_YTD;
5598         trc_LibFpFB_Upd := trc_LibFpFB;
5599       ELSE -- in case of Non Cumilative Tax Method
5600         trc_LibFpFB    := -1 * bal_TX_ON_FB_PTD;
5601         trc_MedTxCrUsedFB_Upd := -1 * bal_MED_TAX_CR_USED_FB_PTD;
5602         trc_LibFpFB_Upd := trc_LibFpFB;
5603       END IF;
5604       trc_LibFpFBOvr := TRUE;
5605    END IF;
5606 
5607 -- Travel Allowance
5608 --
5609    -- Ytd Travel Allowance
5610    trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
5611    -- Ptd Travel Allowance
5612    trc_TrvAllPtd := bal_TOT_TXB_TA_PTD;
5613    -- Skip the calculation if there is No Income
5614    -- If Tax Method is Cumulative check for YTD Income
5615    -- If Tax Method is Non Cumulative check for PTD Income
5616    IF (dbi_TX_MTD = 'C' AND trc_TrvAllYtd <> 0) OR (dbi_TX_MTD = 'N' AND trc_TrvAllPtd > 0) THEN
5617       hr_utility.set_location('py_za_tx_01032012.NorCalc',16);
5618       -- Ptd Travel Allowance
5619       trc_TrvAllPtd := bal_TOT_TXB_TA_PTD;
5620       -- Annualise Travel Allowance
5621       trc_TrvAllErn := py_za_tx_utl_01032012.Annualise
5622                           ( p_YtdInc => trc_TrvAllYtd
5623                           , p_PtdInc => trc_TrvAllPtd
5624                           ) + trc_FrnBenErn;
5625       --TYS2010
5626       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5627       -- Taxable Travel Income
5628       trc_TxbTrvIncWoDon := trc_TrvAllErn - trc_PerTotAbm;
5629       trc_TxbTrvInc :=trc_TxbTrvIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbTrvIncWoDon,trc_PerDonAmt);
5630 
5631       -- Threshold Check
5632       IF trc_TxbTrvInc >= trc_Threshold THEN
5633          hr_utility.set_location('py_za_tx_01032012.NorCalc',17);
5634          -- Tax Liability
5635          trc_TotLibTA := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbTrvInc);
5636          trc_LibFyTA  := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
5637          trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
5638          -- DeAnnualise
5639          trc_LibFpTA := py_za_tx_utl_01032012.DeAnnualise
5640                            ( trc_LibFyTA
5641                            , bal_TX_ON_TA_YTD + bal_MED_TAX_CR_USED_TA_YTD
5642                            , bal_TX_ON_TA_PTD + bal_MED_TAX_CR_USED_TA_PTD
5643                            );
5644 
5645          -- Start Medical Tax Credit Changes
5646          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5647                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
5648                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_TA_YTD
5649                               ,p_Tx_RUN               => trc_LibFpTA
5650                               ,p_Tx_YTD               => bal_TX_ON_TA_YTD
5651                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedTA
5652                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedTA_Upd
5653                                );
5654          trc_LibFpTA_Upd := trc_LibFpTA - trc_MedTxCrUsedTA_Upd;
5655          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedTA,0);
5656          hr_utility.set_location('    trc_MedTxCrUsedTA:'||trc_MedTxCrUsedTA,10);
5657          hr_utility.set_location('trc_MedTxCrUsedTA_Upd:'||trc_MedTxCrUsedTA_Upd,10);
5658          hr_utility.set_location('      trc_LibFpTA_Upd:'||trc_LibFpTA_Upd,10);
5659          hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5660          -- End Medical Tax Credit Changes
5661 
5662       ELSE
5663          hr_utility.set_location('py_za_tx_01032012.NorCalc',18);
5664          -- Set Cascade Figures and Refund
5665          trc_TotLibTA   := trc_TotLibFB;
5666          IF (dbi_TX_MTD = 'C') THEN
5667            trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
5668            trc_MedTxCrUsedTA_Upd := -1 * bal_MED_TAX_CR_USED_TA_YTD;
5669            trc_LibFpTA_Upd := trc_LibFpTA;
5670          ELSE -- in case of Non Cumilative Tax Method
5671            trc_LibFpTA    := -1 * bal_TX_ON_TA_PTD;
5672            trc_MedTxCrUsedTA_Upd := -1 * bal_MED_TAX_CR_USED_TA_PTD;
5673            trc_LibFpTA_Upd := trc_LibFpTA;
5674          END IF;
5675          trc_LibFpTAOvr := TRUE;
5676       END IF;
5677    ELSE
5678       hr_utility.set_location('py_za_tx_01032012.NorCalc',19);
5679       -- Set Cascade Figures and Refund
5680       trc_TrvAllErn  := trc_FrnBenErn;
5681       trc_TxbTrvInc  := trc_TxbFrnInc;
5682       trc_TotLibTA   := trc_TotLibFB;
5683       IF (dbi_TX_MTD = 'C') THEN
5684         trc_LibFpTA    := -1 * bal_TX_ON_TA_YTD;
5685         trc_MedTxCrUsedTA_Upd := -1 * bal_MED_TAX_CR_USED_TA_YTD;
5686         trc_LibFpTA_Upd := trc_LibFpTA;
5687      ELSE -- in case of Non Cumilative Tax Method
5688         trc_LibFpTA    := -1 * bal_TX_ON_TA_PTD;
5689         trc_MedTxCrUsedTA_Upd := -1 * bal_MED_TAX_CR_USED_TA_PTD;
5690         trc_LibFpTA_Upd := trc_LibFpTA;
5691       END IF;
5692       trc_LibFpTAOvr := TRUE;
5693    END IF;
5694 
5695 -- Bonus Provision
5696 --
5697    -- Ytd Bonus Prvision
5698    trc_BonProYtd := bal_BP_YTD;
5699    -- Ptd Bonus Prvision
5700    trc_BonProYtd := bal_BP_YTD;
5701    -- Skip the calculation if there is No Income
5702    -- If Tax Method is Cumulative check for YTD Income
5703    -- If Tax Method is Non Cumulative check for PTD Income
5704    IF (dbi_TX_MTD = 'C' AND trc_BonProYtd <> 0) OR (dbi_TX_MTD = 'N' AND trc_BonProPtd > 0) THEN
5705       hr_utility.set_location('py_za_tx_01032012.NorCalc',20);
5706       -- Annualise Bonus Provision
5707       trc_BonProErn := py_za_tx_utl_01032012.Annualise
5708                           ( p_YtdInc => trc_BonProYtd
5709                           , p_PtdInc => trc_BonProPtd
5710                           ) + trc_TrvAllErn;
5711       --TYS2010
5712       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5713       -- Taxable Bonus Provision Income
5714       trc_TxbBonProIncWoDon := trc_BonProErn - trc_PerTotAbm;
5715       trc_TxbBonProInc :=trc_TxbBonProIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbBonProIncWoDon,trc_PerDonAmt);
5716 
5717       -- Threshold Check
5718       IF trc_TxbBonProInc >= trc_Threshold THEN
5719          hr_utility.set_location('py_za_tx_01032012.NorCalc',21);
5720          -- Tax Liability
5721          trc_TotLibBP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbBonProInc);
5722          trc_LibFyBP  := trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA);
5723          trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
5724          -- DeAnnualise
5725          trc_LibFpBP := py_za_tx_utl_01032012.DeAnnualise
5726                            ( trc_LibFyBP
5727                            , bal_TX_ON_BP_YTD + bal_MED_TAX_CR_USED_BP_YTD
5728                            , bal_TX_ON_BP_PTD + bal_MED_TAX_CR_USED_BP_PTD
5729                            );
5730 
5731          -- Start Medical Tax Credit Changes
5732          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5733                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
5734                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_BP_YTD
5735                               ,p_Tx_RUN               => trc_LibFpBP
5736                               ,p_Tx_YTD               => bal_TX_ON_BP_YTD
5737                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedBP
5738                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedBP_Upd
5739                                );
5740          trc_LibFpBP_Upd := trc_LibFpBP - trc_MedTxCrUsedBP_Upd;
5741          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedBP,0);
5742          hr_utility.set_location('    trc_MedTxCrUsedBP:'||trc_MedTxCrUsedBP,10);
5743          hr_utility.set_location('trc_MedTxCrUsedBP_Upd:'||trc_MedTxCrUsedBP_Upd,10);
5744          hr_utility.set_location('      trc_LibFpBP_Upd:'||trc_LibFpBP_Upd,10);
5745          hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5746          -- End Medical Tax Credit Changes
5747 
5748       ELSE
5749          hr_utility.set_location('py_za_tx_01032012.NorCalc',22);
5750          -- Set Cascade Figures and Refund
5751          trc_TotLibBP   := trc_TotLibTA;
5752          IF (dbi_TX_MTD = 'C') THEN
5753            trc_LibFpBP      := -1 * bal_TX_ON_BP_YTD;
5754            trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_YTD;
5755            trc_LibFpBP_Upd := trc_LibFpBP;
5756          ELSE -- in case of Non Cumilative Tax Method
5757            trc_LibFpBP      := -1 * bal_TX_ON_BP_PTD;
5758            trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_PTD;
5759            trc_LibFpBP_Upd := trc_LibFpBP;
5760          END IF;
5761          trc_LibFpBPOvr := TRUE;
5762       END IF;
5763    ELSE
5764       hr_utility.set_location('py_za_tx_01032012.NorCalc',23);
5765       -- Set Cascade Figures and Refund
5766       trc_BonProErn    := trc_TrvAllErn;
5767       trc_TxbBonProInc := trc_TxbTrvInc;
5768       trc_TotLibBP     := trc_TotLibTA;
5769       IF (dbi_TX_MTD = 'C') THEN
5770         trc_LibFpBP      := -1 * bal_TX_ON_BP_YTD;
5771         trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_YTD;
5772         trc_LibFpBP_Upd := trc_LibFpBP;
5773      ELSE -- in case of Non Cumilative Tax Method
5774         trc_LibFpBP      := -1 * bal_TX_ON_BP_PTD;
5775         trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_PTD;
5776         trc_LibFpBP_Upd := trc_LibFpBP;
5777       END IF;
5778       trc_LibFpBPOvr   := TRUE;
5779    END IF;
5780 
5781 -- Annual Bonus
5782 --
5783    -- Ytd Annual Bonus
5784    trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
5785    -- Skip the calculation if there is No Income
5786    IF trc_AnnBonYtd <> 0 THEN
5787       hr_utility.set_location('py_za_tx_01032012.NorCalc',24);
5788       -- Annual Bonus Earnings
5789       trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
5790       --TYS2010
5791       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5792       -- Taxable Annual Bonus Income
5793       trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
5794       trc_TxbAnnBonInc :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
5795 
5796       -- Threshold Check
5797       IF trc_TxbAnnBonInc >= trc_Threshold THEN
5798          hr_utility.set_location('py_za_tx_01032012.NorCalc',25);
5799          -- Tax Liability
5800          trc_TotLibAB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnBonInc);
5801          trc_LibFyAB  := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
5802          trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
5803          -- Check Bonus Provision
5804          IF trc_BonProYtd <> 0 THEN
5805             hr_utility.set_location('py_za_tx_01032012.NorCalc',26);
5806             -- Check Bonus Provision Frequency
5807             IF dbi_BP_TX_RCV = 'A' THEN
5808                hr_utility.set_location('py_za_tx_01032012.NorCalc',27);
5809                trc_LibFpAB := 0;
5810             ELSE
5811                hr_utility.set_location('py_za_tx_01032012.NorCalc',28);
5812                trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD
5813                                             + bal_MED_TAX_CR_USED_BP_YTD
5814                                             + trc_LibFpBP
5815                                             + bal_TX_ON_AB_YTD
5816                                             + bal_MED_TAX_CR_USED_AB_YTD);
5817 
5818                -- Start Medical Tax Credit Changes
5819                py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5820                                     (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
5821                                     ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AB_YTD
5822                                     ,p_Tx_RUN               => trc_LibFpAB
5823                                     ,p_Tx_YTD               => bal_TX_ON_AB_YTD
5824                                     ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAB
5825                                     ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAB_Upd
5826                                      );
5827                trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
5828                trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
5829                hr_utility.set_location('    trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
5830                hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
5831                hr_utility.set_location('      trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
5832                hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5833                -- End Medical Tax Credit Changes
5834 
5835             END IF;
5836          ELSE
5837             hr_utility.set_location('py_za_tx_01032012.NorCalc',29);
5838             trc_LibFpAB := trc_LibFyAB - (bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
5839 
5840             -- Start Medical Tax Credit Changes
5841             py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5842                                  (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
5843                                  ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AB_YTD
5844                                  ,p_Tx_RUN               => trc_LibFpAB
5845                                  ,p_Tx_YTD               => bal_TX_ON_AB_YTD
5846                                  ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAB
5847                                  ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAB_Upd
5848                                   );
5849             trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
5850             trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
5851             hr_utility.set_location('    trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
5852             hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
5853             hr_utility.set_location('      trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
5854             hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5855             -- End Medical Tax Credit Changes
5856 
5857          END IF;
5858       ELSE
5859          hr_utility.set_location('py_za_tx_01032012.NorCalc',30);
5860          -- Set Cascade Figures and Refund
5861          trc_TotLibAB   := trc_TotLibTA;
5862          IF (dbi_TX_MTD = 'C') THEN
5863            trc_LibFpAB      := -1 * bal_TX_ON_AB_YTD;
5864            trc_MedTxCrUsedAB_Upd := -1 * bal_MED_TAX_CR_USED_AB_YTD;
5865            trc_LibFpAB_Upd := trc_LibFpAB ;
5866          ELSE -- in case of Non Cumilative Tax Method
5867            trc_LibFpAB      := -1 * bal_TX_ON_AB_PTD;
5868            trc_MedTxCrUsedAB_Upd := -1 * bal_MED_TAX_CR_USED_AB_PTD;
5869            trc_LibFpAB_Upd := trc_LibFpAB ;
5870         END IF;
5871          trc_LibFpABOvr := TRUE;
5872       END IF;
5873    ELSE
5874       hr_utility.set_location('py_za_tx_01032012.NorCalc',31);
5875       -- Set Cascade Figures and Refund
5876       trc_AnnBonErn    := trc_BonProErn;
5877       trc_TxbAnnBonInc := trc_TxbBonProInc;
5878       trc_TotLibAB     := trc_TotLibBP;
5879       IF (dbi_TX_MTD = 'C') THEN
5880         trc_LibFpAB      := -1 * bal_TX_ON_AB_YTD;
5881         trc_MedTxCrUsedAB_Upd := -1 * bal_MED_TAX_CR_USED_AB_YTD;
5882         trc_LibFpAB_Upd := trc_LibFpAB ;
5883       ELSE -- in case of Non Cumilative Tax Method
5884         trc_LibFpAB      := -1 * bal_TX_ON_AB_PTD;
5885         trc_MedTxCrUsedAB_Upd := -1 * bal_MED_TAX_CR_USED_AB_PTD;
5886         trc_LibFpAB_Upd := trc_LibFpAB;
5887       END IF;
5888       trc_LibFpABOvr   := TRUE;
5889    END IF;
5890 
5891 -- Annual Payments
5892 --
5893    -- Ytd Annual Payments
5894    trc_AnnPymYtd := bal_TOT_TXB_AP_YTD ;
5895    -- Skip the calculation if there is No Income
5896    IF trc_AnnPymYtd <> 0 THEN
5897       hr_utility.set_location('py_za_tx_01032012.NorCalc',32);
5898       -- Annual Payments Earnings
5899       trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
5900       --TYS2010
5901       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5902       -- Taxable Annual Payments Income
5903       trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
5904       trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
5905 
5906       -- Threshold Check
5907       IF trc_TxbAnnPymInc >= trc_Threshold THEN
5908          hr_utility.set_location('py_za_tx_01032012.NorCalc',33);
5909          -- Tax Liability
5910          trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymInc);
5911          trc_LibFyAP  := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
5912          trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
5913          hr_utility.set_location('py_za_tx_01032012.NorCalc',34);
5914          trc_LibFpAP  := trc_LibFyAP - (bal_TX_ON_AP_YTD + bal_MED_TAX_CR_USED_AP_YTD) ;
5915 
5916          -- Start Medical Tax Credit Changes
5917          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5918                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
5919                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_AP_YTD
5920                               ,p_Tx_RUN               => trc_LibFpAP
5921                               ,p_Tx_YTD               => bal_TX_ON_AP_YTD
5922                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedAP
5923                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedAP_Upd
5924                                );
5925          trc_LibFpAP_Upd := trc_LibFpAP - trc_MedTxCrUsedAP_Upd;
5926          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAP,0);
5927          hr_utility.set_location('    trc_MedTxCrUsedAP:'||trc_MedTxCrUsedAP,10);
5928          hr_utility.set_location('trc_MedTxCrUsedAP_Upd:'||trc_MedTxCrUsedAP_Upd,10);
5929          hr_utility.set_location('      trc_LibFpAP_Upd:'||trc_LibFpAP_Upd,10);
5930          hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5931          -- End Medical Tax Credit Changes
5932 
5933       ELSE
5934          hr_utility.set_location('py_za_tx_01032012.NorCalc',35);
5935          -- Set Cascade Figures and Refund
5936          trc_TotLibAP   := trc_TotLibAB;
5937          IF (dbi_TX_MTD = 'C') THEN
5938            trc_LibFpAP      := -1 * bal_TX_ON_AP_YTD;
5939            trc_MedTxCrUsedAP_Upd := -1 * bal_MED_TAX_CR_USED_AP_YTD;
5940            trc_LibFpAP_Upd := trc_LibFpAP;
5941          ELSE -- in case of Non Cumilative Tax Method
5942            trc_LibFpAP      := -1 * bal_TX_ON_AP_PTD;
5943            trc_MedTxCrUsedAP_Upd := -1 * bal_MED_TAX_CR_USED_AP_PTD;
5944            trc_LibFpAP_Upd := trc_LibFpAP;
5945          END IF;
5946          trc_LibFpAPOvr := TRUE;
5947       END IF;
5948    ELSE
5949       hr_utility.set_location('py_za_tx_01032012.NorCalc',36);
5950       -- Set Cascade Figures and Refund
5951       trc_AnnPymErn    := trc_AnnBonErn;
5952       trc_TxbAnnPymInc := trc_TxbAnnBonInc;
5953       trc_TotLibAP     := trc_TotLibAB;
5954       IF (dbi_TX_MTD = 'C') THEN
5955         trc_LibFpAP      := -1 * bal_TX_ON_AP_YTD;
5956         trc_MedTxCrUsedAP_Upd := -1 * bal_MED_TAX_CR_USED_AP_YTD;
5957         trc_LibFpAP_Upd := trc_LibFpAP;
5958       ELSE -- in case of Non Cumilative Tax Method
5959         trc_LibFpAP      := -1 * bal_TX_ON_AP_PTD;
5960         trc_MedTxCrUsedAP_Upd := -1 * bal_MED_TAX_CR_USED_AP_PTD;
5961         trc_LibFpAP_Upd := trc_LibFpAP;
5962       END IF;
5963       trc_LibFpAPOvr   := TRUE;
5964    END IF;
5965 
5966 -- Public Office Allowance
5967 --
5968    -- Ytd Public Office Allowance
5969    trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
5970    -- Ptd Public Office Allowance
5971    trc_PblOffPtd := bal_TOT_TXB_PO_PTD;
5972    -- Skip the calculation if there is No Income
5973    -- If Tax Method is Cumulative check for YTD Income
5974    -- If Tax Method is Non Cumulative check for PTD Income
5975    IF (dbi_TX_MTD = 'C' AND trc_PblOffYtd <> 0) OR (dbi_TX_MTD = 'N' AND trc_PblOffPtd > 0) THEN
5976       hr_utility.set_location('py_za_tx_01032012.NorCalc',37);
5977       -- Ptd Public Office Allowance
5978       trc_PblOffPtd := bal_TOT_TXB_PO_PTD;
5979       -- Annualise Public Office Allowance
5980       trc_PblOffErn := py_za_tx_utl_01032012.Annualise
5981                           ( p_YtdInc => trc_PblOffYtd
5982                           , p_PtdInc => trc_PblOffPtd
5983                           ) + trc_AnnPymErn;
5984       --TYS2010
5985       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5986       -- Taxable Public Office Allowance
5987       trc_TxbPblOffIncWoDon := trc_PblOffErn - trc_AnnTotAbm;
5988       trc_TxbPblOffInc :=trc_TxbPblOffIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbPblOffIncWoDon,trc_AnnDonAmt);
5989 
5990       -- Threshold Check
5991       IF trc_TxbPblOffInc >= trc_Threshold THEN
5992          hr_utility.set_location('py_za_tx_01032012.NorCalc',38);
5993          -- Tax Liability
5994          trc_TotLibPO := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbPblOffInc);
5995          trc_LibFyPO  := trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP);
5996          trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
5997          -- DeAnnualise
5998          trc_LibFpPO := py_za_tx_utl_01032012.DeAnnualise
5999                            ( trc_LibFyPO
6000                            , bal_TX_ON_PO_YTD + bal_MED_TAX_CR_USED_PO_YTD
6001                            , bal_TX_ON_PO_PTD + bal_MED_TAX_CR_USED_PO_PTD
6002                            );
6003 
6004          -- Start Medical Tax Credit Changes
6005          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
6006                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
6007                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_PO_YTD
6008                               ,p_Tx_RUN               => trc_LibFpPO
6009                               ,p_Tx_YTD               => bal_TX_ON_PO_YTD
6010                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedPO
6011                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedPO_Upd
6012                                );
6013          trc_LibFpPO_Upd := trc_LibFpPO - trc_MedTxCrUsedPO_Upd;
6014          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedPO,0);
6015          hr_utility.set_location('    trc_MedTxCrUsedPO:'||trc_MedTxCrUsedPO,10);
6016          hr_utility.set_location('trc_MedTxCrUsedPO_Upd:'||trc_MedTxCrUsedPO_Upd,10);
6017          hr_utility.set_location('      trc_LibFpPO_Upd:'||trc_LibFpPO_Upd,10);
6018          hr_utility.set_location('    trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
6019          -- End Medical Tax Credit Changes
6020 
6021       ELSE
6022          hr_utility.set_location('py_za_tx_01032012.NorCalc',39);
6023          -- Set Cascade Figures and Refund
6024          trc_TotLibPO   := trc_TotLibAP;
6025          IF (dbi_TX_MTD = 'C') THEN
6026            trc_LibFpPO       := -1 * bal_TX_ON_PO_YTD;
6027            trc_MedTxCrUsedPO_Upd := -1 * bal_MED_TAX_CR_USED_PO_YTD;
6028            trc_LibFpPO_Upd := trc_LibFpPO;
6029          ELSE -- in case of Non Cumilative Tax Method
6030            trc_LibFpPO       := -1 * bal_TX_ON_PO_PTD;
6031            trc_MedTxCrUsedPO_Upd := -1 * bal_MED_TAX_CR_USED_PO_PTD;
6032            trc_LibFpPO_Upd := trc_LibFpPO;
6033          END IF;
6034          trc_LibFpPOOvr := TRUE;
6035       END IF;
6036    ELSE
6037       hr_utility.set_location('py_za_tx_01032012.NorCalc',40);
6038       -- Set Cascade Figures and Refund
6039       trc_PblOffErn     := trc_AnnPymErn;
6040       trc_TxbPblOffInc  := trc_TxbAnnPymInc;
6041       trc_TotLibPO      := trc_TotLibAP;
6042       IF (dbi_TX_MTD = 'C') THEN
6043         trc_LibFpPO       := -1 * bal_TX_ON_PO_YTD;
6044         trc_MedTxCrUsedPO_Upd := -1 * bal_MED_TAX_CR_USED_PO_YTD;
6045         trc_LibFpPO_Upd := trc_LibFpPO;
6046       ELSE -- in case of Non Cumilative Tax Method
6047         trc_LibFpPO       := -1 * bal_TX_ON_PO_PTD;
6048         trc_MedTxCrUsedPO_Upd := -1 * bal_MED_TAX_CR_USED_PO_PTD;
6049         trc_LibFpPO_Upd := trc_LibFpPO;
6050       END IF;
6051       trc_LibFpPOOvr    := TRUE;
6052    END IF;
6053 
6054 
6055 -- Net to Gross Annual Payments.
6056 --
6057    -- Ytd Net to Gross Annual Payments
6058    trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
6059    -- Skip the calculation if there is No Income
6060    IF trc_AnnPymNtgYtd <> 0 THEN
6061       hr_utility.set_location('py_za_tx_01032012.NorCalc',41);
6062       -- Annual Payments Net to Gross Earnings
6063       trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_PblOffErn;
6064 
6065       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
6066       -- Taxable Annual Payments Income
6067       trc_TxbAnnPymNtgIncWoDon := trc_AnnPymNtgErn - trc_AnnTotAbm;
6068       trc_TxbAnnPymNtgInc :=trc_TxbAnnPymNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymNtgIncWoDon,trc_AnnDonAmt);
6069 
6070       -- Threshold Check
6071       IF trc_TxbAnnPymNtgInc >= trc_Threshold THEN
6072          hr_utility.set_location('py_za_tx_01032012.NorCalc',42);
6073          -- Tax Liability
6074          trc_TotLibNtgAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymNtgInc);
6075          trc_LibFyNtgAP  := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibPO);
6076          trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibPO);
6077 
6078          hr_utility.set_location('py_za_tx_01032012.NorCalc',43);
6079          trc_LibFpNtgAP  := trc_LibFyNtgAP - (bal_TX_ON_AP_NTG_YTD + bal_MED_TAX_CR_USED_NG_YTD);
6080 
6081          -- Start Medical Tax Credit Changes
6082          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
6083                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
6084                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_NG_YTD
6085                               ,p_Tx_RUN               => trc_LibFpNtgAP
6086                               ,p_Tx_YTD               => bal_TX_ON_AP_NTG_YTD
6087                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedNtgAP
6088                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedNtgAP_Upd
6089                                );
6090          trc_LibFpNtgAP_Upd := trc_LibFpNtgAP - trc_MedTxCrUsedNtgAP_Upd;
6091          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgAP,0);
6092          hr_utility.set_location('    trc_MedTxCrUsedNtgAP:'||trc_MedTxCrUsedNtgAP,10);
6093          hr_utility.set_location('trc_MedTxCrUsedNtgAP_Upd:'||trc_MedTxCrUsedNtgAP_Upd,10);
6094          hr_utility.set_location('      trc_LibFpNtgAP_Upd:'||trc_LibFpNtgAP_Upd,10);
6095          hr_utility.set_location('       trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
6096          -- End Medical Tax Credit Changes
6097 
6098       ELSE
6099          hr_utility.set_location('py_za_tx_01032012.NorCalc',44);
6100          -- Set Cascade Figures and Refund
6101          trc_TotLibNtgAP   := trc_TotLibPO;
6102          trc_LibFpNtgAP    := -1 * bal_TX_ON_AP_NTG_YTD;
6103          trc_MedTxCrUsedNtgAP_Upd := -1 * bal_MED_TAX_CR_USED_NG_YTD;
6104          trc_LibFpNtgAP_Upd := trc_LibFpNtgAP;
6105          trc_LibFpNtgAPOvr := TRUE;
6106       END IF;
6107    ELSE
6108       hr_utility.set_location('py_za_tx_01032012.NorCalc',45);
6109       -- Set Cascade Figures and Refund
6110       trc_AnnPymNtgErn     := trc_PblOffErn;
6111       trc_TxbAnnPymNtgInc  := trc_TxbPblOffInc;
6112       trc_TotLibNtgAP      := trc_TotLibPO;
6113       trc_LibFpNtgAP       := -1 * bal_TX_ON_AP_NTG_YTD;
6114       trc_MedTxCrUsedNtgAP_Upd := -1 * bal_MED_TAX_CR_USED_NG_YTD;
6115       trc_LibFpNtgAP_Upd := trc_LibFpNtgAP;
6116       trc_LibFpNtgAPOvr    := TRUE;
6117    END IF;
6118 
6119 
6120    -- Ytd Net to Gross EE Debt due to Net to Gross Annual Payments
6121    trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
6122    -- Skip the calculation if there is No Income
6123    IF trc_AnnEEDbtNtgYtd <> 0 THEN
6124       hr_utility.set_location('py_za_tx_01032012.NorCalc',46);
6125       -- Annual EE Debt Net to Gross Earnings
6126       trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
6127 
6128       --Suffixed the variable with WoDon to denote that donation amount is not deducted.
6129       trc_TxbAnnEEDbtNtgIncWoDon := trc_AnnEEDbtNtgErn - trc_AnnTotNTGAbm;
6130       trc_TxbAnnEEDbtNtgInc :=trc_TxbAnnEEDbtNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnEEDbtNtgIncWoDon,trc_AnnDonAmt);
6131 
6132       -- Threshold Check
6133       IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
6134          hr_utility.set_location('py_za_tx_01032012.NorCalc',47);
6135          -- Tax Liability
6136          trc_TotLibNtgEEDbt := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnEEDbtNtgInc);
6137          trc_LibFyNtgEEDbt  := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
6138          trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
6139 
6140          hr_utility.set_location('py_za_tx_01032012.NorCalc',48);
6141          trc_LibFpNtgEEDbt  := trc_LibFyNtgEEDbt - (bal_TX_ON_EE_DBT_NTG_YTD + bal_MED_TAX_CR_USED_EE_YTD) ;
6142 
6143          -- Start Medical Tax Credit Changes
6144          py_za_tx_utl_01032012.CalMedTxCrUSEDOns
6145                               (p_Avlbl_Md_Tx_Crdt     => trc_curMedTxCrEle
6146                               ,p_Md_tx_Crdt_Used_YTD  => bal_MED_TAX_CR_USED_EE_YTD
6147                               ,p_Tx_RUN               => trc_LibFpNtgEEDbt
6148                               ,p_Tx_YTD               => bal_TX_ON_EE_DBT_NTG_YTD
6149                               ,p_Md_Tx_Cr_Usd         => trc_MedTxCrUsedNtgEEDbt
6150                               ,p_Md_Tx_Cr_Usd_Upd     => trc_MedTxCrUsedNtgEEDbt_Upd
6151                                );
6152          trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt - trc_MedTxCrUsedNtgEEDbt_Upd;
6153          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgEEDbt,0);
6154          hr_utility.set_location('    trc_MedTxCrUsedNtgEEDbt:'||trc_MedTxCrUsedNtgEEDbt,10);
6155          hr_utility.set_location('trc_MedTxCrUsedNtgEEDbt_Upd:'||trc_MedTxCrUsedNtgEEDbt_Upd,10);
6156          hr_utility.set_location('      trc_LibFpNtgEEDbt_Upd:'||trc_LibFpNtgEEDbt_Upd,10);
6157          hr_utility.set_location('          trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
6158          -- End Medical Tax Credit Changes
6159 
6160       ELSE
6161          hr_utility.set_location('py_za_tx_01032012.NorCalc',49);
6162          -- Set Cascade Figures and Refund
6163          trc_TotLibNtgEEDbt   := trc_TotLibNtgAP;
6164          trc_LibFpNtgEEDbt    := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
6165          trc_MedTxCrUsedNtgEEDbt_Upd := -1 * bal_MED_TAX_CR_USED_EE_YTD;
6166          trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt;
6167          trc_LibFpNtgEEDbtOvr := TRUE;
6168       END IF;
6169    ELSE
6170       hr_utility.set_location('py_za_tx_01032012.NorCalc',50);
6171       -- Set Cascade Figures and Refund
6172       trc_AnnEEDbtNtgErn     := trc_AnnPymNtgErn;
6173       trc_TxbAnnEEDbtNtgInc  := trc_TxbAnnPymNtgInc;
6174       trc_TotLibNtgEEDbt      := trc_TotLibNtgAP;
6175       trc_LibFpNtgEEDbt       := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
6176       trc_MedTxCrUsedNtgEEDbt_Upd := -1 * bal_MED_TAX_CR_USED_EE_YTD;
6177       trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt;
6178       trc_LibFpNtgEEDbtOvr    := TRUE;
6179    END IF;
6180 
6181    trc_LibFpDR := trc_LibFpDR_Upd;
6182    trc_LibFpNI := trc_LibFpNI_Upd;
6183    trc_LibFpFB := trc_LibFpFB_Upd;
6184    trc_LibFpTA := trc_LibFpTA_Upd;
6185    trc_LibFpBP := trc_LibFpBP_Upd;
6186    trc_LibFpAB := trc_LibFpAB_Upd;
6187    trc_LibFpAP := trc_LibFpAP_Upd;
6188    trc_LibFpPO := trc_LibFpPO_Upd;
6189    trc_LibFpNtgAP := trc_LibFpNtgAP_Upd;
6190    trc_LibFpNtgEEDbt := trc_LibFpNtgEEDbt_Upd;
6191 
6192 -- Net Pay Validation
6193 --
6194    py_za_tx_utl_01032012.ValidateTaxOns;
6195 
6196    hr_utility.set_location('py_za_tx_01032012.NorCalc',51);
6197 
6198    -- Deemed Remuneration
6199    WrtHrTrc('trc_TxbDmdRmn:     '||to_char(trc_TxbDmdRmn));
6200    WrtHrTrc('trc_TotLibDR:      '||to_char(trc_TotLibDR ));
6201    WrtHrTrc('trc_LibFyDR:       '||to_char(trc_LibFyDR  ));
6202    WrtHrTrc('trc_LibFpDR:       '||to_char(trc_LibFpDR  ));
6203    -- Base Income
6204    WrtHrTrc('trc_BseErn:        '||to_char(trc_BseErn   ));
6205    WrtHrTrc('trc_TxbBseInc:     '||to_char(trc_TxbBseInc));
6206    WrtHrTrc('trc_TotLibBse:     '||to_char(trc_TotLibBse));
6207    -- Normal Income
6208    WrtHrTrc('trc_NorIncYtd:     '||to_char(trc_NorIncYtd));
6209    WrtHrTrc('trc_NorIncPtd:     '||to_char(trc_NorIncPtd));
6210    WrtHrTrc('trc_NorErn:        '||to_char(trc_NorErn   ));
6211    WrtHrTrc('trc_TxbNorInc:     '||to_char(trc_TxbNorInc));
6212    WrtHrTrc('trc_TxbNorIncWoDon:'||to_char(trc_TxbNorIncWoDon));
6213    WrtHrTrc('trc_TotLibNI:      '||to_char(trc_TotLibNI ));
6214    WrtHrTrc('trc_LibFyNI:       '||to_char(trc_LibFyNI  ));
6215    WrtHrTrc('trc_LibFpNI:       '||to_char(trc_LibFpNI  ));
6216    -- Fringe Benefits
6217    WrtHrTrc('trc_FrnBenYtd:     '||to_char(trc_FrnBenYtd));
6218    WrtHrTrc('trc_FrnBenPtd:     '||to_char(trc_FrnBenPtd));
6219    WrtHrTrc('trc_FrnBenErn:     '||to_char(trc_FrnBenErn));
6220    WrtHrTrc('trc_TxbFrnInc:     '||to_char(trc_TxbFrnInc));
6221    WrtHrTrc('trc_TxbFrnIncWoDon:'||to_char(trc_TxbFrnIncWoDon));
6222    WrtHrTrc('trc_TotLibFB:      '||to_char(trc_TotLibFB ));
6223    WrtHrTrc('trc_LibFyFB:       '||to_char(trc_LibFyFB  ));
6224    WrtHrTrc('trc_LibFpFB:       '||to_char(trc_LibFpFB  ));
6225    -- Travel Allowance
6226    WrtHrTrc('trc_TrvAllYtd:     '||to_char(trc_TrvAllYtd));
6227    WrtHrTrc('trc_TrvAllPtd:     '||to_char(trc_TrvAllPtd));
6228    WrtHrTrc('trc_TrvAllErn:     '||to_char(trc_TrvAllErn));
6229    WrtHrTrc('trc_TxbTrvInc:     '||to_char(trc_TxbTrvInc));
6230    WrtHrTrc('trc_TxbTrvIncWoDon:'||to_char(trc_TxbTrvIncWoDon));
6231    WrtHrTrc('trc_TotLibTA:      '||to_char(trc_TotLibTA ));
6232    WrtHrTrc('trc_LibFyTA:       '||to_char(trc_LibFyTA  ));
6233    WrtHrTrc('trc_LibFpTA:       '||to_char(trc_LibFpTA  ));
6234    -- Bonus Provision
6235    WrtHrTrc('trc_BonProYtd:     '||to_char(trc_BonProYtd));
6236    WrtHrTrc('trc_BonProPtd:     '||to_char(trc_BonProPtd));
6237    WrtHrTrc('trc_BonProErn:     '||to_char(trc_BonProErn));
6238    WrtHrTrc('trc_TxbBonProInc:  '||to_char(trc_TxbBonProInc));
6239    WrtHrTrc('trc_TxbBonProIncWoDon:'||to_char(trc_TxbBonProIncWoDon));
6240    WrtHrTrc('trc_TotLibBP:      '||to_char(trc_TotLibBP ));
6241    WrtHrTrc('trc_LibFyBP:       '||to_char(trc_LibFyBP  ));
6242    WrtHrTrc('trc_LibFpBP:       '||to_char(trc_LibFpBP  ));
6243    -- Annual Bonus
6244    WrtHrTrc('trc_AnnBonYtd:     '||to_char(trc_AnnBonYtd));
6245    WrtHrTrc('trc_AnnBonPtd:     '||to_char(trc_AnnBonPtd));
6246    WrtHrTrc('trc_AnnBonErn:     '||to_char(trc_AnnBonErn));
6247    WrtHrTrc('trc_TxbAnnBonInc:  '||to_char(trc_TxbAnnBonInc));
6248    WrtHrTrc('trc_TxbAnnBonIncWoDon:'||to_char(trc_TxbAnnBonIncWoDon));
6249    WrtHrTrc('trc_TotLibAB:      '||to_char(trc_TotLibAB ));
6250    WrtHrTrc('trc_LibFyAB:       '||to_char(trc_LibFyAB  ));
6251    WrtHrTrc('trc_LibFpAB:       '||to_char(trc_LibFpAB  ));
6252    -- Annual Payments
6253    WrtHrTrc('trc_AnnPymYtd:     '||to_char(trc_AnnPymYtd));
6254    WrtHrTrc('trc_AnnPymPtd:     '||to_char(trc_AnnPymPtd));
6255    WrtHrTrc('trc_AnnPymErn:     '||to_char(trc_AnnPymErn));
6256    WrtHrTrc('trc_TxbAnnPymInc:  '||to_char(trc_TxbAnnPymInc));
6257    WrtHrTrc('trc_TxbAnnPymIncWoDon:'||to_char(trc_TxbAnnPymIncWoDon));
6258    WrtHrTrc('trc_TotLibAP:      '||to_char(trc_TotLibAP ));
6259    WrtHrTrc('trc_LibFyAP:       '||to_char(trc_LibFyAP  ));
6260    WrtHrTrc('trc_LibFpAP:       '||to_char(trc_LibFpAP  ));
6261    -- Pubilc Office Allowance
6262    WrtHrTrc('trc_PblOffYtd:     '||to_char(trc_PblOffYtd));
6263    WrtHrTrc('trc_PblOffPtd:     '||to_char(trc_PblOffPtd));
6264    WrtHrTrc('trc_PblOffErn:     '||to_char(trc_PblOffErn));
6265    WrtHrTrc('trc_TxbPblOffInc:  '||to_char(trc_TxbPblOffInc));
6266    WrtHrTrc('trc_TxbPblOffIncWoDon: '||to_char(trc_TxbPblOffIncWoDon));
6267    WrtHrTrc('trc_TotLibPO:      '||to_char(trc_TotLibPO));
6268    WrtHrTrc('trc_LibFyPO:       '||to_char(trc_LibFyPO  ));
6269    WrtHrTrc('trc_LibFpPO:       '||to_char(trc_LibFpPO  ));
6270 
6271    -- NTG
6272    WrtHrTrc('trc_AnnPymNtgYtd:          '||to_char(trc_AnnPymNtgYtd));
6273    WrtHrTrc('trc_AnnPymNtgPtd:          '||to_char(trc_AnnPymNtgPtd));
6274    WrtHrTrc('trc_AnnPymNtgErn:          '||to_char(trc_AnnPymNtgErn));
6275    WrtHrTrc('trc_TxbAnnPymNtgInc:       '||to_char(trc_TxbAnnPymNtgInc));
6276    WrtHrTrc('trc_TxbAnnPymNtgIncWoDon:  '||to_char(trc_TxbAnnPymNtgIncWoDon));
6277    WrtHrTrc('trc_TotLibNtgAP:           '||to_char(trc_TotLibNtgAP ));
6278    WrtHrTrc('trc_LibFyNtgAP:            '||to_char(trc_LibFyNtgAP  ));
6279    WrtHrTrc('trc_LibFpNtgAP:            '||to_char(trc_LibFpNtgAP  ));
6280 
6281    WrtHrTrc('trc_AnnEEDbtNTGYtd:        '||to_char(trc_AnnEEDbtNTGYtd));
6282    WrtHrTrc('trc_AnnEEDbtNtgPtd:        '||to_char(trc_AnnEEDbtNtgPtd));
6283    WrtHrTrc('trc_AnnEEDbtNtgErn:        '||to_char(trc_AnnEEDbtNtgErn));
6284    WrtHrTrc('trc_TxbAnnEEDbtNtgInc:     '||to_char(trc_TxbAnnEEDbtNtgInc));
6285    WrtHrTrc('trc_TxbAnnEEDbtNtgIncWoDon:'||to_char(trc_TxbAnnEEDbtNtgIncWoDon));
6286    WrtHrTrc('trc_TotLibNtgEEDbt:        '||to_char(trc_TotLibNtgEEDbt ));
6287    WrtHrTrc('trc_LibFyNtgEEDbt:         '||to_char(trc_LibFyNtgEEDbt  ));
6288    WrtHrTrc('trc_LibFpNtgEEDbt:         '||to_char(trc_LibFpNtgEEDbt  ));
6289 
6290 EXCEPTION
6291    WHEN OTHERS THEN
6292       IF xpt_Msg = 'No Error' THEN
6293          xpt_Msg := 'NorCalc: '||TO_CHAR(SQLCODE);
6294       END IF;
6295       RAISE xpt_E;
6296 
6297 END NorCalc;
6298 -------------------------------------------------------------------------------
6299 -- ZaTxGlb_01032012                                                          --
6300 -- Tax module supporting function                                            --
6301 -------------------------------------------------------------------------------
6302 FUNCTION ZaTxGlb_01032012(
6303 -- Global Values
6304     p_ZA_ADL_TX_RBT         IN NUMBER
6305    ,p_ZA_ARR_PF_AN_MX_ABT   IN NUMBER
6306    ,p_ZA_ARR_RA_AN_MX_ABT   IN NUMBER
6307    ,p_ZA_TRV_ALL_TX_PRC     IN NUMBER
6308    ,p_ZA_CC_TX_PRC          IN NUMBER
6309    ,p_ZA_PF_AN_MX_ABT       IN NUMBER
6310    ,p_ZA_PF_MX_PRC          IN NUMBER
6311    ,p_ZA_PER_SERV_COMP_PERC IN NUMBER
6312    ,p_ZA_PER_SERV_TRST_PERC IN NUMBER
6313    ,p_ZA_PRI_TX_RBT         IN NUMBER
6314    ,p_ZA_PRI_TX_THRSHLD     IN NUMBER
6315    ,p_ZA_PBL_TX_PRC         IN NUMBER
6316    ,p_ZA_PBL_TX_RTE         IN NUMBER
6317    ,p_ZA_RA_AN_MX_ABT       IN NUMBER
6318    ,p_ZA_RA_MX_PRC          IN NUMBER
6319    ,p_ZA_SC_TX_THRSHLD      IN NUMBER
6320    ,p_ZA_SIT_LIM            IN NUMBER
6321    ,p_ZA_TMP_TX_RTE         IN NUMBER
6322    ,p_ZA_WRK_DYS_PR_YR      IN NUMBER
6323    ,p_ZA_ALLOW_DONATION_PERC IN NUMBER  /*TYS2010*/
6324    --Bug 8844712
6325    ,p_ZA_LATE_PAYMENT_PERC  IN NUMBER
6326    ,p_ZA_TRI_TX_RBT         IN NUMBER
6327    ,p_ZA_TRI_TX_THRSHLD     IN NUMBER
6328    ) RETURN NUMBER
6329 AS
6330    l_Dum NUMBER := 1;
6331    --id VARCHAR2(30);
6332 
6333 BEGIN
6334 
6335    --id := dbms_debug.initialize('JLTX');
6336    --dbms_debug.debug_on;
6337 
6338 -- Initialise Package Globals
6339 -- Global Values
6340    glb_ZA_ADL_TX_RBT         := p_ZA_ADL_TX_RBT;
6341    glb_ZA_ARR_PF_AN_MX_ABT   := p_ZA_ARR_PF_AN_MX_ABT;
6342    glb_ZA_ARR_RA_AN_MX_ABT   := p_ZA_ARR_RA_AN_MX_ABT;
6343    glb_ZA_TRV_ALL_TX_PRC     := p_ZA_TRV_ALL_TX_PRC;
6344    glb_ZA_CC_TX_PRC          := p_ZA_CC_TX_PRC;
6345    glb_ZA_PF_AN_MX_ABT       := p_ZA_PF_AN_MX_ABT;
6346    glb_ZA_PF_MX_PRC          := p_ZA_PF_MX_PRC;
6347    glb_ZA_PER_SERV_COMP_PERC := p_ZA_PER_SERV_COMP_PERC;
6348    glb_ZA_PER_SERV_TRST_PERC := p_ZA_PER_SERV_TRST_PERC;
6349    glb_ZA_PRI_TX_RBT         := p_ZA_PRI_TX_RBT;
6350    glb_ZA_PRI_TX_THRSHLD     := p_ZA_PRI_TX_THRSHLD;
6351    glb_ZA_PBL_TX_PRC         := p_ZA_PBL_TX_PRC;
6352    glb_ZA_PBL_TX_RTE         := p_ZA_PBL_TX_RTE;
6353    glb_ZA_RA_AN_MX_ABT       := p_ZA_RA_AN_MX_ABT;
6354    glb_ZA_RA_MX_PRC          := p_ZA_RA_MX_PRC;
6355    glb_ZA_SC_TX_THRSHLD      := p_ZA_SC_TX_THRSHLD;
6356    glb_ZA_SIT_LIM            := p_ZA_SIT_LIM;
6357    glb_ZA_TMP_TX_RTE         := p_ZA_TMP_TX_RTE;
6358    glb_ZA_WRK_DYS_PR_YR      := p_ZA_WRK_DYS_PR_YR;
6359    glb_ZA_ALLOW_DONATION_PERC:= p_ZA_ALLOW_DONATION_PERC;
6360    --Bug 8844712
6361    glb_ZA_LATE_PAYMENT_PERC  := p_ZA_LATE_PAYMENT_PERC;
6362    glb_ZA_TRI_TX_RBT         := p_ZA_TRI_TX_RBT;
6363    glb_ZA_TRI_TX_THRSHLD     := p_ZA_TRI_TX_THRSHLD;
6364 
6365    RETURN l_Dum;
6366 EXCEPTION
6367    WHEN OTHERS THEN
6368       hr_utility.set_message(801, 'ZaTxGlb_01032012: '||TO_CHAR(SQLCODE));
6369       hr_utility.raise_error;
6370 END ZaTxGlb_01032012;
6371 -------------------------------------------------------------------------------
6372 -- ZaTxDbi_01032012                                                          --
6373 -- Tax module supporting function                                            --
6374 -------------------------------------------------------------------------------
6375 FUNCTION ZaTxDbi_01032012(
6376 -- Database Items
6377    p_PAY_PROC_PRD_DTE_PD   IN DATE
6378   ,p_PER_AGE               IN NUMBER
6379   ,p_PER_DTE_OF_BRTH       IN DATE
6380   ,p_SES_DTE               IN DATE
6381   ,p_ZA_ACT_END_DTE        IN DATE
6382   ,p_ZA_ACT_STRT_DTE       IN DATE
6383   ,p_ZA_ASG_TX_RTR_PRD     IN VARCHAR2
6384   ,p_ZA_ASG_TAX_RTR_RSLTS  IN VARCHAR2
6385 /* --Bug 9397464
6386   ,p_ZA_ASG_TX_YR          IN NUMBER
6387   ,p_ZA_ASG_TX_YR_END      IN DATE
6388   ,p_ZA_ASG_TX_YR_STRT     IN DATE */
6389   ,p_ZA_CUR_PRD_END_DTE    IN DATE
6390   ,p_ZA_CUR_PRD_STRT_DTE   IN DATE
6391   ,p_ZA_DYS_IN_YR          IN NUMBER
6392   ,p_ZA_PAY_PRDS_LFT       IN NUMBER
6393   ,p_ZA_PAY_PRDS_PER_YR    IN NUMBER
6394   ,p_ZA_TX_YR_END          IN DATE
6395   ,p_ZA_TX_YR_STRT         IN DATE
6396   ,p_BP_TX_RCV             IN VARCHAR2
6397   ,p_SEA_WRK_DYS_WRK       IN NUMBER
6398   ,p_TX_DIR_NUM            IN VARCHAR2
6399   ,p_TX_DIR_VAL            IN NUMBER
6400   ,p_TX_STA                IN VARCHAR2
6401   ,p_ZA_LS_DIR_NUM         IN VARCHAR2
6402   ,p_ZA_LS_DIR_VAL         IN NUMBER
6403   ,p_ZA_RET_LS_DIR_NUM     IN VARCHAR2
6404   ,p_ZA_RET_LS_DIR_VAL     IN NUMBER
6405   ,p_TAX_METHOD            IN VARCHAR2
6406    ) RETURN NUMBER
6407 AS
6408    l_Dum NUMBER := 1;
6409 
6410 BEGIN
6411 
6412 -- Initialise Package Globals
6413 -- Database Items
6414    dbi_PAY_PROC_PRD_DTE_PD  := p_PAY_PROC_PRD_DTE_PD;
6415    dbi_PER_AGE              := p_PER_AGE;
6416    dbi_PER_DTE_OF_BRTH      := p_PER_DTE_OF_BRTH;
6417    dbi_SES_DTE              := p_SES_DTE;
6418    dbi_ZA_ACT_END_DTE       := p_ZA_ACT_END_DTE;
6419    dbi_ZA_ACT_STRT_DTE      := p_ZA_ACT_STRT_DTE;
6420    dbi_ZA_ASG_TX_RTR_PRD    := p_ZA_ASG_TX_RTR_PRD;
6421    dbi_ZA_ASG_TAX_RTR_RSLTS := p_ZA_ASG_TAX_RTR_RSLTS;
6422    /*
6423    dbi_ZA_ASG_TX_YR         := p_ZA_ASG_TX_YR;
6424    dbi_ZA_ASG_TX_YR_END     := p_ZA_ASG_TX_YR_END;
6425    dbi_ZA_ASG_TX_YR_STRT    := p_ZA_ASG_TX_YR_STRT; */
6426    dbi_ZA_CUR_PRD_END_DTE   := p_ZA_CUR_PRD_END_DTE;
6427    dbi_ZA_CUR_PRD_STRT_DTE  := p_ZA_CUR_PRD_STRT_DTE;
6428    dbi_ZA_DYS_IN_YR         := p_ZA_DYS_IN_YR;
6429    dbi_ZA_PAY_PRDS_LFT      := p_ZA_PAY_PRDS_LFT;
6430    dbi_ZA_PAY_PRDS_PER_YR   := p_ZA_PAY_PRDS_PER_YR;
6431    dbi_ZA_TX_YR_END         := p_ZA_TX_YR_END;
6432    dbi_ZA_TX_YR_STRT        := p_ZA_TX_YR_STRT;
6433    dbi_BP_TX_RCV            := p_BP_TX_RCV;
6434    dbi_SEA_WRK_DYS_WRK      := p_SEA_WRK_DYS_WRK;
6435    dbi_TX_DIR_NUM           := p_TX_DIR_NUM;
6436    dbi_TX_DIR_VAL           := p_TX_DIR_VAL;
6437    dbi_TX_STA               := p_TX_STA;
6438    dbi_ZA_LS_DIR_NUM        := p_ZA_LS_DIR_NUM;
6439    dbi_ZA_LS_DIR_VAL        := p_ZA_LS_DIR_VAL;
6440    dbi_ZA_RET_LS_DIR_NUM    := p_ZA_RET_LS_DIR_NUM;
6441    dbi_ZA_RET_LS_DIR_VAL    := p_ZA_RET_LS_DIR_VAL;
6442    dbi_TX_MTD               := p_TAX_METHOD;
6443 
6444    RETURN l_Dum;
6445 EXCEPTION
6446    WHEN OTHERS THEN
6447       hr_utility.set_message(801, 'ZaTxDbi_01032012: '||TO_CHAR(SQLCODE));
6448       hr_utility.raise_error;
6449 END ZaTxDbi_01032012;
6450 -------------------------------------------------------------------------------
6451 -- ZaTxBal1_01032012                                                         --
6452 -- Tax module supporting function                                            --
6453 -------------------------------------------------------------------------------
6454 FUNCTION ZaTxBal1_01032012(
6455 -- Balances
6456     p_ANN_ARR_PF_CMTD           IN NUMBER
6457    ,p_ANN_ARR_PF_CYTD           IN NUMBER
6458    ,p_ANN_ARR_PF_RUN            IN NUMBER
6459    ,p_ANN_ARR_PF_PTD            IN NUMBER
6460    ,p_ANN_ARR_PF_YTD            IN NUMBER
6461    ,p_ANN_ARR_RA_CMTD           IN NUMBER
6462    ,p_ANN_ARR_RA_CYTD           IN NUMBER
6463    ,p_ANN_ARR_RA_RUN            IN NUMBER
6464    ,p_ANN_ARR_RA_PTD            IN NUMBER
6465    ,p_ANN_ARR_RA_YTD            IN NUMBER
6466    ,p_ANN_EE_INC_PRO_POL_CMTD   IN NUMBER
6467    ,p_ANN_EE_INC_PRO_POL_CYTD   IN NUMBER
6468    ,p_ANN_EE_INC_PRO_POL_RUN    IN NUMBER
6469    ,p_ANN_EE_INC_PRO_POL_PTD    IN NUMBER
6470    ,p_ANN_EE_INC_PRO_POL_YTD    IN NUMBER
6471    ,p_ANN_MED_CNTRB_ABM_CMTD    IN NUMBER
6472    ,p_ANN_MED_CNTRB_ABM_CYTD    IN NUMBER
6473    ,p_ANN_MED_CNTRB_ABM_RUN     IN NUMBER
6474    ,p_ANN_MED_CNTRB_ABM_PTD     IN NUMBER
6475    ,p_ANN_MED_CNTRB_ABM_YTD     IN NUMBER
6476    ,p_ANN_PF_CMTD               IN NUMBER
6477    ,p_ANN_PF_CYTD               IN NUMBER
6478    ,p_ANN_PF_RUN                IN NUMBER
6479    ,p_ANN_PF_PTD                IN NUMBER
6480    ,p_ANN_PF_YTD                IN NUMBER
6481    ,p_ANN_RA_CMTD               IN NUMBER
6482    ,p_ANN_RA_CYTD               IN NUMBER
6483    ,p_ANN_RA_RUN                IN NUMBER
6484    ,p_ANN_RA_PTD                IN NUMBER
6485    ,p_ANN_RA_YTD                IN NUMBER
6486    /*TYS2010*/
6487    ,p_ANN_DONAT_MD_EE_CMTD      IN NUMBER
6488    ,p_ANN_DONAT_MD_EE_CYTD      IN NUMBER
6489    ,p_ANN_DONAT_MD_EE_RUN       IN NUMBER
6490    ,p_ANN_DONAT_MD_EE_PTD       IN NUMBER
6491    ,p_ANN_DONAT_MD_EE_YTD       IN NUMBER
6492    ) RETURN NUMBER
6493 AS
6494    l_Dum NUMBER := 1;
6495 
6496 BEGIN
6497 -- Balances
6498    bal_ANN_ARR_PF_CMTD         := p_ANN_ARR_PF_CMTD;
6499    bal_ANN_ARR_PF_CYTD         := p_ANN_ARR_PF_CYTD;
6500    bal_ANN_ARR_PF_RUN          := p_ANN_ARR_PF_RUN;
6501    bal_ANN_ARR_PF_PTD          := p_ANN_ARR_PF_PTD;
6502    bal_ANN_ARR_PF_YTD          := p_ANN_ARR_PF_YTD;
6503    bal_ANN_ARR_RA_CMTD         := p_ANN_ARR_RA_CMTD;
6504    bal_ANN_ARR_RA_CYTD         := p_ANN_ARR_RA_CYTD;
6505    bal_ANN_ARR_RA_RUN          := p_ANN_ARR_RA_RUN;
6506    bal_ANN_ARR_RA_PTD          := p_ANN_ARR_RA_PTD;
6507    bal_ANN_ARR_RA_YTD          := p_ANN_ARR_RA_YTD;
6508    bal_ANN_EE_INC_PRO_POL_CMTD := p_ANN_EE_INC_PRO_POL_CMTD;
6509    bal_ANN_EE_INC_PRO_POL_CYTD := p_ANN_EE_INC_PRO_POL_CYTD;
6510    bal_ANN_EE_INC_PRO_POL_RUN  := p_ANN_EE_INC_PRO_POL_RUN;
6511    bal_ANN_EE_INC_PRO_POL_PTD  := p_ANN_EE_INC_PRO_POL_PTD;
6512    bal_ANN_EE_INC_PRO_POL_YTD  := p_ANN_EE_INC_PRO_POL_YTD;
6513    bal_ANN_MED_CNTRB_ABM_CMTD  := p_ANN_MED_CNTRB_ABM_CMTD;
6514    bal_ANN_MED_CNTRB_ABM_CYTD  := p_ANN_MED_CNTRB_ABM_CYTD;
6515    bal_ANN_MED_CNTRB_ABM_RUN   := p_ANN_MED_CNTRB_ABM_RUN;
6516    bal_ANN_MED_CNTRB_ABM_PTD   := p_ANN_MED_CNTRB_ABM_PTD;
6517    bal_ANN_MED_CNTRB_ABM_YTD   := p_ANN_MED_CNTRB_ABM_YTD;
6518    bal_ANN_PF_CMTD             := p_ANN_PF_CMTD;
6519    bal_ANN_PF_CYTD             := p_ANN_PF_CYTD;
6520    bal_ANN_PF_RUN              := p_ANN_PF_RUN;
6521    bal_ANN_PF_PTD              := p_ANN_PF_PTD;
6522    bal_ANN_PF_YTD              := p_ANN_PF_YTD;
6523    bal_ANN_RA_CMTD             := p_ANN_RA_CMTD;
6524    bal_ANN_RA_CYTD             := p_ANN_RA_CYTD;
6525    bal_ANN_RA_RUN              := p_ANN_RA_RUN;
6526    bal_ANN_RA_PTD              := p_ANN_RA_PTD;
6527    bal_ANN_RA_YTD              := p_ANN_RA_YTD;
6528    /*TYS2010 */
6529    bal_ANN_DONAT_MD_EE_CMTD    := p_ANN_DONAT_MD_EE_CMTD;
6530    bal_ANN_DONAT_MD_EE_CYTD    := p_ANN_DONAT_MD_EE_CYTD;
6531    bal_ANN_DONAT_MD_EE_RUN     := p_ANN_DONAT_MD_EE_RUN;
6532    bal_ANN_DONAT_MD_EE_PTD     := p_ANN_DONAT_MD_EE_PTD;
6533    bal_ANN_DONAT_MD_EE_YTD     := p_ANN_DONAT_MD_EE_YTD;
6534 
6535    RETURN l_Dum;
6536 EXCEPTION
6537    WHEN OTHERS THEN
6538       hr_utility.set_message(801, 'ZaTxBal1_01032012: '||TO_CHAR(SQLCODE));
6539       hr_utility.raise_error;
6540 END ZaTxBal1_01032012;
6541 -------------------------------------------------------------------------------
6542 -- ZaTxBal2_01032012                                                         --
6543 -- Tax module supporting function                                            --
6544 -------------------------------------------------------------------------------
6545 FUNCTION ZaTxBal2_01032012(
6546 -- Balances
6547     p_ARR_PF_CMTD                IN NUMBER
6548    ,p_ARR_PF_CYTD                IN NUMBER
6549    ,p_ARR_PF_PTD                 IN NUMBER
6550    ,p_ARR_PF_YTD                 IN NUMBER
6551    ,p_ARR_RA_CMTD                IN NUMBER
6552    ,p_ARR_RA_CYTD                IN NUMBER
6553    ,p_ARR_RA_PTD                 IN NUMBER
6554    ,p_ARR_RA_YTD                 IN NUMBER
6555    ,p_BP_CMTD                    IN NUMBER
6556    ,p_BP_RUN                     IN NUMBER
6557    ,p_BP_PTD                     IN NUMBER
6558    ,p_BP_YTD                     IN NUMBER
6559    ,p_CUR_PF_CMTD                IN NUMBER
6560    ,p_CUR_PF_CYTD                IN NUMBER
6561    ,p_CUR_PF_RUN                 IN NUMBER
6562    ,p_CUR_PF_PTD                 IN NUMBER
6563    ,p_CUR_PF_YTD                 IN NUMBER
6564    ,p_CUR_RA_CMTD                IN NUMBER
6565    ,p_CUR_RA_CYTD                IN NUMBER
6566    ,p_CUR_RA_RUN                 IN NUMBER
6567    ,p_CUR_RA_PTD                 IN NUMBER
6568    ,p_CUR_RA_YTD                 IN NUMBER
6569    ,p_DIR_DMD_RMN_ITD            IN NUMBER
6570    /*TYS2010*/
6571    ,p_DONAT_MD_EE_CMTD           IN NUMBER
6572    ,p_DONAT_MD_EE_CYTD           IN NUMBER
6573    ,p_DONAT_MD_EE_RUN            IN NUMBER
6574    ,p_DONAT_MD_EE_PTD            IN NUMBER
6575    ,p_DONAT_MD_EE_YTD            IN NUMBER
6576 -- Bug 14168167
6577    ,p_MED_AID_EMP_NRFI_ASG_RUN      IN NUMBER
6578    ,p_MED_AID_EMP_NRFI_ASG_TAX_PTD  IN NUMBER
6579    ,p_MED_AID_EMP_NRFI_ASG_TAX_YTD  IN NUMBER
6580    ,p_MED_AID_EMP_PKG_ASG_RUN       IN NUMBER
6581    ,p_MED_AID_EMP_PKG_ASG_TAX_PTD   IN NUMBER
6582    ,p_MED_AID_EMP_PKG_ASG_TAX_YTD   IN NUMBER
6583    ,p_MED_AID_EMP_RFI_ASG_RUN       IN NUMBER
6584    ,p_MED_AID_EMP_RFI_ASG_TAX_PTD   IN NUMBER
6585    ,p_MED_AID_EMP_RFI_ASG_TAX_YTD   IN NUMBER
6586 -- Bug 14168167
6587    ) RETURN NUMBER
6588 AS
6589    l_Dum NUMBER := 1;
6590 
6591 BEGIN
6592 -- Balances
6593    bal_ARR_PF_CMTD     := p_ARR_PF_CMTD;
6594    bal_ARR_PF_CYTD     := p_ARR_PF_CYTD;
6595    bal_ARR_PF_PTD      := p_ARR_PF_PTD;
6596    bal_ARR_PF_YTD      := p_ARR_PF_YTD;
6597    bal_ARR_RA_CMTD     := p_ARR_RA_CMTD;
6598    bal_ARR_RA_CYTD     := p_ARR_RA_CYTD;
6599    bal_ARR_RA_PTD      := p_ARR_RA_PTD;
6600    bal_ARR_RA_YTD      := p_ARR_RA_YTD;
6601    bal_BP_CMTD         := p_BP_CMTD;
6602    bal_BP_RUN          := p_BP_RUN;
6603    bal_BP_PTD          := p_BP_PTD;
6604    bal_BP_YTD          := p_BP_YTD;
6605    bal_CUR_PF_CMTD     := p_CUR_PF_CMTD;
6606    bal_CUR_PF_CYTD     := p_CUR_PF_CYTD;
6607    bal_CUR_PF_RUN      := p_CUR_PF_RUN;
6608    bal_CUR_PF_PTD      := p_CUR_PF_PTD;
6609    bal_CUR_PF_YTD      := p_CUR_PF_YTD;
6610    bal_CUR_RA_CMTD     := p_CUR_RA_CMTD;
6611    bal_CUR_RA_CYTD     := p_CUR_RA_CYTD;
6612    bal_CUR_RA_RUN      := p_CUR_RA_RUN;
6613    bal_CUR_RA_PTD      := p_CUR_RA_PTD;
6614    bal_CUR_RA_YTD      := p_CUR_RA_YTD;
6615    bal_DIR_DMD_RMN_ITD := p_DIR_DMD_RMN_ITD;
6616    /*TYS2010*/
6617    bal_DONAT_MD_EE_CMTD:= p_DONAT_MD_EE_CMTD;
6618    bal_DONAT_MD_EE_CYTD:= p_DONAT_MD_EE_CYTD;
6619    bal_DONAT_MD_EE_RUN := p_DONAT_MD_EE_RUN;
6620    bal_DONAT_MD_EE_PTD := p_DONAT_MD_EE_PTD;
6621    bal_DONAT_MD_EE_YTD := p_DONAT_MD_EE_YTD;
6622 -- Bug 14168167
6623    bal_MED_EMP_NRFI_ASG_RUN     :=   p_MED_AID_EMP_NRFI_ASG_RUN;
6624    bal_MED_EMP_NRFI_ASG_TAX_PTD :=   p_MED_AID_EMP_NRFI_ASG_TAX_PTD;
6625    bal_MED_EMP_NRFI_ASG_TAX_YTD :=   p_MED_AID_EMP_NRFI_ASG_TAX_YTD;
6626    bal_MED_EMP_PKG_ASG_RUN      :=   p_MED_AID_EMP_PKG_ASG_RUN;
6627    bal_MED_EMP_PKG_ASG_TAX_PTD  :=   p_MED_AID_EMP_PKG_ASG_TAX_PTD;
6628    bal_MED_EMP_PKG_ASG_TAX_YTD  :=   p_MED_AID_EMP_PKG_ASG_TAX_YTD;
6629    bal_MED_EMP_RFI_ASG_RUN      :=   p_MED_AID_EMP_RFI_ASG_RUN;
6630    bal_MED_EMP_RFI_ASG_TAX_PTD  :=   p_MED_AID_EMP_RFI_ASG_TAX_PTD;
6631    bal_MED_EMP_RFI_ASG_TAX_YTD  :=   p_MED_AID_EMP_RFI_ASG_TAX_YTD;
6632 -- Bug 14168167
6633    RETURN l_Dum;
6634 EXCEPTION
6635    WHEN OTHERS THEN
6636       hr_utility.set_message(801, 'ZaTxBal2_01032012: '||TO_CHAR(SQLCODE));
6637       hr_utility.raise_error;
6638 END ZaTxBal2_01032012;
6639 -------------------------------------------------------------------------------
6640 -- ZaTxBal3_01032012                                                         --
6641 -- Tax module supporting function                                            --
6642 -------------------------------------------------------------------------------
6643 FUNCTION ZaTxBal3_01032012(
6644 -- Balances
6645     p_EE_INC_PRO_POL_CMTD        IN NUMBER
6646    ,p_EE_INC_PRO_POL_CYTD        IN NUMBER
6647    ,p_EE_INC_PRO_POL_RUN         IN NUMBER
6648    ,p_EE_INC_PRO_POL_PTD         IN NUMBER
6649    ,p_EE_INC_PRO_POL_YTD         IN NUMBER
6650    ,p_EXC_ARR_PEN_ITD            IN NUMBER
6651    ,p_EXC_ARR_PEN_PTD            IN NUMBER
6652    ,p_EXC_ARR_PEN_YTD            IN NUMBER
6653    ,p_EXC_ARR_RA_ITD             IN NUMBER
6654    ,p_EXC_ARR_RA_PTD             IN NUMBER
6655    ,p_EXC_ARR_RA_YTD             IN NUMBER
6656    ,p_MED_CONTR_CMTD             IN NUMBER
6657    ,p_MED_CONTR_CYTD             IN NUMBER
6658    ,p_MED_CONTR_RUN              IN NUMBER
6659    ,p_MED_CONTR_PTD              IN NUMBER
6660    ,p_MED_CONTR_YTD              IN NUMBER
6661    ,p_MED_CNTRB_ABM_CMTD         IN NUMBER
6662    ,p_MED_CNTRB_ABM_CYTD         IN NUMBER
6663    ,p_MED_CNTRB_ABM_RUN          IN NUMBER
6664    ,p_MED_CNTRB_ABM_PTD          IN NUMBER
6665    ,p_MED_CNTRB_ABM_YTD          IN NUMBER
6666    ,p_NET_PAY_RUN                IN NUMBER
6667    ,p_NET_TXB_INC_CMTD           IN NUMBER
6668    --EMP201
6669    ,p_NET_PAYE_TXB_INC_CMTD      IN NUMBER
6670    ,p_MED_AID_TAX_CR_CMTD        IN NUMBER
6671    ,p_MED_AID_TAX_CR_CYTD        IN NUMBER
6672    ,p_MED_AID_TAX_CR_RUN         IN NUMBER
6673    ,p_MED_AID_TAX_CR_PTD         IN NUMBER
6674    ,p_MED_AID_TAX_CR_YTD         IN NUMBER
6675    ,p_ANN_MED_AID_TAX_CR_CMTD    IN NUMBER
6676    ,p_ANN_MED_AID_TAX_CR_CYTD    IN NUMBER
6677    ,p_ANN_MED_AID_TAX_CR_RUN     IN NUMBER
6678    ,p_ANN_MED_AID_TAX_CR_PTD     IN NUMBER
6679    ,p_ANN_MED_AID_TAX_CR_YTD     IN NUMBER
6680    ,p_MED_AID_TAX_CR_USED_CMTD   IN NUMBER
6681    ,p_MED_AID_TAX_CR_USED_CYTD   IN NUMBER
6682    ,p_MED_AID_TAX_CR_USED_RUN    IN NUMBER
6683    ,p_MED_AID_TAX_CR_USED_PTD    IN NUMBER
6684    ,p_MED_AID_TAX_CR_USED_YTD    IN NUMBER
6685    ,p_MED_AID_TAX_CR_USED_NI_CMTD   IN NUMBER
6686    ,p_MED_AID_TAX_CR_USED_NI_CYTD   IN NUMBER
6687    ,p_MED_AID_TAX_CR_USED_NI_RUN    IN NUMBER
6688    ,p_MED_AID_TAX_CR_USED_NI_PTD    IN NUMBER
6689    ,p_MED_AID_TAX_CR_USED_NI_YTD    IN NUMBER
6690    ,p_MED_AID_TAX_CR_USED_FB_CMTD   IN NUMBER
6691    ,p_MED_AID_TAX_CR_USED_FB_CYTD   IN NUMBER
6692    ,p_MED_AID_TAX_CR_USED_FB_RUN    IN NUMBER
6693    ,p_MED_AID_TAX_CR_USED_FB_PTD    IN NUMBER
6694    ,p_MED_AID_TAX_CR_USED_FB_YTD    IN NUMBER
6695    ,p_MED_AID_TAX_CR_USED_TA_CMTD   IN NUMBER
6696    ,p_MED_AID_TAX_CR_USED_TA_CYTD   IN NUMBER
6697    ,p_MED_AID_TAX_CR_USED_TA_RUN    IN NUMBER
6698    ,p_MED_AID_TAX_CR_USED_TA_PTD    IN NUMBER
6699    ,p_MED_AID_TAX_CR_USED_TA_YTD    IN NUMBER
6700    ,p_MED_AID_TAX_CR_USED_BP_CMTD   IN NUMBER
6701    ,p_MED_AID_TAX_CR_USED_BP_CYTD   IN NUMBER
6702    ,p_MED_AID_TAX_CR_USED_BP_RUN    IN NUMBER
6703    ,p_MED_AID_TAX_CR_USED_BP_PTD    IN NUMBER
6704    ,p_MED_AID_TAX_CR_USED_BP_YTD    IN NUMBER
6705    ,p_MED_AID_TAX_CR_USED_AB_CMTD   IN NUMBER
6706    ,p_MED_AID_TAX_CR_USED_AB_CYTD   IN NUMBER
6707    ,p_MED_AID_TAX_CR_USED_AB_RUN    IN NUMBER
6708    ,p_MED_AID_TAX_CR_USED_AB_PTD    IN NUMBER
6709    ,p_MED_AID_TAX_CR_USED_AB_YTD    IN NUMBER
6710    ,p_MED_AID_TAX_CR_USED_AP_CMTD   IN NUMBER
6711    ,p_MED_AID_TAX_CR_USED_AP_CYTD   IN NUMBER
6712    ,p_MED_AID_TAX_CR_USED_AP_RUN    IN NUMBER
6713    ,p_MED_AID_TAX_CR_USED_AP_PTD    IN NUMBER
6714    ,p_MED_AID_TAX_CR_USED_AP_YTD    IN NUMBER
6715    ,p_MED_AID_TAX_CR_USED_PO_CMTD   IN NUMBER
6716    ,p_MED_AID_TAX_CR_USED_PO_CYTD   IN NUMBER
6717    ,p_MED_AID_TAX_CR_USED_PO_RUN    IN NUMBER
6718    ,p_MED_AID_TAX_CR_USED_PO_PTD    IN NUMBER
6719    ,p_MED_AID_TAX_CR_USED_PO_YTD    IN NUMBER
6720 --  Bug  13777759
6721    ,p_MED_AID_TAX_CR_USED_NG_CMTD   IN NUMBER
6722    ,p_MED_AID_TAX_CR_USED_NG_CYTD   IN NUMBER
6723    ,p_MED_AID_TAX_CR_USED_NG_RUN    IN NUMBER
6724    ,p_MED_AID_TAX_CR_USED_NG_PTD    IN NUMBER
6725    ,p_MED_AID_TAX_CR_USED_NG_YTD    IN NUMBER
6726    ,p_MED_AID_TAX_CR_USED_EE_CMTD   IN NUMBER
6727    ,p_MED_AID_TAX_CR_USED_EE_CYTD   IN NUMBER
6728    ,p_MED_AID_TAX_CR_USED_EE_RUN    IN NUMBER
6729    ,p_MED_AID_TAX_CR_USED_EE_PTD    IN NUMBER
6730    ,p_MED_AID_TAX_CR_USED_EE_YTD    IN NUMBER
6731 --  Bug  13777759
6732 
6733    ,p_ER_MED_CONTR_CMTD   IN NUMBER
6734    ,p_ER_MED_CONTR_CYTD   IN NUMBER
6735    ,p_ER_MED_CONTR_RUN    IN NUMBER
6736    ,p_ER_MED_CONTR_PTD    IN NUMBER
6737    ,p_ER_MED_CONTR_YTD    IN NUMBER
6738 -- Bug  14024624
6739    ,p_MED_AID_TAX_CR_USED_DR_CMTD   IN NUMBER
6740    ,p_MED_AID_TAX_CR_USED_DR_CYTD   IN NUMBER
6741    ,p_MED_AID_TAX_CR_USED_DR_RUN    IN NUMBER
6742    ,p_MED_AID_TAX_CR_USED_DR_PTD    IN NUMBER
6743    ,p_MED_AID_TAX_CR_USED_DR_YTD    IN NUMBER
6744 -- Bug  14024624
6745    ,p_MED_AID_TAX_CR_USED_LS_PTD    IN NUMBER
6746    ,p_MED_AID_TAX_CR_USED_LS_YTD    IN NUMBER
6747    ) RETURN NUMBER
6748 AS
6749    l_Dum NUMBER := 1;
6750 
6751 BEGIN
6752 -- Balances
6753    bal_EE_INC_PRO_POL_CMTD := p_EE_INC_PRO_POL_CMTD;
6754    bal_EE_INC_PRO_POL_CYTD := p_EE_INC_PRO_POL_CYTD;
6755    bal_EE_INC_PRO_POL_RUN  := p_EE_INC_PRO_POL_RUN;
6756    bal_EE_INC_PRO_POL_PTD  := p_EE_INC_PRO_POL_PTD;
6757    bal_EE_INC_PRO_POL_YTD  := p_EE_INC_PRO_POL_YTD;
6758    bal_EXC_ARR_PEN_ITD     := p_EXC_ARR_PEN_ITD;
6759    bal_EXC_ARR_PEN_PTD     := p_EXC_ARR_PEN_PTD;
6760    bal_EXC_ARR_PEN_YTD     := p_EXC_ARR_PEN_YTD;
6761    bal_EXC_ARR_RA_ITD      := p_EXC_ARR_RA_ITD;
6762    bal_EXC_ARR_RA_PTD      := p_EXC_ARR_RA_PTD;
6763    bal_EXC_ARR_RA_YTD      := p_EXC_ARR_RA_YTD;
6764    bal_MED_CONTR_CMTD      := p_MED_CONTR_CMTD;
6765    bal_MED_CONTR_CYTD      := p_MED_CONTR_CYTD;
6766    bal_MED_CONTR_RUN       := p_MED_CONTR_RUN;
6767    bal_MED_CONTR_PTD       := p_MED_CONTR_PTD;
6768    bal_MED_CONTR_YTD       := p_MED_CONTR_YTD;
6769    bal_MED_CNTRB_ABM_CMTD  := p_MED_CNTRB_ABM_CMTD;
6770    bal_MED_CNTRB_ABM_CYTD  := p_MED_CNTRB_ABM_CYTD;
6771    bal_MED_CNTRB_ABM_RUN   := p_MED_CNTRB_ABM_RUN;
6772    bal_MED_CNTRB_ABM_PTD   := p_MED_CNTRB_ABM_PTD;
6773    bal_MED_CNTRB_ABM_YTD   := p_MED_CNTRB_ABM_YTD;
6774    bal_NET_PAY_RUN         := p_NET_PAY_RUN;
6775    bal_NET_TXB_INC_CMTD    := p_NET_TXB_INC_CMTD;
6776    bal_NET_PAYE_TXB_INC_CMTD   := p_NET_PAYE_TXB_INC_CMTD;
6777 
6778    bal_MED_AID_TAX_CR_CMTD      := p_MED_AID_TAX_CR_CMTD;
6779    bal_MED_AID_TAX_CR_CYTD      := p_MED_AID_TAX_CR_CYTD;
6780    bal_MED_AID_TAX_CR_RUN      := p_MED_AID_TAX_CR_RUN;
6781    bal_MED_AID_TAX_CR_PTD      := p_MED_AID_TAX_CR_PTD;
6782    bal_MED_AID_TAX_CR_YTD      := p_MED_AID_TAX_CR_YTD;
6783    bal_ANN_MED_AID_TAX_CR_CMTD  := p_ANN_MED_AID_TAX_CR_CMTD;
6784    bal_ANN_MED_AID_TAX_CR_CYTD  := p_ANN_MED_AID_TAX_CR_CYTD;
6785    bal_ANN_MED_AID_TAX_CR_RUN  := p_ANN_MED_AID_TAX_CR_RUN;
6786    bal_ANN_MED_AID_TAX_CR_PTD  := p_ANN_MED_AID_TAX_CR_PTD;
6787    bal_ANN_MED_AID_TAX_CR_YTD  := p_ANN_MED_AID_TAX_CR_YTD;
6788    bal_MED_AID_TAX_CR_USED_CMTD := p_MED_AID_TAX_CR_USED_CMTD;
6789    bal_MED_AID_TAX_CR_USED_CYTD := p_MED_AID_TAX_CR_USED_CYTD;
6790    bal_MED_AID_TAX_CR_USED_RUN := p_MED_AID_TAX_CR_USED_RUN;
6791    bal_MED_AID_TAX_CR_USED_PTD := p_MED_AID_TAX_CR_USED_PTD;
6792    bal_MED_AID_TAX_CR_USED_YTD := p_MED_AID_TAX_CR_USED_YTD;
6793    bal_MED_TAX_CR_USED_NI_CMTD := p_MED_AID_TAX_CR_USED_NI_CMTD;
6794    bal_MED_TAX_CR_USED_NI_CYTD := p_MED_AID_TAX_CR_USED_NI_CYTD;
6795    bal_MED_TAX_CR_USED_NI_RUN  := p_MED_AID_TAX_CR_USED_NI_RUN;
6796    bal_MED_TAX_CR_USED_NI_PTD  := p_MED_AID_TAX_CR_USED_NI_PTD;
6797    bal_MED_TAX_CR_USED_NI_YTD  := p_MED_AID_TAX_CR_USED_NI_YTD;
6798    bal_MED_TAX_CR_USED_FB_CMTD := p_MED_AID_TAX_CR_USED_FB_CMTD;
6799    bal_MED_TAX_CR_USED_FB_CYTD := p_MED_AID_TAX_CR_USED_FB_CYTD;
6800    bal_MED_TAX_CR_USED_FB_RUN  := p_MED_AID_TAX_CR_USED_FB_RUN;
6801    bal_MED_TAX_CR_USED_FB_PTD  := p_MED_AID_TAX_CR_USED_FB_PTD;
6802    bal_MED_TAX_CR_USED_FB_YTD  := p_MED_AID_TAX_CR_USED_FB_YTD;
6803    bal_MED_TAX_CR_USED_TA_CMTD := p_MED_AID_TAX_CR_USED_TA_CMTD;
6804    bal_MED_TAX_CR_USED_TA_CYTD := p_MED_AID_TAX_CR_USED_TA_CYTD;
6805    bal_MED_TAX_CR_USED_TA_RUN  := p_MED_AID_TAX_CR_USED_TA_RUN;
6806    bal_MED_TAX_CR_USED_TA_PTD  := p_MED_AID_TAX_CR_USED_TA_PTD;
6807    bal_MED_TAX_CR_USED_TA_YTD  := p_MED_AID_TAX_CR_USED_TA_YTD;
6808    bal_MED_TAX_CR_USED_BP_CMTD := p_MED_AID_TAX_CR_USED_BP_CMTD;
6809    bal_MED_TAX_CR_USED_BP_CYTD := p_MED_AID_TAX_CR_USED_BP_CYTD;
6810    bal_MED_TAX_CR_USED_BP_RUN  := p_MED_AID_TAX_CR_USED_BP_RUN;
6811    bal_MED_TAX_CR_USED_BP_PTD  := p_MED_AID_TAX_CR_USED_BP_PTD;
6812    bal_MED_TAX_CR_USED_BP_YTD  := p_MED_AID_TAX_CR_USED_BP_YTD;
6813    bal_MED_TAX_CR_USED_AB_CMTD := p_MED_AID_TAX_CR_USED_AB_CMTD;
6814    bal_MED_TAX_CR_USED_AB_CYTD := p_MED_AID_TAX_CR_USED_AB_CYTD;
6815    bal_MED_TAX_CR_USED_AB_RUN  := p_MED_AID_TAX_CR_USED_AB_RUN;
6816    bal_MED_TAX_CR_USED_AB_PTD  := p_MED_AID_TAX_CR_USED_AB_PTD;
6817    bal_MED_TAX_CR_USED_AB_YTD  := p_MED_AID_TAX_CR_USED_AB_YTD;
6818    bal_MED_TAX_CR_USED_AP_CMTD := p_MED_AID_TAX_CR_USED_AP_CMTD;
6819    bal_MED_TAX_CR_USED_AP_CYTD := p_MED_AID_TAX_CR_USED_AP_CYTD;
6820    bal_MED_TAX_CR_USED_AP_RUN  := p_MED_AID_TAX_CR_USED_AP_RUN;
6821    bal_MED_TAX_CR_USED_AP_PTD  := p_MED_AID_TAX_CR_USED_AP_PTD;
6822    bal_MED_TAX_CR_USED_AP_YTD  := p_MED_AID_TAX_CR_USED_AP_YTD;
6823    bal_MED_TAX_CR_USED_PO_CMTD := p_MED_AID_TAX_CR_USED_PO_CMTD;
6824    bal_MED_TAX_CR_USED_PO_CYTD := p_MED_AID_TAX_CR_USED_PO_CYTD;
6825    bal_MED_TAX_CR_USED_PO_RUN  := p_MED_AID_TAX_CR_USED_PO_RUN;
6826    bal_MED_TAX_CR_USED_PO_PTD  := p_MED_AID_TAX_CR_USED_PO_PTD;
6827    bal_MED_TAX_CR_USED_PO_YTD  := p_MED_AID_TAX_CR_USED_PO_YTD;
6828 --  Bug  13777759
6829    bal_MED_TAX_CR_USED_NG_CMTD := p_MED_AID_TAX_CR_USED_NG_CMTD;
6830    bal_MED_TAX_CR_USED_NG_CYTD := p_MED_AID_TAX_CR_USED_NG_CYTD;
6831    bal_MED_TAX_CR_USED_NG_RUN  := p_MED_AID_TAX_CR_USED_NG_RUN;
6832    bal_MED_TAX_CR_USED_NG_PTD  := p_MED_AID_TAX_CR_USED_NG_PTD;
6833    bal_MED_TAX_CR_USED_NG_YTD  := p_MED_AID_TAX_CR_USED_NG_YTD;
6834    bal_MED_TAX_CR_USED_EE_CMTD := p_MED_AID_TAX_CR_USED_EE_CMTD;
6835    bal_MED_TAX_CR_USED_EE_CYTD := p_MED_AID_TAX_CR_USED_EE_CYTD;
6836    bal_MED_TAX_CR_USED_EE_RUN  := p_MED_AID_TAX_CR_USED_EE_RUN;
6837    bal_MED_TAX_CR_USED_EE_PTD  := p_MED_AID_TAX_CR_USED_EE_PTD;
6838    bal_MED_TAX_CR_USED_EE_YTD  := p_MED_AID_TAX_CR_USED_EE_YTD;
6839 --  Bug  13777759
6840 
6841    bal_ER_MED_CONTR_CMTD       := p_ER_MED_CONTR_CMTD;
6842    bal_ER_MED_CONTR_CYTD       := p_ER_MED_CONTR_CYTD;
6843    bal_ER_MED_CONTR_RUN        := p_ER_MED_CONTR_RUN;
6844    bal_ER_MED_CONTR_PTD        := p_ER_MED_CONTR_PTD;
6845    bal_ER_MED_CONTR_YTD        := p_ER_MED_CONTR_YTD;
6846 
6847 -- Bug  14024624
6848    bal_MED_TAX_CR_USED_DR_CMTD := p_MED_AID_TAX_CR_USED_DR_CMTD;
6849    bal_MED_TAX_CR_USED_DR_CYTD := p_MED_AID_TAX_CR_USED_DR_CYTD;
6850    bal_MED_TAX_CR_USED_DR_RUN  := p_MED_AID_TAX_CR_USED_DR_RUN;
6851    bal_MED_TAX_CR_USED_DR_PTD  := p_MED_AID_TAX_CR_USED_DR_PTD;
6852    bal_MED_TAX_CR_USED_DR_YTD  := p_MED_AID_TAX_CR_USED_DR_YTD;
6853 -- Bug  14024624
6854 
6855    bal_MED_AID_TAX_CR_USED_LS_PTD := p_MED_AID_TAX_CR_USED_LS_PTD;
6856    bal_MED_AID_TAX_CR_USED_LS_YTD := p_MED_AID_TAX_CR_USED_LS_YTD;
6857 
6858    RETURN l_Dum;
6859 EXCEPTION
6860    WHEN OTHERS THEN
6861       hr_utility.set_message(801, 'ZaTxBal3_01032012: '||TO_CHAR(SQLCODE));
6862       hr_utility.raise_error;
6863 END ZaTxBal3_01032012;
6864 -------------------------------------------------------------------------------
6865 -- ZaTxBal4_01032012                                                         --
6866 -- Tax module supporting function                                            --
6867 -------------------------------------------------------------------------------
6868 FUNCTION ZaTxBal4_01032012(
6869 -- Balances
6870     p_PAYE_YTD                   IN NUMBER
6871    ,p_SITE_YTD                   IN NUMBER
6872    ,p_TAX_YTD                    IN NUMBER
6873    ,p_TX_ON_AB_PTD               IN NUMBER
6874    ,p_TX_ON_AB_YTD               IN NUMBER
6875    ,p_TX_ON_AP_PTD               IN NUMBER
6876    ,p_TX_ON_AP_YTD               IN NUMBER
6877    ,p_TX_ON_BP_PTD               IN NUMBER
6878    ,p_TX_ON_BP_YTD               IN NUMBER
6879    ,p_TX_ON_TA_PTD               IN NUMBER
6880    ,p_TX_ON_TA_YTD               IN NUMBER
6881    ,p_TX_ON_DR_PTD               IN NUMBER
6882    ,p_TX_ON_DR_YTD               IN NUMBER
6883    ,p_TX_ON_FB_PTD               IN NUMBER
6884    ,p_TX_ON_FB_YTD               IN NUMBER
6885    ,p_TX_ON_NI_PTD               IN NUMBER
6886    ,p_TX_ON_NI_YTD               IN NUMBER
6887    ,p_TX_ON_PO_PTD               IN NUMBER
6888    ,p_TX_ON_PO_YTD               IN NUMBER
6889    ,p_TX_ON_LS_PTD               IN NUMBER
6890    ,p_TX_ON_RET_LS_PTD           IN NUMBER
6891    /* NTG */
6892    ,p_TX_ON_AP_NTG_PTD           IN NUMBER
6893    ,p_TX_ON_AP_NTG_YTD           IN NUMBER
6894    ,p_TX_ON_EE_DBT_NTG_PTD       IN NUMBER
6895    ,p_TX_ON_EE_DBT_NTG_YTD       IN NUMBER
6896    /* End NTG */
6897    ,p_TX_ON_LS_RUN               IN NUMBER
6898    ,p_TX_ON_LS_YTD               IN NUMBER
6899    ) RETURN NUMBER
6900 AS
6901    l_Dum NUMBER := 1;
6902 
6903 BEGIN
6904 -- Balances
6905    bal_PAYE_YTD     := p_PAYE_YTD;
6906    bal_SITE_YTD     := p_SITE_YTD;
6907    bal_TAX_YTD      := p_TAX_YTD;
6908    bal_TX_ON_AB_PTD := p_TX_ON_AB_PTD;
6909    bal_TX_ON_AB_YTD := p_TX_ON_AB_YTD;
6910    bal_TX_ON_AP_PTD := p_TX_ON_AP_PTD;
6911    bal_TX_ON_AP_YTD := p_TX_ON_AP_YTD;
6912    bal_TX_ON_BP_PTD := p_TX_ON_BP_PTD;
6913    bal_TX_ON_BP_YTD := p_TX_ON_BP_YTD;
6914    bal_TX_ON_TA_PTD := p_TX_ON_TA_PTD;
6915    bal_TX_ON_TA_YTD := p_TX_ON_TA_YTD;
6916    bal_TX_ON_DR_PTD := p_TX_ON_DR_PTD;
6917    bal_TX_ON_DR_YTD := p_TX_ON_DR_YTD;
6918    bal_TX_ON_FB_PTD := p_TX_ON_FB_PTD;
6919    bal_TX_ON_FB_YTD := p_TX_ON_FB_YTD;
6920    bal_TX_ON_NI_PTD := p_TX_ON_NI_PTD;
6921    bal_TX_ON_NI_YTD := p_TX_ON_NI_YTD;
6922    bal_TX_ON_PO_PTD := p_TX_ON_PO_PTD;
6923    bal_TX_ON_PO_YTD := p_TX_ON_PO_YTD;
6924    bal_TX_ON_LS_PTD := p_TX_ON_LS_PTD;
6925    bal_TX_ON_RET_LS_PTD := p_TX_ON_RET_LS_PTD;
6926    /* NTG */
6927    bal_TX_ON_AP_NTG_YTD     := p_TX_ON_AP_NTG_YTD;
6928    bal_TX_ON_AP_NTG_PTD     := p_TX_ON_AP_NTG_PTD;
6929    bal_TX_ON_EE_DBT_NTG_YTD := p_TX_ON_EE_DBT_NTG_YTD;
6930    bal_TX_ON_EE_DBT_NTG_PTD := p_TX_ON_EE_DBT_NTG_PTD;
6931 
6932    bal_TX_ON_LS_RUN := p_TX_ON_LS_RUN;
6933    bal_TX_ON_LS_YTD := p_TX_ON_LS_YTD;
6934 
6935    RETURN l_Dum;
6936 EXCEPTION
6937    WHEN OTHERS THEN
6938       hr_utility.set_message(801, 'ZaTxBal4_01032012: '||TO_CHAR(SQLCODE));
6939       hr_utility.raise_error;
6940 END ZaTxBal4_01032012;
6941 -------------------------------------------------------------------------------
6942 -- ZaTxBal5_01032012                                                         --
6943 -- Tax module supporting function                                            --
6944 -------------------------------------------------------------------------------
6945 FUNCTION ZaTxBal5_01032012(
6946 -- Balances
6947     p_TOT_INC_PTD                IN NUMBER
6948    ,p_TOT_INC_YTD                IN NUMBER
6949    ,p_TOT_NRFI_AN_INC_CMTD       IN NUMBER
6950    ,p_TOT_NRFI_AN_INC_CYTD       IN NUMBER
6951    ,p_TOT_NRFI_AN_INC_RUN        IN NUMBER
6952    ,p_TOT_NRFI_AN_INC_PTD        IN NUMBER
6953    ,p_TOT_NRFI_AN_INC_YTD        IN NUMBER
6954    ,p_TOT_NRFI_INC_CMTD          IN NUMBER
6955    ,p_TOT_NRFI_INC_CYTD          IN NUMBER
6956    ,p_TOT_NRFI_INC_RUN           IN NUMBER
6957    ,p_TOT_NRFI_INC_PTD           IN NUMBER
6958    ,p_TOT_NRFI_INC_YTD           IN NUMBER
6959    ,p_TOT_RFI_AN_INC_CMTD        IN NUMBER
6960    ,p_TOT_RFI_AN_INC_CYTD        IN NUMBER
6961    ,p_TOT_RFI_AN_INC_RUN         IN NUMBER
6962    ,p_TOT_RFI_AN_INC_PTD         IN NUMBER
6963    ,p_TOT_RFI_AN_INC_YTD         IN NUMBER
6964    ,p_TOT_RFI_INC_CMTD           IN NUMBER
6965    ,p_TOT_RFI_INC_CYTD           IN NUMBER
6966    ,p_TOT_RFI_INC_RUN            IN NUMBER
6967    ,p_TOT_RFI_INC_PTD            IN NUMBER
6968    ,p_TOT_RFI_INC_YTD            IN NUMBER
6969    ,p_TOT_SEA_WRK_DYS_WRK_YTD    IN NUMBER
6970    ,p_TOT_SKL_ANN_INC_CMTD       IN NUMBER
6971    ,p_TOT_SKL_INC_CMTD           IN NUMBER
6972    ,p_TOT_TXB_INC_ITD            IN NUMBER
6973     --EMP201
6974    ,p_GROSS_REMUNERATION_CMTD    IN NUMBER
6975    ,p_ANN_PAYMENTS_CMTD          IN NUMBER
6976     --NTG
6977    ,p_TOT_RFI_EE_DBT_NTG_CMTD    IN NUMBER
6978    ,p_TOT_RFI_EE_DBT_NTG_CYTD    IN NUMBER
6979    ,p_TOT_RFI_EE_DBT_NTG_RUN     IN NUMBER
6980    ,p_TOT_RFI_EE_DBT_NTG_PTD     IN NUMBER
6981    ,p_TOT_RFI_EE_DBT_NTG_YTD     IN NUMBER
6982    ,p_TOT_NRFI_EE_DBT_NTG_CMTD   IN NUMBER
6983    ,p_TOT_NRFI_EE_DBT_NTG_CYTD   IN NUMBER
6984    ,p_TOT_NRFI_EE_DBT_NTG_RUN    IN NUMBER
6985    ,p_TOT_NRFI_EE_DBT_NTG_PTD    IN NUMBER
6986    ,p_TOT_NRFI_EE_DBT_NTG_YTD    IN NUMBER
6987    ,p_TOT_SKL_ANN_INC_NTG_CMTD   IN NUMBER
6988    ) RETURN NUMBER
6989 AS
6990    l_Dum NUMBER := 1;
6991 
6992 BEGIN
6993 -- Balances
6994    bal_TOT_INC_PTD             := p_TOT_INC_PTD;
6995    bal_TOT_INC_YTD             := p_TOT_INC_YTD;
6996    bal_TOT_NRFI_AN_INC_CMTD    := p_TOT_NRFI_AN_INC_CMTD;
6997    bal_TOT_NRFI_AN_INC_CYTD    := p_TOT_NRFI_AN_INC_CYTD;
6998    bal_TOT_NRFI_AN_INC_RUN     := p_TOT_NRFI_AN_INC_RUN;
6999    bal_TOT_NRFI_AN_INC_PTD     := p_TOT_NRFI_AN_INC_PTD;
7000    bal_TOT_NRFI_AN_INC_YTD     := p_TOT_NRFI_AN_INC_YTD;
7001    bal_TOT_NRFI_INC_CMTD       := p_TOT_NRFI_INC_CMTD;
7002    bal_TOT_NRFI_INC_CYTD       := p_TOT_NRFI_INC_CYTD;
7003    bal_TOT_NRFI_INC_RUN        := p_TOT_NRFI_INC_RUN;
7004    bal_TOT_NRFI_INC_PTD        := p_TOT_NRFI_INC_PTD;
7005    bal_TOT_NRFI_INC_YTD        := p_TOT_NRFI_INC_YTD;
7006    bal_TOT_RFI_AN_INC_CMTD     := p_TOT_RFI_AN_INC_CMTD;
7007    bal_TOT_RFI_AN_INC_CYTD     := p_TOT_RFI_AN_INC_CYTD;
7008    bal_TOT_RFI_AN_INC_RUN      := p_TOT_RFI_AN_INC_RUN;
7009    bal_TOT_RFI_AN_INC_PTD      := p_TOT_RFI_AN_INC_PTD;
7010    bal_TOT_RFI_AN_INC_YTD      := p_TOT_RFI_AN_INC_YTD;
7011    bal_TOT_RFI_INC_CMTD        := p_TOT_RFI_INC_CMTD;
7012    bal_TOT_RFI_INC_CYTD        := p_TOT_RFI_INC_CYTD;
7013    bal_TOT_RFI_INC_RUN         := p_TOT_RFI_INC_RUN;
7014    bal_TOT_RFI_INC_PTD         := p_TOT_RFI_INC_PTD;
7015    bal_TOT_RFI_INC_YTD         := p_TOT_RFI_INC_YTD;
7016    bal_TOT_SEA_WRK_DYS_WRK_YTD := p_TOT_SEA_WRK_DYS_WRK_YTD;
7017    bal_TOT_SKL_ANN_INC_CMTD    := p_TOT_SKL_ANN_INC_CMTD;
7018    bal_TOT_SKL_INC_CMTD        := p_TOT_SKL_INC_CMTD;
7019    bal_TOT_TXB_INC_ITD         := p_TOT_TXB_INC_ITD;
7020    -- EMP201
7021    bal_GROSS_REMUNERATION_CMTD := p_GROSS_REMUNERATION_CMTD ;
7022    bal_ANN_PAYMENTS_CMTD       := p_ANN_PAYMENTS_CMTD ;
7023    -- NTG
7024    bal_TOT_RFI_EE_DBT_NTG_CMTD := p_TOT_RFI_EE_DBT_NTG_CMTD;
7025    bal_TOT_RFI_EE_DBT_NTG_CYTD := p_TOT_RFI_EE_DBT_NTG_CYTD;
7026    bal_TOT_RFI_EE_DBT_NTG_RUN  := p_TOT_RFI_EE_DBT_NTG_RUN;
7027    bal_TOT_RFI_EE_DBT_NTG_PTD  := p_TOT_RFI_EE_DBT_NTG_PTD;
7028    bal_TOT_RFI_EE_DBT_NTG_YTD  := p_TOT_RFI_EE_DBT_NTG_YTD;
7029    bal_TOT_NRFI_EE_DBT_NTG_CMTD:= p_TOT_NRFI_EE_DBT_NTG_CMTD;
7030    bal_TOT_NRFI_EE_DBT_NTG_CYTD:= p_TOT_NRFI_EE_DBT_NTG_CYTD;
7031    bal_TOT_NRFI_EE_DBT_NTG_RUN := p_TOT_NRFI_EE_DBT_NTG_RUN;
7032    bal_TOT_NRFI_EE_DBT_NTG_PTD := p_TOT_NRFI_EE_DBT_NTG_PTD;
7033    bal_TOT_NRFI_EE_DBT_NTG_YTD := p_TOT_NRFI_EE_DBT_NTG_YTD;
7034    bal_TOT_SKL_ANN_INC_NTG_CMTD:= p_TOT_SKL_ANN_INC_NTG_CMTD;
7035 
7036    RETURN l_Dum;
7037 EXCEPTION
7038    WHEN OTHERS THEN
7039       hr_utility.set_message(801, 'ZaTxBal5_01032012: '||TO_CHAR(SQLCODE));
7040       hr_utility.raise_error;
7041 END ZaTxBal5_01032012;
7042 
7043 -------------------------------------------------------------------------------
7044 -- ZaTxBal6_01032012                                                         --
7045 -- Tax module supporting function                                            --
7046 -------------------------------------------------------------------------------
7047 FUNCTION ZaTxBal6_01032012(
7048 -- Balances
7049     p_TOT_TXB_AB_CMTD           IN NUMBER
7050    ,p_TOT_TXB_AB_RUN            IN NUMBER
7051    ,p_TOT_TXB_AB_PTD            IN NUMBER
7052    ,p_TOT_TXB_AB_YTD            IN NUMBER
7053    ,p_TOT_TXB_AP_CMTD           IN NUMBER
7054    ,p_TOT_TXB_AP_RUN            IN NUMBER
7055    ,p_TOT_TXB_AP_PTD            IN NUMBER
7056    ,p_TOT_TXB_AP_YTD            IN NUMBER
7057    ,p_TOT_TXB_FB_CMTD           IN NUMBER
7058    ,p_TOT_TXB_FB_CYTD           IN NUMBER
7059    ,p_TOT_TXB_FB_RUN            IN NUMBER
7060    ,p_TOT_TXB_FB_PTD            IN NUMBER
7061    ,p_TOT_TXB_FB_YTD            IN NUMBER
7062    ,p_TOT_TXB_NI_CMTD           IN NUMBER
7063    ,p_TOT_TXB_NI_CYTD           IN NUMBER
7064    ,p_TOT_TXB_NI_RUN            IN NUMBER
7065    ,p_TOT_TXB_NI_PTD            IN NUMBER
7066    ,p_TOT_TXB_NI_YTD            IN NUMBER
7067    ,p_TOT_TXB_PO_CMTD           IN NUMBER
7068    ,p_TOT_TXB_PO_RUN            IN NUMBER
7069    ,p_TOT_TXB_PO_PTD            IN NUMBER
7070    ,p_TOT_TXB_PO_YTD            IN NUMBER
7071    ,p_TOT_TXB_TA_CMTD           IN NUMBER
7072    ,p_TOT_TXB_TA_CYTD           IN NUMBER
7073    ,p_TOT_TXB_TA_RUN            IN NUMBER
7074    ,p_TOT_TXB_TA_PTD            IN NUMBER
7075    ,p_TOT_TXB_TA_YTD            IN NUMBER
7076    /* NTG */
7077    ,p_TOT_TXB_AP_NTG_CMTD       IN NUMBER
7078    ,p_TOT_TXB_AP_NTG_RUN        IN NUMBER
7079    ,p_TOT_TXB_AP_NTG_PTD        IN NUMBER
7080    ,p_TOT_TXB_AP_NTG_YTD        IN NUMBER
7081    ,p_TOT_TXB_EE_DBT_NTG_CMTD   IN NUMBER
7082    ,p_TOT_TXB_EE_DBT_NTG_RUN    IN NUMBER
7083    ,p_TOT_TXB_EE_DBT_NTG_PTD    IN NUMBER
7084    ,p_TOT_TXB_EE_DBT_NTG_YTD    IN NUMBER
7085    /* End NTG */
7086    ) RETURN NUMBER
7087 AS
7088    l_Dum NUMBER := 1;
7089 
7090 BEGIN
7091 -- Balances
7092    bal_TOT_TXB_AB_CMTD   := p_TOT_TXB_AB_CMTD;
7093    bal_TOT_TXB_AB_RUN    := p_TOT_TXB_AB_RUN;
7094    bal_TOT_TXB_AB_PTD    := p_TOT_TXB_AB_PTD;
7095    bal_TOT_TXB_AB_YTD    := p_TOT_TXB_AB_YTD;
7096    bal_TOT_TXB_AP_CMTD   := p_TOT_TXB_AP_CMTD;
7097    bal_TOT_TXB_AP_RUN    := p_TOT_TXB_AP_RUN;
7098    bal_TOT_TXB_AP_PTD    := p_TOT_TXB_AP_PTD;
7099    bal_TOT_TXB_AP_YTD    := p_TOT_TXB_AP_YTD;
7100    bal_TOT_TXB_FB_CMTD   := p_TOT_TXB_FB_CMTD;
7101    bal_TOT_TXB_FB_CYTD   := p_TOT_TXB_FB_CYTD;
7102    bal_TOT_TXB_FB_RUN    := p_TOT_TXB_FB_RUN;
7103    bal_TOT_TXB_FB_PTD    := p_TOT_TXB_FB_PTD;
7104    bal_TOT_TXB_FB_YTD    := p_TOT_TXB_FB_YTD;
7105    bal_TOT_TXB_NI_CMTD   := p_TOT_TXB_NI_CMTD;
7106    bal_TOT_TXB_NI_CYTD   := p_TOT_TXB_NI_CYTD;
7107    bal_TOT_TXB_NI_RUN    := p_TOT_TXB_NI_RUN;
7108    bal_TOT_TXB_NI_PTD    := p_TOT_TXB_NI_PTD;
7109    bal_TOT_TXB_NI_YTD    := p_TOT_TXB_NI_YTD;
7110    bal_TOT_TXB_PO_CMTD   := p_TOT_TXB_PO_CMTD;
7111    bal_TOT_TXB_PO_RUN    := p_TOT_TXB_PO_RUN;
7112    bal_TOT_TXB_PO_PTD    := p_TOT_TXB_PO_PTD;
7113    bal_TOT_TXB_PO_YTD    := p_TOT_TXB_PO_YTD;
7114    bal_TOT_TXB_TA_CMTD   := p_TOT_TXB_TA_CMTD;
7115    bal_TOT_TXB_TA_CYTD   := p_TOT_TXB_TA_CYTD;
7116    bal_TOT_TXB_TA_RUN   := p_TOT_TXB_TA_RUN;
7117    bal_TOT_TXB_TA_PTD    := p_TOT_TXB_TA_PTD;
7118    bal_TOT_TXB_TA_YTD    := p_TOT_TXB_TA_YTD;
7119    /* NTG */
7120    bal_TOT_TXB_AP_NTG_CMTD   := p_TOT_TXB_AP_NTG_CMTD;
7121    bal_TOT_TXB_AP_NTG_RUN    := p_TOT_TXB_AP_NTG_RUN;
7122    bal_TOT_TXB_AP_NTG_PTD    := p_TOT_TXB_AP_NTG_PTD;
7123    bal_TOT_TXB_AP_NTG_YTD    := p_TOT_TXB_AP_NTG_YTD;
7124    bal_TOT_TXB_EE_DBT_NTG_CMTD   := p_TOT_TXB_EE_DBT_NTG_CMTD;
7125    bal_TOT_TXB_EE_DBT_NTG_RUN    := p_TOT_TXB_EE_DBT_NTG_RUN;
7126    bal_TOT_TXB_EE_DBT_NTG_PTD    := p_TOT_TXB_EE_DBT_NTG_PTD;
7127    bal_TOT_TXB_EE_DBT_NTG_YTD    := p_TOT_TXB_EE_DBT_NTG_YTD;
7128    /* End NTG */
7129 
7130 
7131    RETURN l_Dum;
7132 EXCEPTION
7133    WHEN OTHERS THEN
7134       hr_utility.set_message(801, 'ZaTxBal6_01032012: '||TO_CHAR(SQLCODE));
7135       hr_utility.raise_error;
7136 END ZaTxBal6_01032012;
7137 
7138 -------------------------------------------------------------------------------
7139 -- ZaTx_01032012                                                             --
7140 -- Main Tax module function                                                  --
7141 -------------------------------------------------------------------------------
7142 FUNCTION ZaTx_01032012(
7143 /*  PARAMETERS */
7144    -- Contexts
7145      ASSIGNMENT_ACTION_ID IN NUMBER
7146    , ASSIGNMENT_ID        IN NUMBER
7147    , PAYROLL_ACTION_ID    IN NUMBER
7148    , PAYROLL_ID           IN NUMBER
7149    -- Out Parameters
7150    , p_LibWrn            OUT NOCOPY VARCHAR2
7151    , p_LibFpDR           OUT NOCOPY NUMBER
7152    , p_LibFpNI           OUT NOCOPY NUMBER
7153    , p_LibFpFB           OUT NOCOPY NUMBER
7154    , p_LibFpTA           OUT NOCOPY NUMBER
7155    , p_LibFpBP           OUT NOCOPY NUMBER
7156    , p_LibFpAB           OUT NOCOPY NUMBER
7157    , p_LibFpAP           OUT NOCOPY NUMBER
7158    , p_LibFpPO           OUT NOCOPY NUMBER
7159    , p_PayValSD          OUT NOCOPY NUMBER
7160    , p_PayValEC          OUT NOCOPY NUMBER
7161    , p_PayeVal           OUT NOCOPY NUMBER
7162    , p_SiteVal           OUT NOCOPY NUMBER
7163    , p_It3Ind            OUT NOCOPY NUMBER
7164    , p_PfUpdFig          OUT NOCOPY NUMBER
7165    , p_RaUpdFig          OUT NOCOPY NUMBER
7166    , p_OUpdFig           OUT NOCOPY NUMBER
7167    , p_NtiUpdFig         OUT NOCOPY NUMBER
7168    , p_OvrWrn            OUT NOCOPY VARCHAR2
7169    , p_LSDirNum          OUT NOCOPY VARCHAR2
7170    , p_LSDirVal          OUT NOCOPY NUMBER
7171    , p_RETLSDirNum       OUT NOCOPY VARCHAR2
7172    , p_RETLSDirVal       OUT NOCOPY NUMBER
7173     --EMP201
7174    , p_NPtiUpdFig        OUT NOCOPY NUMBER
7175    -- NTG
7176    , p_LibFpNtgAP        OUT NOCOPY NUMBER
7177    , p_LibFpNtgEEDbt     OUT NOCOPY NUMBER
7178    , p_LibFpNtg          OUT NOCOPY NUMBER
7179    , p_MedCrUsed         OUT NOCOPY NUMBER
7180    , p_MedCrUsedNI       OUT NOCOPY NUMBER
7181    , p_MedCrUsedFB       OUT NOCOPY NUMBER
7182    , p_MedCrUsedTA       OUT NOCOPY NUMBER
7183    , p_MedCrUsedBP       OUT NOCOPY NUMBER
7184    , p_MedCrUsedAB       OUT NOCOPY NUMBER
7185    , p_MedCrUsedAP       OUT NOCOPY NUMBER
7186    , p_MedCrUsedPO       OUT NOCOPY NUMBER
7187    , p_MedCrUsedNtgAP    OUT NOCOPY NUMBER
7188    , p_MedCrUsedNtgEEDbt OUT NOCOPY NUMBER
7189    , p_MedCrUsedDR       OUT NOCOPY NUMBER
7190    , p_MedCrUsedLS       OUT NOCOPY NUMBER
7191    )RETURN NUMBER
7192 AS
7193 -- Variables
7194 --
7195    l_Dum NUMBER := 1;
7196 -- Fix for Bug# 12351345
7197 
7198    l_lmsm_proc_cnt NUMBER;
7199    l_ret_lmsm_proc_cnt NUMBER;
7200    l_65Year            Date;
7201 
7202    l_MdTxCrdtUDR_Adj  Number;
7203    l_MdTxCrdtUNi_Adj  Number;
7204    l_MdTxCrdtUFB_Adj  Number;
7205    l_MdTxCrdtUTA_Adj  Number;
7206    l_MdTxCrdtUBP_Adj  Number;
7207    l_MdTxCrdtUAB_Adj  Number;
7208    l_MdTxCrdtUAP_Adj  Number;
7209    l_MdTxCrdtUPO_Adj  Number;
7210    l_MdTxCrdtUNG_Adj  Number;
7211    l_MdTxCrdtUEE_Adj  Number;
7212 
7213 -- Fix for Bug# 12351345
7214 
7215    xpt_FxdPrc EXCEPTION;
7216 
7217  cursor csr_all_LSDir(p_ass_action_id in number ) is
7218  SELECT /*+ use_nl ( ptp_all ppa_all feed)*/  process.result_value dirnum
7219    FROM pay_assignment_actions paa
7220       , pay_payroll_actions ppa
7221       , per_time_periods ptp
7222       , per_time_periods ptp_all
7223       , pay_assignment_actions paa_all
7224       , pay_payroll_actions ppa_all
7225       , pay_run_results prr_ls
7226       , pay_run_result_values target
7227       , pay_balance_feeds_f feed
7228       , pay_run_result_values process
7229       , pay_input_values_f process_iv
7230       , pay_balance_types pbt
7231       , pay_element_types_f pet
7232       , pay_input_values_f piv
7233   WHERE paa.assignment_action_id = p_ass_action_id
7234     AND ppa.payroll_action_id = paa.payroll_action_id
7235     AND ptp.time_period_id = ppa.time_period_id
7236     AND ptp_all.prd_information1 = ptp.prd_information1
7237     AND ppa_all.time_period_id = ptp_all.time_period_id
7238     AND paa_all.payroll_action_id = ppa_all.payroll_action_id
7239     AND paa_all.assignment_id = paa.assignment_id
7240     AND paa_all.action_sequence <= paa.action_sequence
7241     AND prr_ls.assignment_action_id = paa_all.assignment_action_id
7242     AND prr_ls.status IN ('P', 'PA')
7243     AND target.run_result_id = prr_ls.run_result_id
7244     AND feed.input_value_id = target.input_value_id
7245     AND ppa_all.effective_date
7246         BETWEEN feed.effective_start_date
7247             AND feed.effective_end_date
7248     AND process.run_result_id = prr_ls.run_result_id
7249     AND process.input_value_id = process_iv.input_value_id
7250     AND process_iv.name = 'Tax Directive Number'
7251     AND ppa_all.effective_date
7252         BETWEEN process_iv.effective_start_date
7253             AND process_iv.effective_end_date
7254     AND feed.balance_type_id = pbt.balance_type_id
7255     AND pbt.balance_name = 'Tax on Lump Sums'
7256     AND pet.element_name NOT LIKE 'Medical Tax Credit Used on LMPSM%'
7257     AND pet.element_type_id = piv.element_type_id
7258     AND ppa_all.effective_date
7259         BETWEEN pet.effective_start_date
7260             AND pet.effective_end_date
7261     AND piv.input_value_id = target.input_value_id
7262 ORDER BY paa_all.action_sequence , process.result_value;
7263 
7264 
7265    l_LSDirRec               LSDirRec;
7266    l_LSDirNum               VARCHAR2(100);
7267    l_ExMedTaxCr             NUMBER;
7268 
7269    l_TotMedTxCr_Upd         NUMBER;
7270    l_MedTxCr_Adj            NUMBER;
7271    l_TmpMedTxCr             NUMBER;
7272    l_paye                   NUMBER;
7273 
7274 -------------------------------------------------------------------------------
7275 BEGIN--                           MAIN                                       --
7276 -------------------------------------------------------------------------------
7277 
7278 
7279 -- Set hr_utility globals if debugging
7280 --
7281      -- py_za_tx_utl_01032012.g_HrTraceEnabled  := TRUE;
7282      -- py_za_tx_utl_01032012.g_HrTracePipeName := 'ZATAX';
7283 
7284 -- Call hr_utility start procedure
7285    py_za_tx_utl_01032012.StartHrTrace;
7286 
7287    l_65Year := add_months(py_za_tx_01032012.dbi_PER_DTE_OF_BRTH,780);
7288 -- Setup Trace Header Info
7289    WrtHrTrc(' ');
7290    WrtHrTrc(' ');
7291    WrtHrTrc(' ');
7292    WrtHrTrc('------------------------------------------------------------');
7293    WrtHrTrc('-- Start of Tax Trace File');
7294    WrtHrTrc('------------------------------------------------------------');
7295    WrtHrTrc(' ');
7296    WrtHrTrc('   Processing Assignment ID :     '||to_char(ASSIGNMENT_ID       ));
7297    WrtHrTrc('   Assignment Action ID     :     '||to_char(ASSIGNMENT_ACTION_ID));
7298    WrtHrTrc('   Payroll Action ID        :     '||to_char(PAYROLL_ACTION_ID   ));
7299    WrtHrTrc('   Payroll ID               :     '||to_char(PAYROLL_ID          ));
7300    WrtHrTrc(' ');
7301    WrtHrTrc('------------------------------------------------------------');
7302    WrtHrTrc(' ');
7303    WrtHrTrc('-------------------------------------------------------------------------------');
7304    WrtHrTrc('-- Application Global Values');
7305    WrtHrTrc('-------------------------------------------------------------------------------');
7306    WrtHrTrc('   glb_ZA_ADL_TX_RBT:             '||to_char(glb_ZA_ADL_TX_RBT        ));
7307    WrtHrTrc('   glb_ZA_ARR_PF_AN_MX_ABT:       '||to_char(glb_ZA_ARR_PF_AN_MX_ABT  ));
7308    WrtHrTrc('   glb_ZA_ARR_RA_AN_MX_ABT:       '||to_char(glb_ZA_ARR_RA_AN_MX_ABT  ));
7309    WrtHrTrc('   glb_ZA_TRV_ALL_TX_PRC:         '||to_char(glb_ZA_TRV_ALL_TX_PRC    ));
7310    WrtHrTrc('   glb_ZA_CC_TX_PRC:              '||to_char(glb_ZA_CC_TX_PRC         ));
7311    WrtHrTrc('   glb_ZA_PF_AN_MX_ABT:           '||to_char(glb_ZA_PF_AN_MX_ABT      ));
7312    WrtHrTrc('   glb_ZA_PF_MX_PRC:              '||to_char(glb_ZA_PF_MX_PRC         ));
7313    WrtHrTrc('   glb_ZA_PER_SERV_COMP_PERC:     '||to_char(glb_ZA_PER_SERV_COMP_PERC));
7314    WrtHrTrc('   glb_ZA_PER_SERV_TRST_PERC:     '||to_char(glb_ZA_PER_SERV_TRST_PERC));
7315    WrtHrTrc('   glb_ZA_PRI_TX_RBT:             '||to_char(glb_ZA_PRI_TX_RBT        ));
7316    WrtHrTrc('   glb_ZA_PRI_TX_THRSHLD:         '||to_char(glb_ZA_PRI_TX_THRSHLD    ));
7317    WrtHrTrc('   glb_ZA_PBL_TX_PRC:             '||to_char(glb_ZA_PBL_TX_PRC        ));
7318    WrtHrTrc('   glb_ZA_PBL_TX_RTE:             '||to_char(glb_ZA_PBL_TX_RTE        ));
7319    WrtHrTrc('   glb_ZA_RA_AN_MX_ABT:           '||to_char(glb_ZA_RA_AN_MX_ABT      ));
7320    WrtHrTrc('   glb_ZA_RA_MX_PRC:              '||to_char(glb_ZA_RA_MX_PRC         ));
7321    WrtHrTrc('   glb_ZA_SC_TX_THRSHLD:          '||to_char(glb_ZA_SC_TX_THRSHLD     ));
7322    WrtHrTrc('   glb_ZA_SIT_LIM:                '||to_char(glb_ZA_SIT_LIM           ));
7323    WrtHrTrc('   glb_ZA_TMP_TX_RTE:             '||to_char(glb_ZA_TMP_TX_RTE        ));
7324    WrtHrTrc('   glb_ZA_WRK_DYS_PR_YR:          '||to_char(glb_ZA_WRK_DYS_PR_YR     ));
7325 /* TYS2010*/
7326    WrtHrTrc('   glb_ZA_ALLOW_DONATION_PERC:    '||to_char(glb_ZA_ALLOW_DONATION_PERC ));
7327    WrtHrTrc('   glb_ZA_LATE_PAYMENT_PERC:      '||to_char(glb_ZA_LATE_PAYMENT_PERC ));
7328    WrtHrTrc('   glb_ZA_TRI_TX_RBT:             '||to_char(glb_ZA_TRI_TX_RBT ));
7329    WrtHrTrc('   glb_ZA_TRI_TX_THRSHLD:         '||to_char(glb_ZA_TRI_TX_THRSHLD ));
7330 
7331    WrtHrTrc('-------------------------------------------------------------------------------');
7332    WrtHrTrc('-- Application Database Items');
7333    WrtHrTrc('-------------------------------------------------------------------------------');
7334    WrtHrTrc('   dbi_BP_TX_RCV:                 '||        dbi_BP_TX_RCV                        );
7335    WrtHrTrc('   dbi_PAY_PROC_PRD_DTE_PD:       '||to_char(dbi_PAY_PROC_PRD_DTE_PD,'DD/MM/YYYY'));
7336    WrtHrTrc('   dbi_PER_AGE:                   '||to_char(dbi_PER_AGE                         ));
7337    WrtHrTrc('   dbi_PER_DTE_OF_BRTH:           '||to_char(dbi_PER_DTE_OF_BRTH    ,'DD/MM/YYYY'));
7338    WrtHrTrc('   dbi_SEA_WRK_DYS_WRK:           '||to_char(dbi_SEA_WRK_DYS_WRK                 ));
7339    WrtHrTrc('   dbi_SES_DTE:                   '||to_char(dbi_SES_DTE            ,'DD/MM/YYYY'));
7340    WrtHrTrc('   dbi_TX_DIR_NUM:                '||        dbi_TX_DIR_NUM                       );
7341    WrtHrTrc('   dbi_TX_DIR_VAL:                '||to_char(dbi_TX_DIR_VAL                      ));
7342    WrtHrTrc('   dbi_TX_STA:                    '||        dbi_TX_STA                           );
7343    WrtHrTrc('   dbi_TX_MTD:                    '||        dbi_TX_MTD                           );
7344    WrtHrTrc('   dbi_ZA_ACT_END_DTE:            '||to_char(dbi_ZA_ACT_END_DTE     ,'DD/MM/YYYY'));
7345    WrtHrTrc('   dbi_ZA_ACT_STRT_DTE:           '||to_char(dbi_ZA_ACT_STRT_DTE    ,'DD/MM/YYYY'));
7346    WrtHrTrc('   dbi_ZA_ASG_TX_RTR_PRD:         '||        dbi_ZA_ASG_TX_RTR_PRD                );
7347    WrtHrTrc('   dbi_ZA_ASG_TAX_RTR_RSLTS:      '||        dbi_ZA_ASG_TAX_RTR_RSLTS              );
7348 /*
7349    WrtHrTrc('   dbi_ZA_ASG_TX_YR:              '||to_char(dbi_ZA_ASG_TX_YR                    ));
7350    WrtHrTrc('   dbi_ZA_ASG_TX_YR_END:          '||to_char(dbi_ZA_ASG_TX_YR_END   ,'DD/MM/YYYY'));
7351    WrtHrTrc('   dbi_ZA_ASG_TX_YR_STRT:         '||to_char(dbi_ZA_ASG_TX_YR_STRT  ,'DD/MM/YYYY')); */
7352    WrtHrTrc('   dbi_ZA_CUR_PRD_END_DTE:        '||to_char(dbi_ZA_CUR_PRD_END_DTE ,'DD/MM/YYYY'));
7353    WrtHrTrc('   dbi_ZA_CUR_PRD_STRT_DTE:       '||to_char(dbi_ZA_CUR_PRD_STRT_DTE,'DD/MM/YYYY'));
7354    WrtHrTrc('   dbi_ZA_DYS_IN_YR:              '||to_char(dbi_ZA_DYS_IN_YR                    ));
7355    WrtHrTrc('   dbi_ZA_PAY_PRDS_LFT:           '||to_char(dbi_ZA_PAY_PRDS_LFT                 ));
7356    WrtHrTrc('   dbi_ZA_PAY_PRDS_PER_YR:        '||to_char(dbi_ZA_PAY_PRDS_PER_YR              ));
7357    WrtHrTrc('   dbi_ZA_TX_YR_END:              '||to_char(dbi_ZA_TX_YR_END       ,'DD/MM/YYYY'));
7358    WrtHrTrc('   dbi_ZA_TX_YR_STRT:             '||to_char(dbi_ZA_TX_YR_STRT      ,'DD/MM/YYYY'));
7359    WrtHrTrc('   dbi_ZA_LS_DIR_NUM:             '||        dbi_ZA_LS_DIR_NUM                    );
7360    WrtHrTrc('   dbi_ZA_LS_DIR_VAL:             '||to_char(dbi_ZA_LS_DIR_VAL                   ));
7361    WrtHrTrc('   dbi_ZA_RET_LS_DIR_NUM:         '||        dbi_ZA_RET_LS_DIR_NUM                );
7362    WrtHrTrc('   dbi_ZA_RET_LS_DIR_VAL:         '||to_char(dbi_ZA_RET_LS_DIR_VAL           ));
7363 
7364    WrtHrTrc('-------------------------------------------------------------------------------');
7365    WrtHrTrc('-- Balances');
7366    WrtHrTrc('-------------------------------------------------------------------------------');
7367    WrtHrTrc('   bal_ANN_ARR_PF_CMTD:           '||to_char(bal_ANN_ARR_PF_CMTD          ));
7368    WrtHrTrc('   bal_ANN_ARR_PF_CYTD:           '||to_char(bal_ANN_ARR_PF_CYTD          ));
7369    WrtHrTrc('   bal_ANN_ARR_PF_RUN:            '||to_char(bal_ANN_ARR_PF_RUN           ));
7370    WrtHrTrc('   bal_ANN_ARR_PF_PTD:            '||to_char(bal_ANN_ARR_PF_PTD           ));
7371    WrtHrTrc('   bal_ANN_ARR_PF_YTD:            '||to_char(bal_ANN_ARR_PF_YTD           ));
7372    WrtHrTrc('   bal_ANN_ARR_RA_CMTD:           '||to_char(bal_ANN_ARR_RA_CMTD          ));
7373    WrtHrTrc('   bal_ANN_ARR_RA_CYTD:           '||to_char(bal_ANN_ARR_RA_CYTD          ));
7374    WrtHrTrc('   bal_ANN_ARR_RA_RUN:            '||to_char(bal_ANN_ARR_RA_RUN           ));
7375    WrtHrTrc('   bal_ANN_ARR_RA_PTD:            '||to_char(bal_ANN_ARR_RA_PTD           ));
7376    WrtHrTrc('   bal_ANN_ARR_RA_YTD:            '||to_char(bal_ANN_ARR_RA_YTD           ));
7377    WrtHrTrc('   bal_ANN_EE_INC_PRO_POL_CMTD:   '||to_char(bal_ANN_EE_INC_PRO_POL_CMTD  ));
7378    WrtHrTrc('   bal_ANN_EE_INC_PRO_POL_CYTD:   '||to_char(bal_ANN_EE_INC_PRO_POL_CYTD  ));
7379    WrtHrTrc('   bal_ANN_EE_INC_PRO_POL_RUN:    '||to_char(bal_ANN_EE_INC_PRO_POL_RUN   ));
7380    WrtHrTrc('   bal_ANN_EE_INC_PRO_POL_PTD:    '||to_char(bal_ANN_EE_INC_PRO_POL_PTD   ));
7381    WrtHrTrc('   bal_ANN_EE_INC_PRO_POL_YTD:    '||to_char(bal_ANN_EE_INC_PRO_POL_YTD   ));
7382    WrtHrTrc('   bal_ANN_MED_CNTRB_ABM_CMTD:    '||to_char(bal_ANN_MED_CNTRB_ABM_CMTD   ));
7383    WrtHrTrc('   bal_ANN_MED_CNTRB_ABM_CYTD:    '||to_char(bal_ANN_MED_CNTRB_ABM_CYTD   ));
7384    WrtHrTrc('   bal_ANN_MED_CNTRB_ABM_RUN:     '||to_char(bal_ANN_MED_CNTRB_ABM_RUN    ));
7385    WrtHrTrc('   bal_ANN_MED_CNTRB_ABM_PTD:     '||to_char(bal_ANN_MED_CNTRB_ABM_PTD    ));
7386    WrtHrTrc('   bal_ANN_MED_CNTRB_ABM_YTD:     '||to_char(bal_ANN_MED_CNTRB_ABM_YTD    ));
7387    WrtHrTrc('   bal_ANN_PF_CMTD:               '||to_char(bal_ANN_PF_CMTD              ));
7388    WrtHrTrc('   bal_ANN_PF_CYTD:               '||to_char(bal_ANN_PF_CYTD              ));
7389    WrtHrTrc('   bal_ANN_PF_RUN:                '||to_char(bal_ANN_PF_RUN               ));
7390    WrtHrTrc('   bal_ANN_PF_PTD:                '||to_char(bal_ANN_PF_PTD               ));
7391    WrtHrTrc('   bal_ANN_PF_YTD:                '||to_char(bal_ANN_PF_YTD               ));
7392    WrtHrTrc('   bal_ANN_RA_CMTD:               '||to_char(bal_ANN_RA_CMTD              ));
7393    WrtHrTrc('   bal_ANN_RA_CYTD:               '||to_char(bal_ANN_RA_CYTD              ));
7394    WrtHrTrc('   bal_ANN_RA_RUN:                '||to_char(bal_ANN_RA_RUN               ));
7395    WrtHrTrc('   bal_ANN_RA_PTD:                '||to_char(bal_ANN_RA_PTD               ));
7396    WrtHrTrc('   bal_ANN_RA_YTD:                '||to_char(bal_ANN_RA_YTD               ));
7397    /* TYS2010 */
7398    WrtHrTrc('   bal_ANN_DONAT_MD_EE_CMTD:      '||to_char(bal_ANN_DONAT_MD_EE_CMTD     ));
7399    WrtHrTrc('   bal_ANN_DONAT_MD_EE_CYTD:      '||to_char(bal_ANN_DONAT_MD_EE_CYTD     ));
7400    WrtHrTrc('   bal_ANN_DONAT_MD_EE_RUN:       '||to_char(bal_ANN_DONAT_MD_EE_RUN      ));
7401    WrtHrTrc('   bal_ANN_DONAT_MD_EE_PTD:       '||to_char(bal_ANN_DONAT_MD_EE_PTD      ));
7402    WrtHrTrc('   bal_ANN_DONAT_MD_EE_YTD:       '||to_char(bal_ANN_DONAT_MD_EE_YTD      ));
7403   /* End TYS2010 */
7404    WrtHrTrc('   bal_ARR_PF_CMTD:               '||to_char(bal_ARR_PF_CMTD              ));
7405    WrtHrTrc('   bal_ARR_PF_CYTD:               '||to_char(bal_ARR_PF_CYTD              ));
7406    WrtHrTrc('   bal_ARR_PF_PTD:                '||to_char(bal_ARR_PF_PTD               ));
7407    WrtHrTrc('   bal_ARR_PF_YTD:                '||to_char(bal_ARR_PF_YTD               ));
7408    WrtHrTrc('   bal_ARR_RA_CMTD:               '||to_char(bal_ARR_RA_CMTD              ));
7409    WrtHrTrc('   bal_ARR_RA_CYTD:               '||to_char(bal_ARR_RA_CYTD              ));
7410    WrtHrTrc('   bal_ARR_RA_PTD:                '||to_char(bal_ARR_RA_PTD               ));
7411    WrtHrTrc('   bal_ARR_RA_YTD:                '||to_char(bal_ARR_RA_YTD               ));
7412    WrtHrTrc('   bal_BP_CMTD:                   '||to_char(bal_BP_CMTD                  ));
7413    WrtHrTrc('   bal_BP_RUN:                    '||to_char(bal_BP_RUN                   ));
7414    WrtHrTrc('   bal_BP_PTD:                    '||to_char(bal_BP_PTD                   ));
7415    WrtHrTrc('   bal_BP_YTD:                    '||to_char(bal_BP_YTD                   ));
7416    WrtHrTrc('   bal_CUR_PF_CMTD:               '||to_char(bal_CUR_PF_CMTD              ));
7417    WrtHrTrc('   bal_CUR_PF_CYTD:               '||to_char(bal_CUR_PF_CYTD              ));
7418    WrtHrTrc('   bal_CUR_PF_RUN:                '||to_char(bal_CUR_PF_RUN               ));
7419    WrtHrTrc('   bal_CUR_PF_PTD:                '||to_char(bal_CUR_PF_PTD               ));
7420    WrtHrTrc('   bal_CUR_PF_YTD:                '||to_char(bal_CUR_PF_YTD               ));
7421    WrtHrTrc('   bal_CUR_RA_CMTD:               '||to_char(bal_CUR_RA_CMTD              ));
7422    WrtHrTrc('   bal_CUR_RA_CYTD:               '||to_char(bal_CUR_RA_CYTD              ));
7423    WrtHrTrc('   bal_CUR_RA_RUN:                '||to_char(bal_CUR_RA_RUN               ));
7424    WrtHrTrc('   bal_CUR_RA_PTD:                '||to_char(bal_CUR_RA_PTD               ));
7425    WrtHrTrc('   bal_CUR_RA_YTD:                '||to_char(bal_CUR_RA_YTD               ));
7426    WrtHrTrc('   bal_DIR_DMD_RMN_ITD:           '||to_char(bal_DIR_DMD_RMN_ITD          ));
7427    /* TYS2010 */
7428    WrtHrTrc('   bal_DONAT_MD_EE_CMTD:          '||to_char(bal_DONAT_MD_EE_CMTD         ));
7429    WrtHrTrc('   bal_DONAT_MD_EE_CYTD:          '||to_char(bal_DONAT_MD_EE_CYTD         ));
7430    WrtHrTrc('   bal_DONAT_MD_EE_RUN:           '||to_char(bal_DONAT_MD_EE_RUN          ));
7431    WrtHrTrc('   bal_DONAT_MD_EE_PTD:           '||to_char(bal_DONAT_MD_EE_PTD          ));
7432    WrtHrTrc('   bal_DONAT_MD_EE_YTD:           '||to_char(bal_DONAT_MD_EE_YTD          ));
7433   /*End TYS2010 */
7434    WrtHrTrc('   bal_EE_INC_PRO_POL_CMTD:       '||to_char(bal_EE_INC_PRO_POL_CMTD      ));
7435    WrtHrTrc('   bal_EE_INC_PRO_POL_CYTD:       '||to_char(bal_EE_INC_PRO_POL_CYTD      ));
7436    WrtHrTrc('   bal_EE_INC_PRO_POL_RUN:        '||to_char(bal_EE_INC_PRO_POL_RUN       ));
7437    WrtHrTrc('   bal_EE_INC_PRO_POL_PTD:        '||to_char(bal_EE_INC_PRO_POL_PTD       ));
7438    WrtHrTrc('   bal_EE_INC_PRO_POL_YTD:        '||to_char(bal_EE_INC_PRO_POL_YTD       ));
7439    WrtHrTrc('   bal_EXC_ARR_PEN_ITD:           '||to_char(bal_EXC_ARR_PEN_ITD          ));
7440    WrtHrTrc('   bal_EXC_ARR_PEN_PTD:           '||to_char(bal_EXC_ARR_PEN_PTD          ));
7441    WrtHrTrc('   bal_EXC_ARR_PEN_YTD:           '||to_char(bal_EXC_ARR_PEN_YTD          ));
7442    WrtHrTrc('   bal_EXC_ARR_RA_ITD:            '||to_char(bal_EXC_ARR_RA_ITD           ));
7443    WrtHrTrc('   bal_EXC_ARR_RA_PTD:            '||to_char(bal_EXC_ARR_RA_PTD           ));
7444    WrtHrTrc('   bal_EXC_ARR_RA_YTD:            '||to_char(bal_EXC_ARR_RA_YTD           ));
7445    WrtHrTrc('   bal_MED_CONTR_CMTD:            '||to_char(bal_MED_CONTR_CMTD           ));
7446    WrtHrTrc('   bal_MED_CONTR_CYTD:            '||to_char(bal_MED_CONTR_CYTD           ));
7447    WrtHrTrc('   bal_MED_CONTR_RUN:             '||to_char(bal_MED_CONTR_RUN            ));
7448    WrtHrTrc('   bal_MED_CONTR_PTD:             '||to_char(bal_MED_CONTR_PTD            ));
7449    WrtHrTrc('   bal_MED_CONTR_YTD:             '||to_char(bal_MED_CONTR_YTD            ));
7450    WrtHrTrc('   bal_MED_CNTRB_ABM_CMTD:        '||to_char(bal_MED_CNTRB_ABM_CMTD       ));
7451    WrtHrTrc('   bal_MED_CNTRB_ABM_CYTD:        '||to_char(bal_MED_CNTRB_ABM_CYTD       ));
7452    WrtHrTrc('   bal_MED_CNTRB_ABM_RUN:         '||to_char(bal_MED_CNTRB_ABM_RUN        ));
7453    WrtHrTrc('   bal_MED_CNTRB_ABM_PTD:         '||to_char(bal_MED_CNTRB_ABM_PTD        ));
7454    WrtHrTrc('   bal_MED_CNTRB_ABM_YTD:         '||to_char(bal_MED_CNTRB_ABM_YTD        ));
7455    WrtHrTrc('   bal_NET_PAY_RUN:               '||to_char(bal_NET_PAY_RUN              ));
7456    WrtHrTrc('   bal_NET_TXB_INC_CMTD:          '||to_char(bal_NET_TXB_INC_CMTD         ));
7457    WrtHrTrc('   bal_NET_PAYE_TXB_INC_CMTD:     '||to_char(bal_NET_PAYE_TXB_INC_CMTD    ));
7458 
7459    WrtHrTrc('   bal_MED_AID_TAX_CR_CMTD:       '||to_char(bal_MED_AID_TAX_CR_CMTD    ));
7460    WrtHrTrc('   bal_MED_AID_TAX_CR_CYTD:       '||to_char(bal_MED_AID_TAX_CR_CYTD    ));
7461    WrtHrTrc('   bal_MED_AID_TAX_CR_RUN:        '||to_char(bal_MED_AID_TAX_CR_RUN     ));
7462    WrtHrTrc('   bal_MED_AID_TAX_CR_PTD:        '||to_char(bal_MED_AID_TAX_CR_PTD     ));
7463    WrtHrTrc('   bal_MED_AID_TAX_CR_YTD:        '||to_char(bal_MED_AID_TAX_CR_YTD     ));
7464    WrtHrTrc('   bal_ANN_MED_AID_TAX_CR_CMTD:   '||to_char(bal_ANN_MED_AID_TAX_CR_CMTD ));
7465    WrtHrTrc('   bal_ANN_MED_AID_TAX_CR_CYTD:   '||to_char(bal_ANN_MED_AID_TAX_CR_CYTD ));
7466    WrtHrTrc('   bal_ANN_MED_AID_TAX_CR_RUN:    '||to_char(bal_ANN_MED_AID_TAX_CR_RUN  ));
7467    WrtHrTrc('   bal_ANN_MED_AID_TAX_CR_PTD:    '||to_char(bal_ANN_MED_AID_TAX_CR_PTD  ));
7468    WrtHrTrc('   bal_ANN_MED_AID_TAX_CR_YTD:    '||to_char(bal_ANN_MED_AID_TAX_CR_YTD  ));
7469    WrtHrTrc('   bal_MED_AID_TAX_CR_USED_CMTD:  '||to_char(bal_MED_AID_TAX_CR_USED_CMTD));
7470    WrtHrTrc('   bal_MED_AID_TAX_CR_USED_CYTD:  '||to_char(bal_MED_AID_TAX_CR_USED_CYTD));
7471    WrtHrTrc('   bal_MED_AID_TAX_CR_USED_RUN:   '||to_char(bal_MED_AID_TAX_CR_USED_RUN ));
7472    WrtHrTrc('   bal_MED_AID_TAX_CR_USED_PTD:   '||to_char(bal_MED_AID_TAX_CR_USED_PTD ));
7473    WrtHrTrc('   bal_MED_AID_TAX_CR_USED_YTD:   '||to_char(bal_MED_AID_TAX_CR_USED_YTD ));
7474 
7475    WrtHrTrc('   bal_MED_TAX_CR_USED_NI_CMTD :  '||to_char(bal_MED_TAX_CR_USED_NI_CMTD  ));
7476    WrtHrTrc('   bal_MED_TAX_CR_USED_NI_CYTD :  '||to_char(bal_MED_TAX_CR_USED_NI_CYTD  ));
7477    WrtHrTrc('   bal_MED_TAX_CR_USED_NI_RUN  :  '||to_char(bal_MED_TAX_CR_USED_NI_RUN   ));
7478    WrtHrTrc('   bal_MED_TAX_CR_USED_NI_PTD  :  '||to_char(bal_MED_TAX_CR_USED_NI_PTD   ));
7479    WrtHrTrc('   bal_MED_TAX_CR_USED_NI_YTD  :  '||to_char(bal_MED_TAX_CR_USED_NI_YTD   ));
7480    WrtHrTrc('   bal_MED_TAX_CR_USED_FB_CMTD :  '||to_char(bal_MED_TAX_CR_USED_FB_CMTD  ));
7481    WrtHrTrc('   bal_MED_TAX_CR_USED_FB_CYTD :  '||to_char(bal_MED_TAX_CR_USED_FB_CYTD  ));
7482    WrtHrTrc('   bal_MED_TAX_CR_USED_FB_RUN  :  '||to_char(bal_MED_TAX_CR_USED_FB_RUN   ));
7483    WrtHrTrc('   bal_MED_TAX_CR_USED_FB_PTD  :  '||to_char(bal_MED_TAX_CR_USED_FB_PTD   ));
7484    WrtHrTrc('   bal_MED_TAX_CR_USED_FB_YTD  :  '||to_char(bal_MED_TAX_CR_USED_FB_YTD   ));
7485    WrtHrTrc('   bal_MED_TAX_CR_USED_TA_CMTD :  '||to_char(bal_MED_TAX_CR_USED_TA_CMTD  ));
7486    WrtHrTrc('   bal_MED_TAX_CR_USED_TA_CYTD :  '||to_char(bal_MED_TAX_CR_USED_TA_CYTD  ));
7487    WrtHrTrc('   bal_MED_TAX_CR_USED_TA_RUN  :  '||to_char(bal_MED_TAX_CR_USED_TA_RUN   ));
7488    WrtHrTrc('   bal_MED_TAX_CR_USED_TA_PTD  :  '||to_char(bal_MED_TAX_CR_USED_TA_PTD   ));
7489    WrtHrTrc('   bal_MED_TAX_CR_USED_TA_YTD  :  '||to_char(bal_MED_TAX_CR_USED_TA_YTD   ));
7490    WrtHrTrc('   bal_MED_TAX_CR_USED_BP_CMTD :  '||to_char(bal_MED_TAX_CR_USED_BP_CMTD  ));
7491    WrtHrTrc('   bal_MED_TAX_CR_USED_BP_CYTD :  '||to_char(bal_MED_TAX_CR_USED_BP_CYTD  ));
7492    WrtHrTrc('   bal_MED_TAX_CR_USED_BP_RUN  :  '||to_char(bal_MED_TAX_CR_USED_BP_RUN   ));
7493    WrtHrTrc('   bal_MED_TAX_CR_USED_BP_PTD  :  '||to_char(bal_MED_TAX_CR_USED_BP_PTD   ));
7494    WrtHrTrc('   bal_MED_TAX_CR_USED_BP_YTD  :  '||to_char(bal_MED_TAX_CR_USED_BP_YTD   ));
7495    WrtHrTrc('   bal_MED_TAX_CR_USED_AB_CMTD :  '||to_char(bal_MED_TAX_CR_USED_AB_CMTD  ));
7496    WrtHrTrc('   bal_MED_TAX_CR_USED_AB_CYTD :  '||to_char(bal_MED_TAX_CR_USED_AB_CYTD  ));
7497    WrtHrTrc('   bal_MED_TAX_CR_USED_AB_RUN  :  '||to_char(bal_MED_TAX_CR_USED_AB_RUN   ));
7498    WrtHrTrc('   bal_MED_TAX_CR_USED_AB_PTD  :  '||to_char(bal_MED_TAX_CR_USED_AB_PTD   ));
7499    WrtHrTrc('   bal_MED_TAX_CR_USED_AB_YTD  :  '||to_char(bal_MED_TAX_CR_USED_AB_YTD   ));
7500    WrtHrTrc('   bal_MED_TAX_CR_USED_AP_CMTD :  '||to_char(bal_MED_TAX_CR_USED_AP_CMTD  ));
7501    WrtHrTrc('   bal_MED_TAX_CR_USED_AP_CYTD :  '||to_char(bal_MED_TAX_CR_USED_AP_CYTD  ));
7502    WrtHrTrc('   bal_MED_TAX_CR_USED_AP_RUN  :  '||to_char(bal_MED_TAX_CR_USED_AP_RUN   ));
7503    WrtHrTrc('   bal_MED_TAX_CR_USED_AP_PTD  :  '||to_char(bal_MED_TAX_CR_USED_AP_PTD   ));
7504    WrtHrTrc('   bal_MED_TAX_CR_USED_AP_YTD  :  '||to_char(bal_MED_TAX_CR_USED_AP_YTD   ));
7505    WrtHrTrc('   bal_MED_TAX_CR_USED_PO_CMTD :  '||to_char(bal_MED_TAX_CR_USED_PO_CMTD  ));
7506    WrtHrTrc('   bal_MED_TAX_CR_USED_PO_CYTD :  '||to_char(bal_MED_TAX_CR_USED_PO_CYTD  ));
7507    WrtHrTrc('   bal_MED_TAX_CR_USED_PO_RUN  :  '||to_char(bal_MED_TAX_CR_USED_PO_RUN   ));
7508    WrtHrTrc('   bal_MED_TAX_CR_USED_PO_PTD  :  '||to_char(bal_MED_TAX_CR_USED_PO_PTD   ));
7509    WrtHrTrc('   bal_MED_TAX_CR_USED_PO_YTD  :  '||to_char(bal_MED_TAX_CR_USED_PO_YTD   ));
7510    WrtHrTrc('   bal_MED_TAX_CR_USED_NG_CMTD :  '||to_char(bal_MED_TAX_CR_USED_NG_CMTD  ));
7511    WrtHrTrc('   bal_MED_TAX_CR_USED_NG_CYTD :  '||to_char(bal_MED_TAX_CR_USED_NG_CYTD  ));
7512    WrtHrTrc('   bal_MED_TAX_CR_USED_NG_RUN  :  '||to_char(bal_MED_TAX_CR_USED_NG_RUN   ));
7513    WrtHrTrc('   bal_MED_TAX_CR_USED_NG_PTD  :  '||to_char(bal_MED_TAX_CR_USED_NG_PTD   ));
7514    WrtHrTrc('   bal_MED_TAX_CR_USED_NG_YTD  :  '||to_char(bal_MED_TAX_CR_USED_NG_YTD   ));
7515    WrtHrTrc('   bal_MED_TAX_CR_USED_EE_CMTD :  '||to_char(bal_MED_TAX_CR_USED_EE_CMTD  ));
7516    WrtHrTrc('   bal_MED_TAX_CR_USED_EE_CYTD :  '||to_char(bal_MED_TAX_CR_USED_EE_CYTD  ));
7517    WrtHrTrc('   bal_MED_TAX_CR_USED_EE_RUN  :  '||to_char(bal_MED_TAX_CR_USED_EE_RUN   ));
7518    WrtHrTrc('   bal_MED_TAX_CR_USED_EE_PTD  :  '||to_char(bal_MED_TAX_CR_USED_EE_PTD   ));
7519    WrtHrTrc('   bal_MED_TAX_CR_USED_EE_YTD  :  '||to_char(bal_MED_TAX_CR_USED_EE_YTD   ));
7520    WrtHrTrc('   bal_PAYE_YTD:                  '||to_char(bal_PAYE_YTD                 ));
7521    WrtHrTrc('   bal_SITE_YTD:                  '||to_char(bal_SITE_YTD                 ));
7522    WrtHrTrc('   bal_TAX_YTD:                   '||to_char(bal_TAX_YTD                  ));
7523    WrtHrTrc('   bal_TX_ON_AB_PTD:              '||to_char(bal_TX_ON_AB_PTD             ));
7524    WrtHrTrc('   bal_TX_ON_AB_YTD:              '||to_char(bal_TX_ON_AB_YTD             ));
7525    WrtHrTrc('   bal_TX_ON_AP_PTD:              '||to_char(bal_TX_ON_AP_PTD             ));
7526    WrtHrTrc('   bal_TX_ON_AP_YTD:              '||to_char(bal_TX_ON_AP_YTD             ));
7527    WrtHrTrc('   bal_TX_ON_BP_PTD:              '||to_char(bal_TX_ON_BP_PTD             ));
7528    WrtHrTrc('   bal_TX_ON_BP_YTD:              '||to_char(bal_TX_ON_BP_YTD             ));
7529    WrtHrTrc('   bal_TX_ON_TA_PTD:              '||to_char(bal_TX_ON_TA_PTD             ));
7530    WrtHrTrc('   bal_TX_ON_TA_YTD:              '||to_char(bal_TX_ON_TA_YTD             ));
7531    WrtHrTrc('   bal_TX_ON_DR_PTD:              '||to_char(bal_TX_ON_DR_PTD             ));
7532    WrtHrTrc('   bal_TX_ON_DR_YTD:              '||to_char(bal_TX_ON_DR_YTD             ));
7533    WrtHrTrc('   bal_TX_ON_FB_PTD:              '||to_char(bal_TX_ON_FB_PTD             ));
7534    WrtHrTrc('   bal_TX_ON_FB_YTD:              '||to_char(bal_TX_ON_FB_YTD             ));
7535    WrtHrTrc('   bal_TX_ON_NI_PTD:              '||to_char(bal_TX_ON_NI_PTD             ));
7536    WrtHrTrc('   bal_TX_ON_NI_YTD:              '||to_char(bal_TX_ON_NI_YTD             ));
7537    WrtHrTrc('   bal_TX_ON_PO_PTD:              '||to_char(bal_TX_ON_PO_PTD             ));
7538    WrtHrTrc('   bal_TX_ON_PO_YTD:              '||to_char(bal_TX_ON_PO_YTD             ));
7539    WrtHrTrc('   bal_TX_ON_LS_PTD:              '||to_char(bal_TX_ON_LS_PTD             ));
7540    WrtHrTrc('   bal_TX_ON_RET_LS_PTD:          '||to_char(bal_TX_ON_RET_LS_PTD         ));
7541     /* NTG */
7542    WrtHrTrc('   bal_TX_ON_AP_NTG_PTD:          '||to_char(bal_TX_ON_AP_NTG_PTD         ));
7543    WrtHrTrc('   bal_TX_ON_AP_NTG_YTD:          '||to_char(bal_TX_ON_AP_NTG_YTD         ));
7544    WrtHrTrc('   bal_TX_ON_EE_DBT_NTG_PTD:      '||to_char(bal_TX_ON_EE_DBT_NTG_PTD     ));
7545    WrtHrTrc('   bal_TX_ON_EE_DBT_NTG_YTD:      '||to_char(bal_TX_ON_EE_DBT_NTG_YTD     ));
7546    /* End NTG */
7547    WrtHrTrc('   bal_TOT_INC_PTD:               '||to_char(bal_TOT_INC_PTD              ));
7548    WrtHrTrc('   bal_TOT_INC_YTD:               '||to_char(bal_TOT_INC_YTD              ));
7549    WrtHrTrc('   bal_TOT_NRFI_AN_INC_CMTD:      '||to_char(bal_TOT_NRFI_AN_INC_CMTD     ));
7550    WrtHrTrc('   bal_TOT_NRFI_AN_INC_CYTD:      '||to_char(bal_TOT_NRFI_AN_INC_CYTD     ));
7551    WrtHrTrc('   bal_TOT_NRFI_AN_INC_RUN:       '||to_char(bal_TOT_NRFI_AN_INC_RUN      ));
7552    WrtHrTrc('   bal_TOT_NRFI_AN_INC_PTD:       '||to_char(bal_TOT_NRFI_AN_INC_PTD      ));
7553    WrtHrTrc('   bal_TOT_NRFI_AN_INC_YTD:       '||to_char(bal_TOT_NRFI_AN_INC_YTD      ));
7554    WrtHrTrc('   bal_TOT_NRFI_INC_CMTD:         '||to_char(bal_TOT_NRFI_INC_CMTD        ));
7555    WrtHrTrc('   bal_TOT_NRFI_INC_CYTD:         '||to_char(bal_TOT_NRFI_INC_CYTD        ));
7556    WrtHrTrc('   bal_TOT_NRFI_INC_RUN:          '||to_char(bal_TOT_NRFI_INC_RUN         ));
7557    WrtHrTrc('   bal_TOT_NRFI_INC_PTD:          '||to_char(bal_TOT_NRFI_INC_PTD         ));
7558    WrtHrTrc('   bal_TOT_NRFI_INC_YTD:          '||to_char(bal_TOT_NRFI_INC_YTD         ));
7559    WrtHrTrc('   bal_TOT_RFI_AN_INC_CMTD:       '||to_char(bal_TOT_RFI_AN_INC_CMTD      ));
7560    WrtHrTrc('   bal_TOT_RFI_AN_INC_CYTD:       '||to_char(bal_TOT_RFI_AN_INC_CYTD      ));
7561    WrtHrTrc('   bal_TOT_RFI_AN_INC_RUN:        '||to_char(bal_TOT_RFI_AN_INC_RUN       ));
7562    WrtHrTrc('   bal_TOT_RFI_AN_INC_PTD:        '||to_char(bal_TOT_RFI_AN_INC_PTD       ));
7563    WrtHrTrc('   bal_TOT_RFI_AN_INC_YTD:        '||to_char(bal_TOT_RFI_AN_INC_YTD       ));
7564    WrtHrTrc('   bal_TOT_RFI_INC_CMTD:          '||to_char(bal_TOT_RFI_INC_CMTD         ));
7565    WrtHrTrc('   bal_TOT_RFI_INC_CYTD:          '||to_char(bal_TOT_RFI_INC_CYTD         ));
7566    WrtHrTrc('   bal_TOT_RFI_INC_RUN:           '||to_char(bal_TOT_RFI_INC_RUN          ));
7567    WrtHrTrc('   bal_TOT_RFI_INC_PTD:           '||to_char(bal_TOT_RFI_INC_PTD          ));
7568    WrtHrTrc('   bal_TOT_RFI_INC_YTD:           '||to_char(bal_TOT_RFI_INC_YTD          ));
7569    --NTG
7570    WrtHrTrc('   bal_TOT_RFI_EE_DBT_NTG_CMTD:   '||to_char(bal_TOT_RFI_EE_DBT_NTG_CMTD  ));
7571    WrtHrTrc('   bal_TOT_RFI_EE_DBT_NTG_CYTD:   '||to_char(bal_TOT_RFI_EE_DBT_NTG_CYTD  ));
7572    WrtHrTrc('   bal_TOT_RFI_EE_DBT_NTG_RUN:    '||to_char(bal_TOT_RFI_EE_DBT_NTG_RUN   ));
7573    WrtHrTrc('   bal_TOT_RFI_EE_DBT_NTG_PTD:    '||to_char(bal_TOT_RFI_EE_DBT_NTG_PTD   ));
7574    WrtHrTrc('   bal_TOT_RFI_EE_DBT_NTG_YTD:    '||to_char(bal_TOT_RFI_EE_DBT_NTG_YTD   ));
7575    WrtHrTrc('   bal_TOT_NRFI_EE_DBT_NTG_CMTD:  '||to_char(bal_TOT_NRFI_EE_DBT_NTG_CMTD ));
7576    WrtHrTrc('   bal_TOT_NRFI_EE_DBT_NTG_CYTD:  '||to_char(bal_TOT_NRFI_EE_DBT_NTG_CYTD ));
7577    WrtHrTrc('   bal_TOT_NRFI_EE_DBT_NTG_RUN:   '||to_char(bal_TOT_NRFI_EE_DBT_NTG_RUN  ));
7578    WrtHrTrc('   bal_TOT_NRFI_EE_DBT_NTG_PTD:   '||to_char(bal_TOT_NRFI_EE_DBT_NTG_PTD  ));
7579    WrtHrTrc('   bal_TOT_NRFI_EE_DBT_NTG_YTD:   '||to_char(bal_TOT_NRFI_EE_DBT_NTG_YTD  ));
7580    WrtHrTrc('   bal_TOT_SKL_ANN_INC_NTG_CMTD:  '||to_char(bal_TOT_SKL_ANN_INC_NTG_CMTD));
7581    -- End NTG
7582 
7583    WrtHrTrc('   bal_TOT_SEA_WRK_DYS_WRK_YTD:   '||to_char(bal_TOT_SEA_WRK_DYS_WRK_YTD  ));
7584    WrtHrTrc('   bal_TOT_SKL_ANN_INC_CMTD:      '||to_char(bal_TOT_SKL_ANN_INC_CMTD     ));
7585    WrtHrTrc('   bal_TOT_SKL_INC_CMTD:          '||to_char(bal_TOT_SKL_INC_CMTD         ));
7586    WrtHrTrc('   bal_GROSS_REMUNERATION_CMTD:   '||to_char(bal_GROSS_REMUNERATION_CMTD  ));
7587    WrtHrTrc('   bal_ANN_PAYMENTS_CMTD:         '||to_char(bal_ANN_PAYMENTS_CMTD        ));
7588    WrtHrTrc('   bal_TOT_TXB_INC_ITD:           '||to_char(bal_TOT_TXB_INC_ITD          ));
7589    WrtHrTrc('   bal_TOT_TXB_AB_CMTD:           '||to_char(bal_TOT_TXB_AB_CMTD          ));
7590    WrtHrTrc('   bal_TOT_TXB_AB_RUN:            '||to_char(bal_TOT_TXB_AB_RUN           ));
7591    WrtHrTrc('   bal_TOT_TXB_AB_PTD:            '||to_char(bal_TOT_TXB_AB_PTD           ));
7592    WrtHrTrc('   bal_TOT_TXB_AB_YTD:            '||to_char(bal_TOT_TXB_AB_YTD           ));
7593    WrtHrTrc('   bal_TOT_TXB_AP_CMTD:           '||to_char(bal_TOT_TXB_AP_CMTD          ));
7594    WrtHrTrc('   bal_TOT_TXB_AP_RUN:            '||to_char(bal_TOT_TXB_AP_RUN           ));
7595    WrtHrTrc('   bal_TOT_TXB_AP_PTD:            '||to_char(bal_TOT_TXB_AP_PTD           ));
7596    WrtHrTrc('   bal_TOT_TXB_AP_YTD:            '||to_char(bal_TOT_TXB_AP_YTD           ));
7597    WrtHrTrc('   bal_TOT_TXB_FB_CMTD:           '||to_char(bal_TOT_TXB_FB_CMTD          ));
7598    WrtHrTrc('   bal_TOT_TXB_FB_CYTD:           '||to_char(bal_TOT_TXB_FB_CYTD          ));
7599    WrtHrTrc('   bal_TOT_TXB_FB_RUN:            '||to_char(bal_TOT_TXB_FB_RUN           ));
7600    WrtHrTrc('   bal_TOT_TXB_FB_PTD:            '||to_char(bal_TOT_TXB_FB_PTD           ));
7601    WrtHrTrc('   bal_TOT_TXB_FB_YTD:            '||to_char(bal_TOT_TXB_FB_YTD           ));
7602    WrtHrTrc('   bal_TOT_TXB_NI_CMTD:           '||to_char(bal_TOT_TXB_NI_CMTD          ));
7603    WrtHrTrc('   bal_TOT_TXB_NI_CYTD:           '||to_char(bal_TOT_TXB_NI_CYTD          ));
7604    WrtHrTrc('   bal_TOT_TXB_NI_RUN:            '||to_char(bal_TOT_TXB_NI_RUN           ));
7605    WrtHrTrc('   bal_TOT_TXB_NI_PTD:            '||to_char(bal_TOT_TXB_NI_PTD           ));
7606    WrtHrTrc('   bal_TOT_TXB_NI_YTD:            '||to_char(bal_TOT_TXB_NI_YTD           ));
7607    WrtHrTrc('   bal_TOT_TXB_PO_CMTD:           '||to_char(bal_TOT_TXB_PO_CMTD          ));
7608    WrtHrTrc('   bal_TOT_TXB_PO_RUN:            '||to_char(bal_TOT_TXB_PO_RUN           ));
7609    WrtHrTrc('   bal_TOT_TXB_PO_PTD:            '||to_char(bal_TOT_TXB_PO_PTD           ));
7610    WrtHrTrc('   bal_TOT_TXB_PO_YTD:            '||to_char(bal_TOT_TXB_PO_YTD           ));
7611    WrtHrTrc('   bal_TOT_TXB_TA_CMTD:           '||to_char(bal_TOT_TXB_TA_CMTD          ));
7612    WrtHrTrc('   bal_TOT_TXB_TA_CYTD:           '||to_char(bal_TOT_TXB_TA_CYTD          ));
7613    WrtHrTrc('   bal_TOT_TXB_TA_RUN:            '||to_char(bal_TOT_TXB_TA_RUN          ));
7614    WrtHrTrc('   bal_TOT_TXB_TA_PTD:            '||to_char(bal_TOT_TXB_TA_PTD           ));
7615    WrtHrTrc('   bal_TOT_TXB_TA_YTD:            '||to_char(bal_TOT_TXB_TA_YTD           ));
7616    /* NTG */
7617    WrtHrTrc('   bal_TOT_TXB_AP_NTG_CMTD:       '||to_char(bal_TOT_TXB_AP_NTG_CMTD      ));
7618    WrtHrTrc('   bal_TOT_TXB_AP_NTG_RUN:        '||to_char(bal_TOT_TXB_AP_NTG_RUN       ));
7619    WrtHrTrc('   bal_TOT_TXB_AP_NTG_PTD:        '||to_char(bal_TOT_TXB_AP_NTG_PTD       ));
7620    WrtHrTrc('   bal_TOT_TXB_AP_NTG_YTD:        '||to_char(bal_TOT_TXB_AP_NTG_YTD       ));
7621    WrtHrTrc('   bal_TOT_TXB_EE_DBT_NTG_CMTD:   '||to_char(bal_TOT_TXB_EE_DBT_NTG_CMTD  ));
7622    WrtHrTrc('   bal_TOT_TXB_EE_DBT_NTG_RUN:    '||to_char(bal_TOT_TXB_EE_DBT_NTG_RUN   ));
7623    WrtHrTrc('   bal_TOT_TXB_EE_DBT_NTG_PTD:    '||to_char(bal_TOT_TXB_EE_DBT_NTG_PTD   ));
7624    WrtHrTrc('   bal_TOT_TXB_EE_DBT_NTG_YTD:    '||to_char(bal_TOT_TXB_EE_DBT_NTG_YTD   ));
7625    /* Medical Aid Employer Contribution */
7626    WrtHrTrc('   bal_ER_MED_CONTR_CMTD:         '||to_char(bal_ER_MED_CONTR_CMTD           ));
7627    WrtHrTrc('   bal_ER_MED_CONTR_CYTD:         '||to_char(bal_ER_MED_CONTR_CYTD           ));
7628    WrtHrTrc('   bal_ER_MED_CONTR_RUN:          '||to_char(bal_ER_MED_CONTR_RUN            ));
7629    WrtHrTrc('   bal_ER_MED_CONTR_PTD:          '||to_char(bal_ER_MED_CONTR_PTD            ));
7630    WrtHrTrc('   bal_ER_MED_CONTR_YTD:          '||to_char(bal_ER_MED_CONTR_YTD            ));
7631 -- Bug 14024624
7632    WrtHrTrc('   bal_MED_TAX_CR_USED_DR_CMTD :  '||to_char(bal_MED_TAX_CR_USED_DR_CMTD  ));
7633    WrtHrTrc('   bal_MED_TAX_CR_USED_DR_CYTD :  '||to_char(bal_MED_TAX_CR_USED_DR_CYTD  ));
7634    WrtHrTrc('   bal_MED_TAX_CR_USED_DR_RUN  :  '||to_char(bal_MED_TAX_CR_USED_DR_RUN   ));
7635    WrtHrTrc('   bal_MED_TAX_CR_USED_DR_PTD  :  '||to_char(bal_MED_TAX_CR_USED_DR_PTD   ));
7636    WrtHrTrc('   bal_MED_TAX_CR_USED_DR_YTD  :  '||to_char(bal_MED_TAX_CR_USED_DR_YTD   ));
7637 -- Bug 14024624
7638    WrtHrTrc('   bal_MED_TAX_CR_USED_LS_PTD  :  '||to_char(bal_MED_AID_TAX_CR_USED_LS_PTD ));
7639    WrtHrTrc('   bal_MED_TAX_CR_USED_LS_YTD  :  '||to_char(bal_MED_AID_TAX_CR_USED_LS_YTD ));
7640 
7641    WrtHrTrc('   bal_TX_ON_LS_RUN:              '||to_char(bal_TX_ON_LS_RUN             ));
7642    WrtHrTrc('   bal_TX_ON_LS_YTD:              '||to_char(bal_TX_ON_LS_YTD             ));
7643 
7644 -- Bug 14168167
7645    WrtHrTrc('   bal_MED_EMP_NRFI_ASG_RUN:      '||to_char(bal_MED_EMP_NRFI_ASG_RUN     ));
7646    WrtHrTrc('   bal_MED_EMP_NRFI_ASG_TAX_PTD:  '||to_char(bal_MED_EMP_NRFI_ASG_TAX_PTD ));
7647    WrtHrTrc('   bal_MED_EMP_NRFI_ASG_TAX_YTD:  '||to_char(bal_MED_EMP_NRFI_ASG_TAX_YTD ));
7648 
7649    WrtHrTrc('   bal_MED_EMP_PKG_ASG_RUN:       '||to_char(bal_MED_EMP_PKG_ASG_RUN      ));
7650    WrtHrTrc('   bal_MED_EMP_PKG_ASG_TAX_PTD:   '||to_char(bal_MED_EMP_PKG_ASG_TAX_PTD  ));
7651    WrtHrTrc('   bal_MED_EMP_PKG_ASG_TAX_YTD:   '||to_char(bal_MED_EMP_PKG_ASG_TAX_YTD  ));
7652 
7653    WrtHrTrc('   bal_MED_EMP_RFI_ASG_RUN:       '||to_char(bal_MED_EMP_RFI_ASG_RUN       ));
7654    WrtHrTrc('   bal_MED_EMP_RFI_ASG_TAX_PTD:   '||to_char(bal_MED_EMP_RFI_ASG_TAX_PTD   ));
7655    WrtHrTrc('   bal_MED_EMP_RFI_ASG_TAX_YTD:   '||to_char(bal_MED_EMP_RFI_ASG_TAX_YTD   ));
7656 -- Bug 14168167
7657 
7658    WrtHrTrc('   l_65Year:                      '||to_char(l_65Year,'DD/MM/YYYY'        ));
7659 
7660    /* End NTG */
7661 
7662    hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',1);
7663 
7664 -- Initialise Package Globals
7665 -- Contexts
7666    con_ASG_ACT_ID := ASSIGNMENT_ACTION_ID;
7667    con_ASG_ID     := ASSIGNMENT_ID;
7668    con_PRL_ACT_ID := PAYROLL_ACTION_ID;
7669    con_PRL_ID     := PAYROLL_ID;
7670 
7671    hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',2);
7672 
7673    trc_MedTxCrUsedDR := 0;
7674    trc_MedTxCrUsedNI := 0;
7675    trc_MedTxCrUsedFB := 0;
7676    trc_MedTxCrUsedTA := 0;
7677    trc_MedTxCrUsedBP := 0;
7678    trc_MedTxCrUsedAB := 0;
7679    trc_MedTxCrUsedAP := 0;
7680    trc_MedTxCrUsedPO := 0;
7681    trc_MedTxCrUsedNtgAP := 0;
7682    trc_MedTxCrUsedNtgEEDbt := 0;
7683    trc_MedTxCrUsedNtgAP_Upd := 0;
7684    trc_MedTxCrUsedNtgEEDbt_Upd := 0;
7685 
7686    trc_MedTxCrUsed_Upd           :=0;
7687    trc_MedTxCrUsedDR_Upd         :=0;
7688    trc_MedTxCrUsedNI_Upd         :=0;
7689    trc_MedTxCrUsedFB_Upd         :=0;
7690    trc_MedTxCrUsedTA_Upd         :=0;
7691    trc_MedTxCrUsedBP_Upd         :=0;
7692    trc_MedTxCrUsedAB_Upd         :=0;
7693    trc_MedTxCrUsedAP_Upd         :=0;
7694    trc_MedTxCrUsedPO_Upd         :=0;
7695    trc_MedTxCrUsedNtgAP_Upd      :=0;
7696    trc_MedTxCrUsedNtgEEDbt_Upd   :=0;
7697 
7698    trc_LibFpDR_Upd           :=0;
7699    trc_LibFyNI_Upd           :=0;
7700    trc_LibFpNI_Upd           :=0;
7701    trc_LibFyFB_Upd           :=0;
7702    trc_LibFpFB_Upd           :=0;
7703    trc_LibFyTA_Upd           :=0;
7704    trc_LibFpTA_Upd           :=0;
7705    trc_LibFyBP_Upd           :=0;
7706    trc_LibFpBP_Upd           :=0;
7707    trc_LibFyAB_Upd           :=0;
7708    trc_LibFpAB_Upd           :=0;
7709    trc_LibFyAP_Upd           :=0;
7710    trc_LibFpAP_Upd           :=0;
7711    trc_LibFyPO_Upd           :=0;
7712    trc_LibFpPO_Upd           :=0;
7713    trc_LibFpNtgAP_Upd        :=0;
7714    trc_LibFpNtgEEDbt_Upd     :=0;
7715 
7716    trc_TotLibBse_Upd         :=0;
7717    trc_TotLibNI_Upd          :=0;
7718    trc_TotLibFB_Upd          :=0;
7719    trc_TotLibTA_Upd          :=0;
7720    trc_TotLibBP_Upd          :=0;
7721    trc_TotLibAB_Upd          :=0;
7722    trc_TotLibAP_Upd          :=0;
7723    trc_TotLibPO_Upd          :=0;
7724 
7725 --  Bug  13777759
7726 -- To handle the Medical Tax Credit previous implementation
7727 -- Where individual balances were not present
7728    p_MedCrUsed := 0;
7729 
7730    l_MdTxCrdtUDR_Adj  := 0;
7731    l_MdTxCrdtUNi_Adj  := 0;
7732    l_MdTxCrdtUFB_Adj  := 0;
7733    l_MdTxCrdtUTA_Adj  := 0;
7734    l_MdTxCrdtUBP_Adj  := 0;
7735    l_MdTxCrdtUAB_Adj  := 0;
7736    l_MdTxCrdtUAP_Adj  := 0;
7737    l_MdTxCrdtUPO_Adj  := 0;
7738    l_MdTxCrdtUNG_Adj  := 0;
7739    l_MdTxCrdtUEE_Adj  := 0;
7740 
7741    trc_curMedTxCrEle  := 0;
7742    trc_LSDirTab.delete;
7743 
7744 -- Only If the employee is below 65 year the Medical Tax credit Should be calculated
7745 -- So making the Available Medical Tax Credit as Zero for others.
7746    IF l_65Year <= dbi_ZA_TX_YR_END or py_za_tx_utl_01032012.AllowRefund(p_65Year => l_65Year) THEN
7747       bal_MED_AID_TAX_CR_CMTD      := 0;
7748       bal_MED_AID_TAX_CR_CYTD      := 0;
7749       bal_MED_AID_TAX_CR_RUN       := 0;
7750       bal_MED_AID_TAX_CR_PTD       := 0;
7751       bal_MED_AID_TAX_CR_YTD       := 0;
7752       bal_ANN_MED_AID_TAX_CR_CMTD  := 0;
7753       bal_ANN_MED_AID_TAX_CR_CYTD  := 0;
7754       bal_ANN_MED_AID_TAX_CR_RUN   := 0;
7755       bal_ANN_MED_AID_TAX_CR_PTD   := 0;
7756       bal_ANN_MED_AID_TAX_CR_YTD   := 0;
7757 
7758       WrtHrTrc('            Employee Above 65:'||to_char(bal_ER_MED_CONTR_PTD));
7759       WrtHrTrc('                     l_65Year:'||to_char(l_65Year));
7760       WrtHrTrc('       bal_MED_AID_TAX_CR_YTD:'||to_char(bal_ER_MED_CONTR_PTD));
7761       WrtHrTrc('   bal_ANN_MED_AID_TAX_CR_YTD:'||to_char(bal_ER_MED_CONTR_YTD));
7762 
7763    END IF;
7764 
7765    IF bal_MED_AID_TAX_CR_USED_YTD  > 0 AND
7766       bal_MED_TAX_CR_USED_DR_YTD = 0   AND
7767       bal_MED_AID_TAX_CR_USED_LS_YTD = 0 AND
7768       bal_MED_TAX_CR_USED_NI_YTD  = 0 AND
7769       bal_MED_TAX_CR_USED_FB_YTD  = 0 AND
7770       bal_MED_TAX_CR_USED_TA_YTD  = 0 AND
7771       bal_MED_TAX_CR_USED_BP_YTD  = 0 AND
7772       bal_MED_TAX_CR_USED_AB_YTD  = 0 AND
7773       bal_MED_TAX_CR_USED_AP_YTD  = 0 AND
7774       bal_MED_TAX_CR_USED_PO_YTD  = 0 AND
7775       bal_MED_TAX_CR_USED_NG_YTD  = 0 AND
7776       bal_MED_TAX_CR_USED_EE_YTD  = 0 THEN
7777 
7778       if bal_TOT_TXB_NI_YTD - bal_TOT_TXB_NI_RUN > 0 and p_MedCrUsed = 0 then
7779          bal_MED_TAX_CR_USED_NI_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7780          bal_MED_TAX_CR_USED_NI_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7781          l_MdTxCrdtUNi_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7782          p_MedCrUsed       := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7783       end if;
7784 
7785       if bal_TOT_TXB_FB_YTD - bal_TOT_TXB_FB_RUN> 0 and p_MedCrUsed = 0 then
7786          bal_MED_TAX_CR_USED_FB_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7787          bal_MED_TAX_CR_USED_FB_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7788          l_MdTxCrdtUFB_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7789          p_MedCrUsed       := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7790       end if;
7791 
7792       if bal_TOT_TXB_TA_YTD - bal_TOT_TXB_TA_RUN > 0 and p_MedCrUsed = 0 then
7793          bal_MED_TAX_CR_USED_TA_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7794          bal_MED_TAX_CR_USED_TA_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7795          l_MdTxCrdtUTA_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7796          p_MedCrUsed       := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7797       end if;
7798 
7799       if bal_BP_YTD - bal_BP_RUN > 0 and p_MedCrUsed = 0 then
7800          bal_MED_TAX_CR_USED_BP_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7801          bal_MED_TAX_CR_USED_BP_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7802          l_MdTxCrdtUBP_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7803          p_MedCrUsed       := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7804       end if;
7805 
7806 
7807       if bal_TOT_TXB_AB_YTD - bal_TOT_TXB_AB_RUN> 0 and p_MedCrUsed = 0 then
7808          bal_MED_TAX_CR_USED_AB_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7809          bal_MED_TAX_CR_USED_AB_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7810          l_MdTxCrdtUAB_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7811          p_MedCrUsed       := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7812       end if;
7813 
7814       if bal_TOT_TXB_AP_YTD - bal_TOT_TXB_AP_RUN > 0 and p_MedCrUsed = 0 then
7815          bal_MED_TAX_CR_USED_AP_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7816          bal_MED_TAX_CR_USED_AP_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7817          l_MdTxCrdtUAP_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7818          p_MedCrUsed       := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7819       end if;
7820 
7821       if bal_TOT_TXB_PO_PTD - bal_TOT_TXB_PO_RUN > 0 and p_MedCrUsed = 0 then
7822          bal_MED_TAX_CR_USED_PO_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7823          bal_MED_TAX_CR_USED_PO_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7824          l_MdTxCrdtUPO_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7825          p_MedCrUsed       := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7826       end if;
7827 
7828       if bal_TOT_TXB_AP_NTG_YTD - bal_TOT_TXB_AP_NTG_RUN > 0 and p_MedCrUsed = 0 then
7829          bal_MED_TAX_CR_USED_NG_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7830          bal_MED_TAX_CR_USED_NG_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7831          l_MdTxCrdtUNG_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7832          p_MedCrUsed       := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7833       end if;
7834 
7835       if bal_TOT_TXB_EE_DBT_NTG_YTD - bal_TOT_TXB_EE_DBT_NTG_RUN > 0 and p_MedCrUsed = 0 then
7836          bal_MED_TAX_CR_USED_EE_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7837          bal_MED_TAX_CR_USED_EE_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7838          l_MdTxCrdtUEE_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7839          p_MedCrUsed       := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7840       end if;
7841 
7842       hr_utility.set_location('      p_MedCrUsed:'||p_MedCrUsed,99);
7843       hr_utility.set_location('l_MdTxCrdtUDR_Adj:'||l_MdTxCrdtUDR_Adj,99);
7844       hr_utility.set_location('l_MdTxCrdtUNi_Adj:'||l_MdTxCrdtUNi_Adj,99);
7845       hr_utility.set_location('l_MdTxCrdtUFB_Adj:'||l_MdTxCrdtUFB_Adj,99);
7846       hr_utility.set_location('l_MdTxCrdtUAP_Adj:'||l_MdTxCrdtUAP_Adj,99);
7847       hr_utility.set_location('l_MdTxCrdtUTA_Adj:'||l_MdTxCrdtUTA_Adj,99);
7848       hr_utility.set_location('l_MdTxCrdtUBP_Adj:'||l_MdTxCrdtUBP_Adj,99);
7849       hr_utility.set_location('l_MdTxCrdtUAB_Adj:'||l_MdTxCrdtUAB_Adj,99);
7850       hr_utility.set_location('l_MdTxCrdtUNG_Adj:'||l_MdTxCrdtUNG_Adj,99);
7851       hr_utility.set_location('l_MdTxCrdtUEE_Adj:'||l_MdTxCrdtUEE_Adj,99);
7852    END IF;
7853 
7854 -- Bug 14168167
7855    IF py_za_tx_utl_01032012.AllowRefund(p_65Year => l_65Year) THEN
7856 
7857       bal_MED_AID_TAX_CR_USED_CMTD := 0;
7858       bal_MED_AID_TAX_CR_USED_CYTD := 0;
7859       bal_MED_AID_TAX_CR_USED_RUN  := 0;
7860       bal_MED_AID_TAX_CR_USED_PTD  := 0;
7861       bal_MED_AID_TAX_CR_USED_YTD  := 0;
7862 
7863    END IF;
7864 -- Bug 14168167
7865 -- Tax Override Validation
7866 --
7867    /*
7868    V = Amount
7869    P = Percentage
7870    S = Force Site Calculation
7871    */
7872 
7873 --  Added for Bug 9369895
7874 --  Retrieve the Pension Basis
7875 --  1 : Fixed Percentage of Total Package
7876 --  2 : Percentage of Specific Income
7877 --  If ZA_SPECIFIC_INFO is not filled for an assignment, we default it to Percentage of Specific Income
7878     begin
7879        select paei.AEI_INFORMATION8
7880        into   trc_PenBasis
7881        from   per_assignment_extra_info  paei
7882        where  paei.assignment_id    = con_ASG_ID
7883        and    paei.information_type = 'ZA_SPECIFIC_INFO';
7884        hr_utility.set_location('Pension Basis: '||to_char(trc_PenBasis),2);
7885     exception
7886         when others then
7887            trc_PenBasis:= 2;
7888            hr_utility.set_location('Pension Basis: '||to_char(trc_PenBasis),3);
7889     end;
7890 
7891 --  Tax Status Validation
7892 --
7893    /*
7894    A = Normal
7895    B = Provisional
7896    C = Directive Amount
7897    D = Directive Percentage
7898    E = Close Corporation
7899    F = Temporary Worker/Student
7900    G = Seasonal Worker
7901    H = Zero Tax
7902    J = Personal Service Company
7903    K = Personal Service Trust
7904    L = Labour Broker
7905    M = Private Director
7906    N = Private Director with Directive Amount
7907    P = Private Director with Directive Percentage
7908    Q = Private Director Zero Tax
7909    */
7910    hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',3);
7911 
7912 -- C = Directive Amount
7913 -- N = Private Director with Directive Amount
7914 --
7915    IF dbi_TX_STA IN ('C','N') THEN
7916       IF trc_OvrTxCalc AND (trc_OvrTyp = 'S' OR trc_OvrTyp = 'P') THEN
7917          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',4);
7918          IF xpt_Msg = 'No Error' THEN
7919             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',5);
7920             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_C';
7921          END IF;
7922          RAISE xpt_E;
7923          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',6);
7924       ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
7925          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',7);
7926          trc_CalTyp := 'OvrCalc';
7927          trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
7928       -- Check Directive Number First
7929       ELSIF dbi_TX_DIR_NUM = 'NULL' THEN
7930          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',8);
7931          IF xpt_Msg = 'No Error' THEN
7932             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',9);
7933             xpt_Msg := 'PY_ZA_TX_DIR_NUM';
7934          END IF;
7935          RAISE xpt_E;
7936       -- Check that directive value is filled in
7937       ELSIF dbi_TX_DIR_VAL = -1 THEN
7938          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',10);
7939          IF xpt_Msg = 'No Error' THEN
7940             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',11);
7941             xpt_Msg := 'PY_ZA_TX_DIR_MONT';
7942          END IF;
7943          RAISE xpt_E;
7944       ELSE
7945          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',12);
7946          trc_CalTyp := 'NoCalc';
7947          -- Liability = entered value
7948          trc_LibFpNI := dbi_TX_DIR_VAL;
7949          -- Medical Tax Credit Available
7950          trc_curMedTxCrEle := greatest(bal_MED_AID_TAX_CR_YTD + bal_ANN_MED_AID_TAX_CR_YTD - bal_MED_AID_TAX_CR_USED_YTD,0);
7951 
7952          hr_utility.set_location('trc_MedTxCr:'||trc_MedTxCr,6);
7953 
7954          -- Normal Income
7955          IF (trc_LibFpNI > 0) THEN
7956             trc_MedTxCrUsedNI := least(trc_curMedTxCrEle, trc_LibFpNI);
7957             trc_MedTxCrUsedNI_Upd := trc_MedTxCrUsedNI;
7958          END IF;
7959          trc_LibFpNI_Upd := trc_LibFpNI - trc_MedTxCrUsedNI_Upd;
7960          trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNI,0);
7961 
7962          hr_utility.set_location('trc_MedTxCrUsedNI:'||trc_MedTxCrUsedNI,9);
7963          hr_utility.set_location('trc_LibFpNI_Upd:'||trc_LibFpNI_Upd,9);
7964          hr_utility.set_location('trc_curMedTxCrEle: '||trc_curMedTxCrEle,9);
7965          hr_utility.set_location('trc_MedTxCrUsedNI_Upd: '||trc_MedTxCrUsedNI_Upd,9);
7966 
7967          trc_LibFpNI := trc_LibFpNI_Upd;
7968 
7969          -- Standard NetPay Validation
7970          py_za_tx_utl_01032012.ValidateTaxOns;
7971       END IF;
7972 -- D = Directive Percentage
7973 -- P = Private Director wth Directive Percentage
7974 --
7975    ELSIF dbi_TX_STA IN ('D','P') THEN
7976       IF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
7977          IF xpt_Msg = 'No Error' THEN
7978             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',13);
7979             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_DEF';
7980          END IF;
7981          RAISE xpt_E;
7982          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',14);
7983       ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
7984          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',15);
7985          trc_CalTyp := 'OvrCalc';
7986          trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
7987       ELSE
7988          IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
7989             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',16);
7990             trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
7991             -- Percentage taken into account in py_za_tx_utl_01032012.TaxLiability
7992          END IF;
7993          -- Check Directive Number First
7994          IF dbi_TX_DIR_NUM = 'NULL' THEN
7995             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',17);
7996             IF xpt_Msg = 'No Error' THEN
7997                hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',18);
7998                xpt_Msg := 'PY_ZA_TX_DIR_NUM';
7999             END IF;
8000             RAISE xpt_E;
8001          -- Check that directive value is filled in
8002          ELSIF dbi_TX_DIR_VAL = -1 THEN
8003             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',19);
8004             IF xpt_Msg = 'No Error' THEN
8005                hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',20);
8006                xpt_Msg := 'PY_ZA_TX_DIR_PERC';
8007             END IF;
8008             RAISE xpt_E;
8009          ELSE
8010             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',21);
8011             DirCalc;
8012          END IF;
8013       END IF;
8014 -- E = Close Corporation
8015 -- F = Temporary Worker/Student
8016 -- J = Personal Service Company
8017 -- K = Personal Service Trust
8018 -- L = Labour Broker
8019 --
8020    ELSIF dbi_TX_STA IN ('E','F','J','K','L') THEN
8021       IF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
8022          IF xpt_Msg = 'No Error' THEN
8023             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',22);
8024             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_DEF';
8025          END IF;
8026          RAISE xpt_E;
8027          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',23);
8028       ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
8029          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',24);
8030          trc_CalTyp := 'OvrCalc';
8031          trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
8032       ELSE
8033          IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
8034             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',25);
8035             trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
8036             -- Percentage taken into account in py_za_tx_utl_01032012.TaxLiability
8037          END IF;
8038          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',26);
8039          -- Simply Execute the Directive Calculation
8040          DirCalc;
8041       END IF;
8042 -- G = Seasonal Worker
8043 --
8044    ELSIF dbi_TX_STA = 'G' THEN
8045       IF trc_OvrTxCalc AND (trc_OvrTyp = 'S' OR trc_OvrTyp = 'P') THEN
8046          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',27);
8047          IF xpt_Msg = 'No Error' THEN
8048             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',28);
8049             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_G';
8050          END IF;
8051          RAISE xpt_E;
8052          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',29);
8053       -- Check that seasonal worker days worked is filled in
8054       ELSIF dbi_SEA_WRK_DYS_WRK = 0 THEN
8055          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',30);
8056          IF xpt_Msg = 'No Error' THEN
8057             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',31);
8058             xpt_Msg := 'PY_ZA_TX_SEA_WRK_DYS';
8059          END IF;
8060          RAISE xpt_E;
8061       ELSE
8062          IF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
8063             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',32);
8064             trc_CalTyp := 'OvrCalc';
8065             trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
8066             py_za_tx_utl_01032012.SetRebates;
8067          ELSE
8068             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',33);
8069             SeaCalc;
8070          END IF;
8071       END IF;
8072 -- A = Normal
8073 -- B = Provisional
8074 -- M = Private Director
8075 --
8076    ELSIF dbi_TX_STA IN ('A','B','M') THEN
8077       IF dbi_TX_STA <> 'M' THEN
8078          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',34);
8079          -- Deemed Remuneration only applicable to 'M'
8080          bal_DIR_DMD_RMN_ITD := 0;
8081       END IF;
8082 
8083       IF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
8084          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',35);
8085          trc_CalTyp := 'OvrCalc';
8086          trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
8087          py_za_tx_utl_01032012.SetRebates;
8088          trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032012.DaysWorked;
8089       ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
8090          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',36);
8091          trc_CalTyp := 'OvrCalc';
8092          trc_OvrWrn := 'WARNING: Tax Override - Forced Site Calculation';
8093          -- Force the Site Calculation
8094          SitCalc;
8095          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',37);
8096       ELSE
8097          IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
8098             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',38);
8099             trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
8100             -- Percentage taken into account in py_za_tx_utl_01032012.TaxLiability
8101          END IF;
8102 
8103          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',39);
8104          IF py_za_tx_utl_01032012.LatePayPeriod THEN
8105             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',40);
8106             LteCalc;
8107          -- Is this a SITE Period?
8108          ELSIF py_za_tx_utl_01032012.EmpTermPrePeriod THEN
8109             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',41);
8110             SitCalc;
8111          ELSIF py_za_tx_utl_01032012.LstPeriod OR py_za_tx_utl_01032012.EmpTermInPeriod THEN
8112             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',42);
8113             IF py_za_tx_utl_01032012.PreErnPeriod THEN
8114                hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',43);
8115                --When a YtdCalc or CalCalc would be performed,
8116                --the system must do a Bascalc if the method is non-cumulative
8117                IF (dbi_TX_MTD = 'N') then
8118                   BasCalc;
8119                ELSE
8120                   YtdCalc;
8121                END IF;
8122             ELSE
8123                hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',44);
8124                SitCalc;
8125             END IF;
8126          ElSE
8127             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',45);
8128             -- The employee has NOT been terminated!
8129             IF py_za_tx_utl_01032012.PreErnPeriod THEN
8130                hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',46);
8131                --When a YtdCalc or CalCalc would be performed,
8132                --the system must do a Bascalc if the method is non-cumulative
8133                IF (dbi_TX_MTD = 'N') then
8134                   BasCalc;
8135                ELSE
8136                   YtdCalc;
8137                END IF;
8138            -- Bug 4346955 Bug 5148830
8139           /*  ELSIF dbi_ZA_ASG_TX_RTR_PRD = 'Y' THEN
8140                hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',47);
8141                IF dbi_ZA_ASG_TAX_RTR_RSLTS = 'Y' THEN
8142                   hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',48);
8143                   SitCalc;
8144                ELSIF py_za_tx_utl_01032012.NegPtd THEN
8145                   hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',49);
8146                   SitCalc;
8147                ELSE
8148                   hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',50);
8149                   NorCalc;
8150                END IF; */
8151             ELSIF py_za_tx_utl_01032012.NegPtd THEN
8152                hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',51);
8153                SitCalc;
8154             ELSE
8155                hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',52);
8156                NorCalc;
8157             END IF;
8158          END IF;
8159       END IF;
8160 -- H = Zero Tax
8161 -- Q = Private Director Zero Tax
8162 --
8163    ELSIF dbi_TX_STA IN ('H','Q') THEN
8164       IF trc_OvrTxCalc THEN
8165          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',53);
8166          IF xpt_Msg = 'No Error' THEN
8167             hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',54);
8168             xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_H';
8169          END IF;
8170          RAISE xpt_E;
8171       ELSE
8172          hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',55);
8173          trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
8174          trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
8175          trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
8176          trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
8177          trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
8178          trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
8179          trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
8180          trc_MedTxCrUsedNI_Upd := -1 * bal_MED_TAX_CR_USED_NI_YTD;
8181          trc_MedTxCrUsedFB_Upd := -1 * bal_MED_TAX_CR_USED_FB_YTD;
8182          trc_MedTxCrUsedTA_Upd := -1 * bal_MED_TAX_CR_USED_TA_YTD;
8183          trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_YTD;
8184          trc_MedTxCrUsedAB_Upd := -1 * bal_MED_TAX_CR_USED_AB_YTD;
8185          trc_MedTxCrUsedAP_Upd := -1 * bal_MED_TAX_CR_USED_AP_YTD;
8186          trc_MedTxCrUsedPO_Upd := -1 * bal_MED_TAX_CR_USED_PO_YTD;
8187       END IF;
8188    ELSE
8189       hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',56);
8190           -- Bug 8691928
8191           -- Changed the way of raising exception so as to avoid
8192           -- the text from being overwritten in exception block
8193           xpt_Msg := 'Invalid Tax Status' ;
8194           RAISE xpt_E;
8195    END IF;
8196 
8197    hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',57);
8198 
8199 -- Post Calculation Steps
8200 --
8201 
8202 --
8203    l_paye := trc_LibFpDR
8204       + trc_LibFpNI
8205       + trc_LibFpFB
8206       + trc_LibFpTA
8207       + trc_LibFpBP
8208       + trc_LibFpAB
8209       + trc_LibFpAP
8210       + trc_LibFpPO
8211       + trc_LibFpNtgAP
8212       + trc_LibFpNtgEEDbt;
8213    hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012 l_paye '|| l_paye,58);
8214    l_TotMedTxCr_Upd := trc_MedTxCrUsedDR_Upd +
8215                        trc_MedTxCrUsedNI_Upd +
8216                        trc_MedTxCrUsedFB_Upd +
8217                        trc_MedTxCrUsedTA_Upd +
8218                        trc_MedTxCrUsedBP_Upd +
8219                        trc_MedTxCrUsedAB_Upd +
8220                        trc_MedTxCrUsedAP_Upd +
8221                        trc_MedTxCrUsedPO_Upd +
8222                        trc_MedTxCrUsedNtgAP_Upd +
8223                        trc_MedTxCrUsedNtgEEDbt_Upd;
8224   hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012 l_TotMedTxCr_Upd '|| l_TotMedTxCr_Upd,58);
8225 
8226 
8227   if l_paye < 0 and l_TotMedTxCr_Upd > 0 then
8228 
8229    hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',59);
8230    hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012 trc_curMedTxCrEle '|| trc_curMedTxCrEle,59);
8231     trc_curMedTxCrEle := py_za_tx_utl_01032012.AdjMACTxOns
8232         (  p_MedTxCrUsedDR_Upd       =>  trc_MedTxCrUsedDR_Upd
8233         ,  p_MedTxCrUsedNI_Upd       =>  trc_MedTxCrUsedNI_Upd
8234         ,  p_MedTxCrUsedFB_Upd       =>  trc_MedTxCrUsedFB_Upd
8235         ,  p_MedTxCrUsedTA_Upd       =>  trc_MedTxCrUsedTA_Upd
8236         ,  p_MedTxCrUsedBP_Upd       =>  trc_MedTxCrUsedBP_Upd
8237         ,  p_MedTxCrUsedAB_Upd       =>  trc_MedTxCrUsedAB_Upd
8238         ,  p_MedTxCrUsedAP_Upd       =>  trc_MedTxCrUsedAP_Upd
8239         ,  p_MedTxCrUsedPO_Upd       =>  trc_MedTxCrUsedPO_Upd
8240         ,  p_MedTxCrUsedNtgAP_Upd    =>  trc_MedTxCrUsedNtgAP_Upd
8241         ,  p_MedTxCrUsedNtgEEDbt_Upd =>  trc_MedTxCrUsedNtgEEDbt_Upd
8242         ,  p_MedTxCrAvailable        => trc_curMedTxCrEle
8243         );
8244    hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012 trc_curMedTxCrEle '|| trc_curMedTxCrEle,59);
8245   end if;
8246   l_paye :=0;
8247   l_TotMedTxCr_Upd :=0;
8248 --
8249    py_za_tx_utl_01032012.SitPaySplit;
8250 
8251    hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',58);
8252 
8253 -- Execute the Arrear Processing
8254 --
8255    IF py_za_tx_utl_01032012.SitePeriod THEN
8256       hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',59);
8257       py_za_tx_utl_01032012.ArrearExcess;
8258    END IF;
8259 
8260    hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',60);
8261 
8262 -- Calculate Net Taxable Income
8263 --
8264    NetTxbIncCalc(ASSIGNMENT_ACTION_ID);
8265 
8266    hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',61);
8267 --
8268 -- Tax on Lump Sums
8269 --
8270    -- If tax on lump sums has already been calculated
8271    -- do not return the values again by resetting the
8272    -- dbi's to their default values
8273    --
8274 
8275 -- Fix for Bug# 12351345 starts
8276 
8277 -- Added additional check in case the ptd is getting 0 value with multiple runs.
8278 
8279 hr_utility.set_location('bal_TX_ON_LS_PTD' || bal_TX_ON_LS_PTD, 1);
8280 hr_utility.set_location('con_ASG_ACT_ID' || con_ASG_ACT_ID, 1);
8281 
8282    If bal_TX_ON_LS_PTD = 0 Then
8283 
8284 -- Query to check if there are multiple runs which sets the ptd as zero
8285 
8286      Select count(*)
8287          into  l_lmsm_proc_cnt
8288          from
8289                pay_balance_feeds_f               FEED,
8290                pay_run_result_values             TARGET,
8291                pay_run_results                   RR,
8292                pay_payroll_actions               PACT,
8293                pay_assignment_actions            ASSACT,
8294                pay_payroll_actions               BACT,
8295                pay_assignment_actions            BAL_ASSACT
8296          where FEED.BALANCE_TYPE_ID    = (
8297                    select BALANCE_TYPE_ID
8298                    from   pay_balance_types
8299                    where  balance_name= 'Tax on Lump Sums'
8300                    and    legislation_code = 'ZA') -- Balance_type_id for Tax on Lump Sums
8301            and BAL_ASSACT.assignment_action_id = con_ASG_ACT_ID
8302            and BAL_ASSACT.payroll_action_id    = BACT.payroll_action_id
8303            and FEED.input_value_id             = TARGET.input_value_id
8304            and TARGET.run_result_id            = RR.run_result_id
8305            and RR.assignment_action_id         = ASSACT.assignment_action_id
8306            and ASSACT.payroll_action_id        = PACT.payroll_action_id
8307            and PACT.effective_date       between FEED.effective_start_date
8308                                              and FEED.effective_end_date
8309            and RR.status                      in ('P','PA')
8310            and PACT.time_period_id             = BACT.time_period_id
8311            and ASSACT.action_sequence         <= BAL_ASSACT.action_sequence
8312            and ASSACT.assignment_id            = BAL_ASSACT.assignment_id;
8313 
8314            hr_utility.set_location('l_lmsm_proc_cnt' || l_lmsm_proc_cnt, 1);
8315 
8316        if l_lmsm_proc_cnt > 0 then
8317        dbi_ZA_LS_DIR_NUM := 'To Be Advised';
8318        dbi_ZA_LS_DIR_VAL := -1;
8319       end if;
8320    else
8321 
8322       dbi_ZA_LS_DIR_NUM := 'To Be Advised';
8323       dbi_ZA_LS_DIR_VAL := -1;
8324 
8325    end if;
8326 
8327 
8328 
8329 /*
8330    IF bal_TX_ON_LS_PTD <> 0 THEN
8331       dbi_ZA_LS_DIR_NUM := 'To Be Advised';
8332       dbi_ZA_LS_DIR_VAL := -1;
8333    END IF;
8334 */
8335 -- Setup the Out Parameters
8336 --
8337 
8338 -- Tax on Retirement Fund Lump Sums
8339 --
8340    -- If tax on retirement fund lump sums has already been calculated
8341    -- do not return the values again by resetting the
8342    -- dbi's to their default values
8343    --
8344 
8345 -- Added additional check in case the ptd is getting 0 value with multiple runs.
8346 
8347 hr_utility.set_location('bal_TX_ON_RET_LS_PTD ' || bal_TX_ON_RET_LS_PTD , 2);
8348 hr_utility.set_location('con_ASG_ACT_ID' || con_ASG_ACT_ID, 2);
8349 
8350    If bal_TX_ON_RET_LS_PTD = 0 Then
8351 
8352 -- Query to check if there are multiple runs which sets the ptd as zero
8353 
8354       Select count(*)
8355          into  l_ret_lmsm_proc_cnt
8356          from
8357                pay_balance_feeds_f               FEED,
8358                pay_run_result_values             TARGET,
8359                pay_run_results                   RR,
8360                pay_payroll_actions               PACT,
8361                pay_assignment_actions            ASSACT,
8362                pay_payroll_actions               BACT,
8363                pay_assignment_actions            BAL_ASSACT
8364          where FEED.BALANCE_TYPE_ID    = (
8365                    select BALANCE_TYPE_ID
8366                    from   pay_balance_types
8367                    where  balance_name= 'Tax on Retirement Fund Lump Sums'
8368                    and    legislation_code = 'ZA') -- Balance_type_id for Tax on Retirement Fund Lump Sums
8369            and BAL_ASSACT.assignment_action_id = con_ASG_ACT_ID
8370            and BAL_ASSACT.payroll_action_id    = BACT.payroll_action_id
8371            and FEED.input_value_id             = TARGET.input_value_id
8372            and TARGET.run_result_id            = RR.run_result_id
8373            and RR.assignment_action_id         = ASSACT.assignment_action_id
8374            and ASSACT.payroll_action_id        = PACT.payroll_action_id
8375            and PACT.effective_date       between FEED.effective_start_date
8376                                              and FEED.effective_end_date
8377            and RR.status                      in ('P','PA')
8378            and PACT.time_period_id             = BACT.time_period_id
8379            and ASSACT.action_sequence         <= BAL_ASSACT.action_sequence
8380            and ASSACT.assignment_id            = BAL_ASSACT.assignment_id;
8381 
8382        hr_utility.set_location('l_ret_lmsm_proc_cnt' || l_ret_lmsm_proc_cnt, 2);
8383 
8384        if l_ret_lmsm_proc_cnt > 0 then
8385        dbi_ZA_RET_LS_DIR_NUM := 'To Be Advised';
8386        dbi_ZA_RET_LS_DIR_VAL := 0;
8387       end if;
8388 
8389    else
8390 
8391       dbi_ZA_RET_LS_DIR_NUM := 'To Be Advised';
8392       dbi_ZA_RET_LS_DIR_VAL := 0;
8393 
8394    end if;
8395 
8396 /*   IF bal_TX_ON_RET_LS_PTD <> 0 THEN
8397       dbi_ZA_RET_LS_DIR_NUM := 'To Be Advised';
8398       dbi_ZA_RET_LS_DIR_VAL := 0;
8399    END IF;
8400 */
8401 -- Fix for Bug# 12351345 ends
8402 
8403 
8404 
8405 -- Setup the Out Parameters
8406 
8407    -- Messages
8408    p_LibWrn := trc_LibWrn;   -- Liability Warning
8409    p_OvrWrn := trc_OvrWrn;   -- Override Warning
8410 
8411    -- Pay Values
8412    trc_PayValSD := ( trc_LibFpNI
8413                    + trc_LibFpFB
8414                    + trc_LibFpTA
8415                    + trc_LibFpBP
8416                    + trc_LibFpAB
8417                    + trc_LibFpAP
8418                    + trc_LibFpPO
8419                    );
8420    trc_PayValEC := trc_LibFpDR;
8421 
8422 
8423    hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',62);
8424 
8425    -- Tax On's
8426    p_LibFpDR  := trc_LibFpDR;
8427    p_LibFpNI  := trc_LibFpNI;
8428    p_LibFpFB  := trc_LibFpFB;
8429    p_LibFpTA  := trc_LibFpTA;
8430    p_LibFpBP  := trc_LibFpBP;
8431    p_LibFpAB  := trc_LibFpAB;
8432    p_LibFpAP  := trc_LibFpAP;
8433    p_LibFpPO  := trc_LibFpPO;
8434    p_PayValSD := trc_PayValSD;
8435    p_PayValEC := trc_PayValEC;
8436    -- NTG
8437    p_LibFpNtgAP     := trc_LibFpNtgAP;
8438    p_LibFpNtgEEDbt  := trc_LibFpNtgEEDbt;
8439    p_LibFpNtg       := trc_LibFpNtgAP + trc_LibFpNtgEEDbt;
8440    -- End NTG
8441 
8442    hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',63);
8443 
8444    -- Indicators, Splits and Updates
8445    p_PayeVal              := trc_PayeVal;
8446    p_SiteVal              := trc_SiteVal;
8447    p_It3Ind               := trc_It3Ind;
8448    p_PfUpdFig             := trc_PfUpdFig;
8449    p_RaUpdFig             := trc_RaUpdFig;
8450    p_OUpdFig              := trc_OUpdFig;
8451    p_NtiUpdFig            := trc_NtiUpdFig;
8452    p_NPtiUpdFig           := trc_NPtiUpdFig;  --EMP201
8453 
8454    hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',64);
8455 
8456    p_LSDirNum  := dbi_ZA_LS_DIR_NUM;
8457    p_LSDirVal  := dbi_ZA_LS_DIR_VAL;
8458    p_RETLSDirNum  := dbi_ZA_RET_LS_DIR_NUM;
8459    p_RETLSDirVal  := dbi_ZA_RET_LS_DIR_VAL;
8460 
8461    -- Start Medical Tax Credit Lump Sum Changes
8462    hr_utility.set_location('-----------------------------------------',65);
8463    hr_utility.set_location('Start Medical Tax Credit Lump Sum Changes',65);
8464    hr_utility.set_location('-----------------------------------------',65);
8465    hr_utility.set_location('Before loop trc_curMedTxCrEle:'||trc_curMedTxCrEle,66);
8466    -- IF Tax on Lump Sums YTD and Med Tax Credit Used on Lump Sums YTD is 0 do nothing.
8467    IF NOT (bal_TX_ON_LS_YTD = 0 AND bal_MED_AID_TAX_CR_USED_LS_YTD = 0) THEN
8468 
8469       FOR LSDir in csr_all_LSDir(ASSIGNMENT_ACTION_ID)
8470       LOOP
8471          l_LSDirRec := null;
8472          py_za_tx_utl_01032012.StopHrTrace;
8473          pay_balance_pkg.set_context('SOURCE_TEXT',LSDir.dirnum);
8474          l_LSDirRec.TxOnLSDirRUN := pay_balance_pkg.get_value(get_def_bal_id('Tax on Lump Sums',
8475                                                                                '_ASG_LMPSM_RUN')
8476                                                                ,ASSIGNMENT_ACTION_ID);
8477          l_LSDirRec.TxOnLSDirPTD := pay_balance_pkg.get_value(get_def_bal_id('Tax on Lump Sums',
8478                                                                                '_ASG_LMPSM_TAX_PTD')
8479                                                                ,ASSIGNMENT_ACTION_ID);
8480          l_LSDirRec.TxOnLSDirYTD := pay_balance_pkg.get_value(get_def_bal_id('Tax on Lump Sums',
8481                                                                                '_ASG_LMPSM_TAX_YTD')
8482                                                                ,ASSIGNMENT_ACTION_ID);
8483          l_LSDirRec.MedTxCrUsedOnLSDirRUN := pay_balance_pkg.get_value(get_def_bal_id('Medical Tax Credit Used on Lump Sums',
8484                                                                                         '_ASG_LMPSM_RUN')
8485                                                                ,ASSIGNMENT_ACTION_ID);
8486          l_LSDirRec.MedTxCrUsedOnLSDirPTD := pay_balance_pkg.get_value(get_def_bal_id('Medical Tax Credit Used on Lump Sums',
8487                                                                                         '_ASG_LMPSM_TAX_PTD')
8488                                                                ,ASSIGNMENT_ACTION_ID);
8489          l_LSDirRec.MedTxCrUsedOnLSDirYTD := pay_balance_pkg.get_value(get_def_bal_id('Medical Tax Credit Used on Lump Sums',
8490                                                                                         '_ASG_LMPSM_TAX_YTD')
8491                                                                ,ASSIGNMENT_ACTION_ID);
8492          py_za_tx_utl_01032012.StartHrTrace;
8493          hr_utility.set_location('trc_curMedTxCrEle:'||trc_curMedTxCrEle,67);
8494          hr_utility.set_location('LSDir.dirnum:'||LSDir.dirnum,67);
8495          hr_utility.set_location('l_LSDirRec.TxOnLSDirRUN:'||l_LSDirRec.TxOnLSDirRUN,67);
8496          hr_utility.set_location('l_LSDirRec.TxOnLSDirPTD:'||l_LSDirRec.TxOnLSDirPTD,67);
8497          hr_utility.set_location('l_LSDirRec.TxOnLSDirYTD:'||l_LSDirRec.TxOnLSDirYTD,67);
8498          hr_utility.set_location('l_LSDirRec.MedTxCrUsedOnLSDirRUN:'||l_LSDirRec.MedTxCrUsedOnLSDirRUN,67);
8499          hr_utility.set_location('l_LSDirRec.MedTxCrUsedOnLSDirPTD:'||l_LSDirRec.MedTxCrUsedOnLSDirPTD,67);
8500          hr_utility.set_location('l_LSDirRec.MedTxCrUsedOnLSDirYTD:'||l_LSDirRec.MedTxCrUsedOnLSDirYTD,67);
8501 
8502          IF (trc_curMedTxCrEle > 0) THEN
8503             -- Means Not the Current Run LS Directive so we can not increase the Med Tax credit
8504             IF (l_LSDirRec.TxOnLSDirRUN = 0) THEN
8505                -- In This case we can only reduce the Med Tax credit
8506                IF (trc_curMedTxCrEle < l_LSDirRec.MedTxCrUsedOnLSDirYTD) THEN
8507                   l_ExMedTaxCr := (l_LSDirRec.MedTxCrUsedOnLSDirYTD - trc_curMedTxCrEle);
8508                   l_LSDirRec.MedTxCrUsedOnLSDirRUN := -1 * l_ExMedTaxCr;
8509                   trc_curMedTxCrEle := trc_curMedTxCrEle - (l_LSDirRec.MedTxCrUsedOnLSDirYTD - l_ExMedTaxCr);
8510                ELSE
8511                   trc_curMedTxCrEle := trc_curMedTxCrEle - l_LSDirRec.MedTxCrUsedOnLSDirYTD;
8512                END IF;
8513             ELSE -- Means Current Run LS Directive so we can increase/decrease the Med Tax Credit
8514                 l_LSDirRec.MedTxCrUsedOnLSDirRUN := LEAST(l_LSDirRec.TxOnLSDirRUN,trc_curMedTxCrEle);
8515                 trc_curMedTxCrEle := trc_curMedTxCrEle - l_LSDirRec.MedTxCrUsedOnLSDirRUN;
8516             END IF;
8517 
8518          ELSE  -- IF Med Tax Credit Available is 0
8519             -- Reduce the Credit to 0 and Collect Tax
8520             IF (l_LSDirRec.MedTxCrUsedOnLSDirYTD > 0) THEN
8521                l_LSDirRec.MedTxCrUsedOnLSDirRUN := -1 * l_LSDirRec.MedTxCrUsedOnLSDirYTD;
8522             END IF;
8523 
8524          END IF;
8525 
8526          IF (l_LSDirRec.MedTxCrUsedOnLSDirRUN <>0) THEN
8527             trc_LSDirTab(LSDir.dirnum) := l_LSDirRec;
8528          END IF;
8529 
8530          hr_utility.set_location('trc_curMedTxCrEle:'||trc_curMedTxCrEle,68);
8531          hr_utility.set_location('l_LSDirRec.TxOnLSDirRUN:'||l_LSDirRec.TxOnLSDirRUN,68);
8532          hr_utility.set_location('l_LSDirRec.MedTxCrUsedOnLSDirRUN:'||l_LSDirRec.MedTxCrUsedOnLSDirRUN,68);
8533 
8534       END LOOP;
8535 
8536    END IF;
8537 
8538 
8539    IF ( NOT(p_LSDirNum = 'To Be Advised') ) THEN
8540       IF (trc_curMedTxCrEle > 0) THEN
8541          hr_utility.set_location('Processing single lump sum:'||p_LSDirNum,69);
8542          l_LSDirRec := null;
8543          l_LSDirRec.MedTxCrUsedOnLSDirRUN := LEAST(p_LSDirVal,trc_curMedTxCrEle);
8544          trc_curMedTxCrEle := trc_curMedTxCrEle - l_LSDirRec.MedTxCrUsedOnLSDirRUN;
8545          trc_LSDirTab(p_LSDirNum) := l_LSDirRec;
8546 
8547          hr_utility.set_location('Single trc_curMedTxCrEle:'||trc_curMedTxCrEle,70);
8548          hr_utility.set_location('p_LSDirNum:'||p_LSDirNum,70);
8549          hr_utility.set_location('l_LSDirRec.MedTxCrUsedOnLSDirRUN:'||l_LSDirRec.MedTxCrUsedOnLSDirRUN,70);
8550       END IF;
8551    END IF;
8552 
8553    hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,71);
8554    p_MedCrUsedLS :=trc_LSDirTab.count;
8555 
8556    -- End Medical Tax Credit Lump Sum Changes
8557    hr_utility.set_location('End Medical Tax Credit Lump Sum Changes',72);
8558 
8559    -- Start Medical Tax credit Changes
8560    l_TotMedTxCr_Upd := trc_MedTxCrUsedDR_Upd +
8561                        trc_MedTxCrUsedNI_Upd +
8562                        trc_MedTxCrUsedFB_Upd +
8563                        trc_MedTxCrUsedTA_Upd +
8564                        trc_MedTxCrUsedBP_Upd +
8565                        trc_MedTxCrUsedAB_Upd +
8566                        trc_MedTxCrUsedAP_Upd +
8567                        trc_MedTxCrUsedPO_Upd +
8568                        trc_MedTxCrUsedNtgAP_Upd +
8569                        trc_MedTxCrUsedNtgEEDbt_Upd;
8570 
8571    l_LSDirNum := trc_LSDirTab.first;
8572    while (l_LSDirNum is not null)
8573    loop
8574       l_TotMedTxCr_Upd := l_TotMedTxCr_Upd +trc_LSDirTab(l_LSDirNum).MedTxCrUsedOnLSDirRUN;
8575       l_LSDirNum := trc_LSDirTab.next(l_LSDirNum);
8576    end loop;
8577 
8578 -- To allow refund incase of employee above 65
8579 -- or when balances in code 3810, 4005, 4474 is zero
8580    IF (l_TotMedTxCr_Upd < 0 and
8581        not py_za_tx_utl_01032012.AllowRefund(p_65Year => l_65Year)
8582       ) THEN
8583    LOOP
8584       -- Normal Earnings
8585       IF trc_MedTxCrUsedDR_Upd < 0 THEN
8586             l_MedTxCr_Adj := greatest(trc_MedTxCrUsedDR_Upd,l_TotMedTxCr_Upd);
8587             trc_MedTxCrUsedDR_Upd := trc_MedTxCrUsedDR_Upd - l_MedTxCr_Adj;
8588             l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8589             EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8590       END IF;
8591       IF trc_MedTxCrUsedNI_Upd < 0 THEN
8592             l_MedTxCr_Adj := greatest(trc_MedTxCrUsedNI_Upd,l_TotMedTxCr_Upd);
8593             trc_MedTxCrUsedNI_Upd := trc_MedTxCrUsedNI_Upd - l_MedTxCr_Adj;
8594             l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8595             EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8596       END IF;
8597       IF trc_MedTxCrUsedFB_Upd < 0 THEN
8598             l_MedTxCr_Adj := greatest(trc_MedTxCrUsedFB_Upd,l_TotMedTxCr_Upd);
8599             trc_MedTxCrUsedFB_Upd := trc_MedTxCrUsedFB_Upd - l_MedTxCr_Adj;
8600             l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8601             EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8602       END IF;
8603       IF trc_MedTxCrUsedTA_Upd < 0 THEN
8604             l_MedTxCr_Adj := greatest(trc_MedTxCrUsedTA_Upd,l_TotMedTxCr_Upd);
8605             trc_MedTxCrUsedTA_Upd := trc_MedTxCrUsedTA_Upd - l_MedTxCr_Adj;
8606             l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8607             EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8608       END IF;
8609       IF trc_MedTxCrUsedBP_Upd < 0 THEN
8610             l_MedTxCr_Adj := greatest(trc_MedTxCrUsedBP_Upd,l_TotMedTxCr_Upd);
8611             trc_MedTxCrUsedBP_Upd := trc_MedTxCrUsedBP_Upd - l_MedTxCr_Adj;
8612             l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8613             EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8614       END IF;
8615       IF trc_MedTxCrUsedAB_Upd < 0 THEN
8616             l_MedTxCr_Adj := greatest(trc_MedTxCrUsedAB_Upd,l_TotMedTxCr_Upd);
8617             trc_MedTxCrUsedAB_Upd := trc_MedTxCrUsedAB_Upd - l_MedTxCr_Adj;
8618             l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8619             EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8620       END IF;
8621       IF trc_MedTxCrUsedAP_Upd < 0 THEN
8622             l_MedTxCr_Adj := greatest(trc_MedTxCrUsedAP_Upd,l_TotMedTxCr_Upd);
8623             trc_MedTxCrUsedAP_Upd := trc_MedTxCrUsedAP_Upd - l_MedTxCr_Adj;
8624             l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8625             EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8626       END IF;
8627       IF trc_MedTxCrUsedPO_Upd < 0 THEN
8628             l_MedTxCr_Adj := greatest(trc_MedTxCrUsedPO_Upd,l_TotMedTxCr_Upd);
8629             trc_MedTxCrUsedPO_Upd := trc_MedTxCrUsedPO_Upd - l_MedTxCr_Adj;
8630             l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8631             EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8632       END IF;
8633       IF trc_MedTxCrUsedNtgAP_Upd < 0 THEN
8634             l_MedTxCr_Adj := greatest(trc_MedTxCrUsedNtgAP_Upd,l_TotMedTxCr_Upd);
8635             trc_MedTxCrUsedNtgAP_Upd := trc_MedTxCrUsedNtgAP_Upd - l_MedTxCr_Adj;
8636             l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8637             EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8638       END IF;
8639       IF trc_MedTxCrUsedNtgEEDbt_Upd < 0 THEN
8640             l_MedTxCr_Adj := greatest(trc_MedTxCrUsedNtgEEDbt_Upd,l_TotMedTxCr_Upd);
8641             trc_MedTxCrUsedNtgEEDbt_Upd := trc_MedTxCrUsedNtgEEDbt_Upd - l_MedTxCr_Adj;
8642             l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8643             EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8644       END IF;
8645       -- Lumpsum Directives
8646       l_LSDirNum := trc_LSDirTab.first;
8647       WHILE (l_LSDirNum is not null)
8648       LOOP
8649          l_TmpMedTxCr := trc_LSDirTab(l_LSDirNum).MedTxCrUsedOnLSDirRUN;
8650          IF (l_TmpMedTxCr < 0 ) THEN
8651             l_MedTxCr_Adj := greatest(l_TmpMedTxCr,l_TotMedTxCr_Upd);
8652             trc_LSDirTab(l_LSDirNum).MedTxCrUsedOnLSDirRUN := l_TmpMedTxCr - l_MedTxCr_Adj;
8653             l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8654             EXIT WHEN (l_TotMedTxCr_Upd >=0);
8655          END IF;
8656          l_LSDirNum := trc_LSDirTab.next(l_LSDirNum);
8657       END LOOP;
8658       EXIT;
8659    END LOOP;
8660    END IF;
8661 
8662    IF (trc_CalTyp <> 'LteCalc') THEN
8663       p_MedCrUsedDR := trc_MedTxCrUsedDR_Upd + l_MdTxCrdtUDR_Adj;
8664       p_MedCrUsedNI := trc_MedTxCrUsedNI_Upd + l_MdTxCrdtUNi_Adj;
8665       p_MedCrUsedFB := trc_MedTxCrUsedFB_Upd + l_MdTxCrdtUFB_Adj;
8666       p_MedCrUsedTA := trc_MedTxCrUsedTA_Upd + l_MdTxCrdtUTA_Adj;
8667       p_MedCrUsedBP := trc_MedTxCrUsedBP_Upd + l_MdTxCrdtUBP_Adj;
8668       p_MedCrUsedAB := trc_MedTxCrUsedAB_Upd + l_MdTxCrdtUAB_Adj;
8669       p_MedCrUsedAP := trc_MedTxCrUsedAP_Upd + l_MdTxCrdtUAP_Adj;
8670       p_MedCrUsedPO := trc_MedTxCrUsedPO_Upd + l_MdTxCrdtUPO_Adj;
8671       p_MedCrUsedNtgAP := trc_MedTxCrUsedNtgAP_Upd + l_MdTxCrdtUNG_Adj;
8672       p_MedCrUsedNtgEEDbt :=  trc_MedTxCrUsedNtgEEDbt_Upd + l_MdTxCrdtUEE_Adj;
8673    ELSE
8674       p_MedCrUsedDR := 0;
8675       p_MedCrUsedNI := 0;
8676       p_MedCrUsedFB := 0;
8677       p_MedCrUsedTA := 0;
8678       p_MedCrUsedBP := 0;
8679       p_MedCrUsedAB := 0;
8680       p_MedCrUsedAP := 0;
8681       p_MedCrUsedPO := 0;
8682       p_MedCrUsedNtgAP := 0;
8683       p_MedCrUsedNtgEEDbt :=  0;
8684    END IF;
8685 
8686    hr_utility.set_location('p_MedCrUsedDR : '|| p_MedCrUsedDR,1000);
8687    hr_utility.set_location('p_MedCrUsedNI : '|| p_MedCrUsedNI,1000);
8688    hr_utility.set_location('p_MedCrUsedFB : '|| p_MedCrUsedFB,1000);
8689    hr_utility.set_location('p_MedCrUsedTA : '|| p_MedCrUsedTA,1000);
8690    hr_utility.set_location('p_MedCrUsedBP : '|| p_MedCrUsedBP,1000);
8691    hr_utility.set_location('p_MedCrUsedAB : '|| p_MedCrUsedAB,1000);
8692    hr_utility.set_location('p_MedCrUsedAP : '|| p_MedCrUsedAP,1000);
8693    hr_utility.set_location('p_MedCrUsedPO : '|| p_MedCrUsedPO,1000);
8694    hr_utility.set_location('p_MedCrUsedNtgAP : '|| p_MedCrUsedNtgAP,1000);
8695    hr_utility.set_location('p_MedCrUsedNtgEEDbt : '|| p_MedCrUsedNtgEEDbt,1000);
8696 
8697    -- End Medical Tax credit Changes
8698 
8699 -- Execute The Tax Trace
8700 --
8701    py_za_tx_utl_01032012.Trace;
8702 
8703    hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',65);
8704 
8705 -- Clear Globals
8706 --
8707    py_za_tx_utl_01032012.ClearGlobals;
8708 
8709    hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',66);
8710 
8711 -- End off Trace File
8712    WrtHrTrc('------------------------------------------------------------');
8713    WrtHrTrc('--                End of Tax Trace File                   --');
8714    WrtHrTrc('------------------------------------------------------------');
8715    WrtHrTrc('                             --                             ');
8716 
8717 -- Call hr_utility stop procedure
8718    py_za_tx_utl_01032012.StopHrTrace;
8719 
8720   --dbms_debug.debug_off;
8721 
8722    RETURN l_Dum;
8723 
8724 EXCEPTION
8725    WHEN xpt_FxdPrc THEN
8726       hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',67);
8727       WrtHrTrc('Sql error msg: Fixed Percentage was not entered');
8728       py_za_tx_utl_01032012.StopHrTrace;
8729       hr_utility.set_message(801, 'Fixed Percentage not entered');
8730       py_za_tx_utl_01032012.ClearGlobals;
8731       hr_utility.raise_error;
8732    WHEN xpt_E  THEN
8733       hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',68);
8734       WrtHrTrc('xpt_Msg: '||xpt_Msg);
8735       py_za_tx_utl_01032012.StopHrTrace;
8736       hr_utility.set_message(801, xpt_Msg);
8737       py_za_tx_utl_01032012.ClearGlobals;
8738       hr_utility.raise_error;
8739    WHEN OTHERS THEN
8740       hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',69);
8741       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
8742       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
8743       py_za_tx_utl_01032012.StopHrTrace;
8744       hr_utility.set_message(801, 'ZaTx_01032012: '||TO_CHAR(SQLCODE));
8745       py_za_tx_utl_01032012.ClearGlobals;
8746       hr_utility.raise_error;
8747 END ZaTx_01032012;
8748 
8749 
8750 FUNCTION ZaTxMedTxCrLmpSm1_01032012(
8751     p_MedCrUsedLS           OUT NOCOPY NUMBER
8752   , p_DirNum1               OUT NOCOPY VARCHAR2
8753   , p_MedTxCrUsed1          OUT NOCOPY NUMBER
8754   , p_DirNum2               OUT NOCOPY VARCHAR2
8755   , p_MedTxCrUsed2          OUT NOCOPY NUMBER
8756   , p_DirNum3               OUT NOCOPY VARCHAR2
8757   , p_MedTxCrUsed3          OUT NOCOPY NUMBER
8758   , p_DirNum4               OUT NOCOPY VARCHAR2
8759   , p_MedTxCrUsed4          OUT NOCOPY NUMBER
8760   , p_DirNum5               OUT NOCOPY VARCHAR2
8761   , p_MedTxCrUsed5          OUT NOCOPY NUMBER
8762   , p_DirNum6               OUT NOCOPY VARCHAR2
8763   , p_MedTxCrUsed6          OUT NOCOPY NUMBER
8764   , p_DirNum7               OUT NOCOPY VARCHAR2
8765   , p_MedTxCrUsed7          OUT NOCOPY NUMBER
8766   , p_DirNum8               OUT NOCOPY VARCHAR2
8767   , p_MedTxCrUsed8          OUT NOCOPY NUMBER
8768   , p_DirNum9               OUT NOCOPY VARCHAR2
8769   , p_MedTxCrUsed9          OUT NOCOPY NUMBER
8770   , p_DirNum10              OUT NOCOPY VARCHAR2
8771   , p_MedTxCrUsed10         OUT NOCOPY NUMBER
8772   )RETURN NUMBER
8773 AS
8774 
8775   l_chunk         number :=1;
8776   l_dir_st        number := 1;
8777   l_dir_end       number := 10;
8778   l_ls_dirnum     varchar2(100);
8779   l_cur_max_dir   number;
8780   l_count         number :=0;
8781 
8782 
8783 BEGIN
8784    py_za_tx_utl_01032012.StartHrTrace;
8785    hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm1_01032012',1);
8786 
8787    p_DirNum1 :=' ';
8788    p_MedTxCrUsed1 :=0;
8789    p_DirNum2 :=' ';
8790    p_MedTxCrUsed2 :=0;
8791    p_DirNum3 :=' ';
8792    p_MedTxCrUsed3 :=0;
8793    p_DirNum4 :=' ';
8794    p_MedTxCrUsed4 :=0;
8795    p_DirNum5 :=' ';
8796    p_MedTxCrUsed5 :=0;
8797    p_DirNum6 :=' ';
8798    p_MedTxCrUsed6 :=0;
8799    p_DirNum7 :=' ';
8800    p_MedTxCrUsed7 :=0;
8801    p_DirNum8 :=' ';
8802    p_MedTxCrUsed8 :=0;
8803    p_DirNum9 :=' ';
8804    p_MedTxCrUsed9 :=0;
8805    p_DirNum10 :=' ';
8806    p_MedTxCrUsed10 :=0;
8807 
8808    l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
8809    hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
8810 
8811    l_ls_dirnum := trc_LSDirTab.first;
8812    while (l_ls_dirnum is not null)
8813    loop
8814       hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
8815       hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
8816       l_count := l_count+1;
8817       IF (l_count = l_dir_st) THEN
8818          p_DirNum1 := l_ls_dirnum;
8819          p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8820       ELSIF (l_count = l_dir_st +1) THEN
8821          p_DirNum2 := l_ls_dirnum;
8822          p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8823       ELSIF (l_count = l_dir_st +2) THEN
8824          p_DirNum3 := l_ls_dirnum;
8825          p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8826       ELSIF (l_count = l_dir_st +3) THEN
8827          p_DirNum4 := l_ls_dirnum;
8828          p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8829       ELSIF (l_count = l_dir_st +4) THEN
8830          p_DirNum5 := l_ls_dirnum;
8831          p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8832       ELSIF (l_count = l_dir_st +5) THEN
8833          p_DirNum6 := l_ls_dirnum;
8834          p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8835       ELSIF (l_count = l_dir_st +6) THEN
8836          p_DirNum7 := l_ls_dirnum;
8837          p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8838       ELSIF (l_count = l_dir_st +7) THEN
8839          p_DirNum8 := l_ls_dirnum;
8840          p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8841       ELSIF (l_count = l_dir_st +8) THEN
8842          p_DirNum9 := l_ls_dirnum;
8843          p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8844       ELSIF (l_count = l_dir_st +9) THEN
8845          p_DirNum10 := l_ls_dirnum;
8846          p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8847       END IF;
8848 
8849       IF (l_count = l_cur_max_dir) THEN
8850         EXIT;
8851       END IF;
8852       l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
8853    end loop;
8854 
8855    p_MedCrUsedLS := l_cur_max_dir;
8856    hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
8857    hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
8858 
8859    py_za_tx_utl_01032012.StopHrTrace;
8860 
8861    RETURN 1;
8862 
8863 EXCEPTION
8864    WHEN OTHERS THEN
8865       hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm1_01032012',50);
8866       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
8867       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
8868       py_za_tx_utl_01032012.StopHrTrace;
8869       hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm1_01032012: '||TO_CHAR(SQLCODE));
8870       hr_utility.raise_error;
8871 END ZaTxMedTxCrLmpSm1_01032012;
8872 
8873 FUNCTION ZaTxMedTxCrLmpSm2_01032012(
8874     p_MedCrUsedLS           OUT NOCOPY NUMBER
8875   , p_DirNum1               OUT NOCOPY VARCHAR2
8876   , p_MedTxCrUsed1          OUT NOCOPY NUMBER
8877   , p_DirNum2               OUT NOCOPY VARCHAR2
8878   , p_MedTxCrUsed2          OUT NOCOPY NUMBER
8879   , p_DirNum3               OUT NOCOPY VARCHAR2
8880   , p_MedTxCrUsed3          OUT NOCOPY NUMBER
8881   , p_DirNum4               OUT NOCOPY VARCHAR2
8882   , p_MedTxCrUsed4          OUT NOCOPY NUMBER
8883   , p_DirNum5               OUT NOCOPY VARCHAR2
8884   , p_MedTxCrUsed5          OUT NOCOPY NUMBER
8885   , p_DirNum6               OUT NOCOPY VARCHAR2
8886   , p_MedTxCrUsed6          OUT NOCOPY NUMBER
8887   , p_DirNum7               OUT NOCOPY VARCHAR2
8888   , p_MedTxCrUsed7          OUT NOCOPY NUMBER
8889   , p_DirNum8               OUT NOCOPY VARCHAR2
8890   , p_MedTxCrUsed8          OUT NOCOPY NUMBER
8891   , p_DirNum9               OUT NOCOPY VARCHAR2
8892   , p_MedTxCrUsed9          OUT NOCOPY NUMBER
8893   , p_DirNum10              OUT NOCOPY VARCHAR2
8894   , p_MedTxCrUsed10         OUT NOCOPY NUMBER
8895   )RETURN NUMBER
8896 AS
8897 
8898   l_chunk         number :=2;
8899   l_dir_st        number := 11;
8900   l_dir_end       number := 20;
8901   l_ls_dirnum     varchar2(100);
8902   l_cur_max_dir   number;
8903   l_count         number :=0;
8904 
8905 
8906 BEGIN
8907    py_za_tx_utl_01032012.StartHrTrace;
8908    hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm2_01032012',1);
8909 
8910    p_DirNum1 :=' ';
8911    p_MedTxCrUsed1 :=0;
8912    p_DirNum2 :=' ';
8913    p_MedTxCrUsed2 :=0;
8914    p_DirNum3 :=' ';
8915    p_MedTxCrUsed3 :=0;
8916    p_DirNum4 :=' ';
8917    p_MedTxCrUsed4 :=0;
8918    p_DirNum5 :=' ';
8919    p_MedTxCrUsed5 :=0;
8920    p_DirNum6 :=' ';
8921    p_MedTxCrUsed6 :=0;
8922    p_DirNum7 :=' ';
8923    p_MedTxCrUsed7 :=0;
8924    p_DirNum8 :=' ';
8925    p_MedTxCrUsed8 :=0;
8926    p_DirNum9 :=' ';
8927    p_MedTxCrUsed9 :=0;
8928    p_DirNum10 :=' ';
8929    p_MedTxCrUsed10 :=0;
8930 
8931    l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
8932    hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
8933 
8934    l_ls_dirnum := trc_LSDirTab.first;
8935    while (l_ls_dirnum is not null)
8936    loop
8937       hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
8938       hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
8939       l_count := l_count+1;
8940       IF (l_count = l_dir_st) THEN
8941          p_DirNum1 := l_ls_dirnum;
8942          p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8943       ELSIF (l_count = l_dir_st +1) THEN
8944          p_DirNum2 := l_ls_dirnum;
8945          p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8946       ELSIF (l_count = l_dir_st +2) THEN
8947          p_DirNum3 := l_ls_dirnum;
8948          p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8949       ELSIF (l_count = l_dir_st +3) THEN
8950          p_DirNum4 := l_ls_dirnum;
8951          p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8952       ELSIF (l_count = l_dir_st +4) THEN
8953          p_DirNum5 := l_ls_dirnum;
8954          p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8955       ELSIF (l_count = l_dir_st +5) THEN
8956          p_DirNum6 := l_ls_dirnum;
8957          p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8958       ELSIF (l_count = l_dir_st +6) THEN
8959          p_DirNum7 := l_ls_dirnum;
8960          p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8961       ELSIF (l_count = l_dir_st +7) THEN
8962          p_DirNum8 := l_ls_dirnum;
8963          p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8964       ELSIF (l_count = l_dir_st +8) THEN
8965          p_DirNum9 := l_ls_dirnum;
8966          p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8967       ELSIF (l_count = l_dir_st +9) THEN
8968          p_DirNum10 := l_ls_dirnum;
8969          p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8970       END IF;
8971 
8972       IF (l_count = l_cur_max_dir) THEN
8973         EXIT;
8974       END IF;
8975       l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
8976    end loop;
8977 
8978    p_MedCrUsedLS := l_cur_max_dir;
8979    hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
8980    hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
8981 
8982    py_za_tx_utl_01032012.StopHrTrace;
8983 
8984    RETURN 1;
8985 
8986 EXCEPTION
8987    WHEN OTHERS THEN
8988       hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm2_01032012',50);
8989       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
8990       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
8991       py_za_tx_utl_01032012.StopHrTrace;
8992       hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm2_01032012: '||TO_CHAR(SQLCODE));
8993       hr_utility.raise_error;
8994 END ZaTxMedTxCrLmpSm2_01032012;
8995 
8996 FUNCTION ZaTxMedTxCrLmpSm3_01032012(
8997     p_MedCrUsedLS           OUT NOCOPY NUMBER
8998   , p_DirNum1               OUT NOCOPY VARCHAR2
8999   , p_MedTxCrUsed1          OUT NOCOPY NUMBER
9000   , p_DirNum2               OUT NOCOPY VARCHAR2
9001   , p_MedTxCrUsed2          OUT NOCOPY NUMBER
9002   , p_DirNum3               OUT NOCOPY VARCHAR2
9003   , p_MedTxCrUsed3          OUT NOCOPY NUMBER
9004   , p_DirNum4               OUT NOCOPY VARCHAR2
9005   , p_MedTxCrUsed4          OUT NOCOPY NUMBER
9006   , p_DirNum5               OUT NOCOPY VARCHAR2
9007   , p_MedTxCrUsed5          OUT NOCOPY NUMBER
9008   , p_DirNum6               OUT NOCOPY VARCHAR2
9009   , p_MedTxCrUsed6          OUT NOCOPY NUMBER
9010   , p_DirNum7               OUT NOCOPY VARCHAR2
9011   , p_MedTxCrUsed7          OUT NOCOPY NUMBER
9012   , p_DirNum8               OUT NOCOPY VARCHAR2
9013   , p_MedTxCrUsed8          OUT NOCOPY NUMBER
9014   , p_DirNum9               OUT NOCOPY VARCHAR2
9015   , p_MedTxCrUsed9          OUT NOCOPY NUMBER
9016   , p_DirNum10              OUT NOCOPY VARCHAR2
9017   , p_MedTxCrUsed10         OUT NOCOPY NUMBER
9018   )RETURN NUMBER
9019 AS
9020 
9021   l_chunk         number :=3;
9022   l_dir_st        number := 21;
9023   l_dir_end       number := 30;
9024   l_ls_dirnum     varchar2(100);
9025   l_cur_max_dir   number;
9026   l_count         number :=0;
9027 
9028 
9029 BEGIN
9030    py_za_tx_utl_01032012.StartHrTrace;
9031    hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm3_01032012',1);
9032 
9033    p_DirNum1 :=' ';
9034    p_MedTxCrUsed1 :=0;
9035    p_DirNum2 :=' ';
9036    p_MedTxCrUsed2 :=0;
9037    p_DirNum3 :=' ';
9038    p_MedTxCrUsed3 :=0;
9039    p_DirNum4 :=' ';
9040    p_MedTxCrUsed4 :=0;
9041    p_DirNum5 :=' ';
9042    p_MedTxCrUsed5 :=0;
9043    p_DirNum6 :=' ';
9044    p_MedTxCrUsed6 :=0;
9045    p_DirNum7 :=' ';
9046    p_MedTxCrUsed7 :=0;
9047    p_DirNum8 :=' ';
9048    p_MedTxCrUsed8 :=0;
9049    p_DirNum9 :=' ';
9050    p_MedTxCrUsed9 :=0;
9051    p_DirNum10 :=' ';
9052    p_MedTxCrUsed10 :=0;
9053 
9054    l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
9055    hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
9056 
9057    l_ls_dirnum := trc_LSDirTab.first;
9058    while (l_ls_dirnum is not null)
9059    loop
9060       hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
9061       hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
9062       l_count := l_count+1;
9063       IF (l_count = l_dir_st) THEN
9064          p_DirNum1 := l_ls_dirnum;
9065          p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9066       ELSIF (l_count = l_dir_st +1) THEN
9067          p_DirNum2 := l_ls_dirnum;
9068          p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9069       ELSIF (l_count = l_dir_st +2) THEN
9070          p_DirNum3 := l_ls_dirnum;
9071          p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9072       ELSIF (l_count = l_dir_st +3) THEN
9073          p_DirNum4 := l_ls_dirnum;
9074          p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9075       ELSIF (l_count = l_dir_st +4) THEN
9076          p_DirNum5 := l_ls_dirnum;
9077          p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9078       ELSIF (l_count = l_dir_st +5) THEN
9079          p_DirNum6 := l_ls_dirnum;
9080          p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9081       ELSIF (l_count = l_dir_st +6) THEN
9082          p_DirNum7 := l_ls_dirnum;
9083          p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9084       ELSIF (l_count = l_dir_st +7) THEN
9085          p_DirNum8 := l_ls_dirnum;
9086          p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9087       ELSIF (l_count = l_dir_st +8) THEN
9088          p_DirNum9 := l_ls_dirnum;
9089          p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9090       ELSIF (l_count = l_dir_st +9) THEN
9091          p_DirNum10 := l_ls_dirnum;
9092          p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9093       END IF;
9094 
9095       IF (l_count = l_cur_max_dir) THEN
9096         EXIT;
9097       END IF;
9098       l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
9099    end loop;
9100 
9101    p_MedCrUsedLS := l_cur_max_dir;
9102    hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
9103    hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
9104 
9105    py_za_tx_utl_01032012.StopHrTrace;
9106 
9107    RETURN 1;
9108 
9109 EXCEPTION
9110    WHEN OTHERS THEN
9111       hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm3_01032012',50);
9112       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
9113       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
9114       py_za_tx_utl_01032012.StopHrTrace;
9115       hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm3_01032012: '||TO_CHAR(SQLCODE));
9116       hr_utility.raise_error;
9117 END ZaTxMedTxCrLmpSm3_01032012;
9118 
9119 
9120 FUNCTION ZaTxMedTxCrLmpSm4_01032012(
9121     p_MedCrUsedLS           OUT NOCOPY NUMBER
9122   , p_DirNum1               OUT NOCOPY VARCHAR2
9123   , p_MedTxCrUsed1          OUT NOCOPY NUMBER
9124   , p_DirNum2               OUT NOCOPY VARCHAR2
9125   , p_MedTxCrUsed2          OUT NOCOPY NUMBER
9126   , p_DirNum3               OUT NOCOPY VARCHAR2
9127   , p_MedTxCrUsed3          OUT NOCOPY NUMBER
9128   , p_DirNum4               OUT NOCOPY VARCHAR2
9129   , p_MedTxCrUsed4          OUT NOCOPY NUMBER
9130   , p_DirNum5               OUT NOCOPY VARCHAR2
9131   , p_MedTxCrUsed5          OUT NOCOPY NUMBER
9132   , p_DirNum6               OUT NOCOPY VARCHAR2
9133   , p_MedTxCrUsed6          OUT NOCOPY NUMBER
9134   , p_DirNum7               OUT NOCOPY VARCHAR2
9135   , p_MedTxCrUsed7          OUT NOCOPY NUMBER
9136   , p_DirNum8               OUT NOCOPY VARCHAR2
9137   , p_MedTxCrUsed8          OUT NOCOPY NUMBER
9138   , p_DirNum9               OUT NOCOPY VARCHAR2
9139   , p_MedTxCrUsed9          OUT NOCOPY NUMBER
9140   , p_DirNum10              OUT NOCOPY VARCHAR2
9141   , p_MedTxCrUsed10         OUT NOCOPY NUMBER
9142   )RETURN NUMBER
9143 AS
9144 
9145   l_chunk         number :=4;
9146   l_dir_st        number := 31;
9147   l_dir_end       number := 40;
9148   l_ls_dirnum     varchar2(100);
9149   l_cur_max_dir   number;
9150   l_count         number :=0;
9151 
9152 
9153 BEGIN
9154    py_za_tx_utl_01032012.StartHrTrace;
9155    hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm4_01032012',1);
9156 
9157    p_DirNum1 :=' ';
9158    p_MedTxCrUsed1 :=0;
9159    p_DirNum2 :=' ';
9160    p_MedTxCrUsed2 :=0;
9161    p_DirNum3 :=' ';
9162    p_MedTxCrUsed3 :=0;
9163    p_DirNum4 :=' ';
9164    p_MedTxCrUsed4 :=0;
9165    p_DirNum5 :=' ';
9166    p_MedTxCrUsed5 :=0;
9167    p_DirNum6 :=' ';
9168    p_MedTxCrUsed6 :=0;
9169    p_DirNum7 :=' ';
9170    p_MedTxCrUsed7 :=0;
9171    p_DirNum8 :=' ';
9172    p_MedTxCrUsed8 :=0;
9173    p_DirNum9 :=' ';
9174    p_MedTxCrUsed9 :=0;
9175    p_DirNum10 :=' ';
9176    p_MedTxCrUsed10 :=0;
9177 
9178    l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
9179    hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
9180 
9181    l_ls_dirnum := trc_LSDirTab.first;
9182    while (l_ls_dirnum is not null)
9183    loop
9184       hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
9185       hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
9186       l_count := l_count+1;
9187       IF (l_count = l_dir_st) THEN
9188          p_DirNum1 := l_ls_dirnum;
9189          p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9190       ELSIF (l_count = l_dir_st +1) THEN
9191          p_DirNum2 := l_ls_dirnum;
9192          p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9193       ELSIF (l_count = l_dir_st +2) THEN
9194          p_DirNum3 := l_ls_dirnum;
9195          p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9196       ELSIF (l_count = l_dir_st +3) THEN
9197          p_DirNum4 := l_ls_dirnum;
9198          p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9199       ELSIF (l_count = l_dir_st +4) THEN
9200          p_DirNum5 := l_ls_dirnum;
9201          p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9202       ELSIF (l_count = l_dir_st +5) THEN
9203          p_DirNum6 := l_ls_dirnum;
9204          p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9205       ELSIF (l_count = l_dir_st +6) THEN
9206          p_DirNum7 := l_ls_dirnum;
9207          p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9208       ELSIF (l_count = l_dir_st +7) THEN
9209          p_DirNum8 := l_ls_dirnum;
9210          p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9211       ELSIF (l_count = l_dir_st +8) THEN
9212          p_DirNum9 := l_ls_dirnum;
9213          p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9214       ELSIF (l_count = l_dir_st +9) THEN
9215          p_DirNum10 := l_ls_dirnum;
9216          p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9217       END IF;
9218 
9219       IF (l_count = l_cur_max_dir) THEN
9220         EXIT;
9221       END IF;
9222       l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
9223    end loop;
9224 
9225    p_MedCrUsedLS := l_cur_max_dir;
9226    hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
9227    hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
9228 
9229    py_za_tx_utl_01032012.StopHrTrace;
9230 
9231    RETURN 1;
9232 
9233 EXCEPTION
9234    WHEN OTHERS THEN
9235       hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm4_01032012',50);
9236       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
9237       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
9238       py_za_tx_utl_01032012.StopHrTrace;
9239       hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm4_01032012: '||TO_CHAR(SQLCODE));
9240       hr_utility.raise_error;
9241 END ZaTxMedTxCrLmpSm4_01032012;
9242 
9243 FUNCTION ZaTxMedTxCrLmpSm5_01032012(
9244     p_MedCrUsedLS           OUT NOCOPY NUMBER
9245   , p_DirNum1               OUT NOCOPY VARCHAR2
9246   , p_MedTxCrUsed1          OUT NOCOPY NUMBER
9247   , p_DirNum2               OUT NOCOPY VARCHAR2
9248   , p_MedTxCrUsed2          OUT NOCOPY NUMBER
9249   , p_DirNum3               OUT NOCOPY VARCHAR2
9250   , p_MedTxCrUsed3          OUT NOCOPY NUMBER
9251   , p_DirNum4               OUT NOCOPY VARCHAR2
9252   , p_MedTxCrUsed4          OUT NOCOPY NUMBER
9253   , p_DirNum5               OUT NOCOPY VARCHAR2
9254   , p_MedTxCrUsed5          OUT NOCOPY NUMBER
9255   , p_DirNum6               OUT NOCOPY VARCHAR2
9256   , p_MedTxCrUsed6          OUT NOCOPY NUMBER
9257   , p_DirNum7               OUT NOCOPY VARCHAR2
9258   , p_MedTxCrUsed7          OUT NOCOPY NUMBER
9259   , p_DirNum8               OUT NOCOPY VARCHAR2
9260   , p_MedTxCrUsed8          OUT NOCOPY NUMBER
9261   , p_DirNum9               OUT NOCOPY VARCHAR2
9262   , p_MedTxCrUsed9          OUT NOCOPY NUMBER
9263   , p_DirNum10              OUT NOCOPY VARCHAR2
9264   , p_MedTxCrUsed10         OUT NOCOPY NUMBER
9265   )RETURN NUMBER
9266 AS
9267 
9268   l_chunk         number :=5;
9269   l_dir_st        number := 41;
9270   l_dir_end       number := 50;
9271   l_ls_dirnum     varchar2(100);
9272   l_cur_max_dir   number;
9273   l_count         number :=0;
9274 
9275 
9276 BEGIN
9277    py_za_tx_utl_01032012.StartHrTrace;
9278    hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm5_01032012',1);
9279 
9280    p_DirNum1 :=' ';
9281    p_MedTxCrUsed1 :=0;
9282    p_DirNum2 :=' ';
9283    p_MedTxCrUsed2 :=0;
9284    p_DirNum3 :=' ';
9285    p_MedTxCrUsed3 :=0;
9286    p_DirNum4 :=' ';
9287    p_MedTxCrUsed4 :=0;
9288    p_DirNum5 :=' ';
9289    p_MedTxCrUsed5 :=0;
9290    p_DirNum6 :=' ';
9291    p_MedTxCrUsed6 :=0;
9292    p_DirNum7 :=' ';
9293    p_MedTxCrUsed7 :=0;
9294    p_DirNum8 :=' ';
9295    p_MedTxCrUsed8 :=0;
9296    p_DirNum9 :=' ';
9297    p_MedTxCrUsed9 :=0;
9298    p_DirNum10 :=' ';
9299    p_MedTxCrUsed10 :=0;
9300 
9301    l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
9302    hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
9303 
9304    l_ls_dirnum := trc_LSDirTab.first;
9305    while (l_ls_dirnum is not null)
9306    loop
9307       hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
9308       hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
9309       l_count := l_count+1;
9310       IF (l_count = l_dir_st) THEN
9311          p_DirNum1 := l_ls_dirnum;
9312          p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9313       ELSIF (l_count = l_dir_st +1) THEN
9314          p_DirNum2 := l_ls_dirnum;
9315          p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9316       ELSIF (l_count = l_dir_st +2) THEN
9317          p_DirNum3 := l_ls_dirnum;
9318          p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9319       ELSIF (l_count = l_dir_st +3) THEN
9320          p_DirNum4 := l_ls_dirnum;
9321          p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9322       ELSIF (l_count = l_dir_st +4) THEN
9323          p_DirNum5 := l_ls_dirnum;
9324          p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9325       ELSIF (l_count = l_dir_st +5) THEN
9326          p_DirNum6 := l_ls_dirnum;
9327          p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9328       ELSIF (l_count = l_dir_st +6) THEN
9329          p_DirNum7 := l_ls_dirnum;
9330          p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9331       ELSIF (l_count = l_dir_st +7) THEN
9332          p_DirNum8 := l_ls_dirnum;
9333          p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9334       ELSIF (l_count = l_dir_st +8) THEN
9335          p_DirNum9 := l_ls_dirnum;
9336          p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9337       ELSIF (l_count = l_dir_st +9) THEN
9338          p_DirNum10 := l_ls_dirnum;
9339          p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9340       END IF;
9341 
9342       IF (l_count = l_cur_max_dir) THEN
9343         EXIT;
9344       END IF;
9345       l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
9346    end loop;
9347 
9348    p_MedCrUsedLS := l_cur_max_dir;
9349    hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
9350    hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
9351 
9352    py_za_tx_utl_01032012.StopHrTrace;
9353 
9354    RETURN 1;
9355 
9356 EXCEPTION
9357    WHEN OTHERS THEN
9358       hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm5_01032012',50);
9359       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
9360       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
9361       py_za_tx_utl_01032012.StopHrTrace;
9362       hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm5_01032012: '||TO_CHAR(SQLCODE));
9363       hr_utility.raise_error;
9364 END ZaTxMedTxCrLmpSm5_01032012;
9365 
9366 FUNCTION ZaTxMedTxCrLmpSm6_01032012(
9367     p_MedCrUsedLS           OUT NOCOPY NUMBER
9368   , p_DirNum1               OUT NOCOPY VARCHAR2
9369   , p_MedTxCrUsed1          OUT NOCOPY NUMBER
9370   , p_DirNum2               OUT NOCOPY VARCHAR2
9371   , p_MedTxCrUsed2          OUT NOCOPY NUMBER
9372   , p_DirNum3               OUT NOCOPY VARCHAR2
9373   , p_MedTxCrUsed3          OUT NOCOPY NUMBER
9374   , p_DirNum4               OUT NOCOPY VARCHAR2
9375   , p_MedTxCrUsed4          OUT NOCOPY NUMBER
9376   , p_DirNum5               OUT NOCOPY VARCHAR2
9377   , p_MedTxCrUsed5          OUT NOCOPY NUMBER
9378   , p_DirNum6               OUT NOCOPY VARCHAR2
9379   , p_MedTxCrUsed6          OUT NOCOPY NUMBER
9380   , p_DirNum7               OUT NOCOPY VARCHAR2
9381   , p_MedTxCrUsed7          OUT NOCOPY NUMBER
9382   , p_DirNum8               OUT NOCOPY VARCHAR2
9383   , p_MedTxCrUsed8          OUT NOCOPY NUMBER
9384   , p_DirNum9               OUT NOCOPY VARCHAR2
9385   , p_MedTxCrUsed9          OUT NOCOPY NUMBER
9386   , p_DirNum10              OUT NOCOPY VARCHAR2
9387   , p_MedTxCrUsed10         OUT NOCOPY NUMBER
9388   )RETURN NUMBER
9389 AS
9390 
9391   l_chunk         number :=6;
9392   l_dir_st        number := 51;
9393   l_dir_end       number := 60;
9394   l_ls_dirnum     varchar2(100);
9395   l_cur_max_dir   number;
9396   l_count         number :=0;
9397 
9398 
9399 BEGIN
9400    py_za_tx_utl_01032012.StartHrTrace;
9401    hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm6_01032012',1);
9402 
9403    p_DirNum1 :=' ';
9404    p_MedTxCrUsed1 :=0;
9405    p_DirNum2 :=' ';
9406    p_MedTxCrUsed2 :=0;
9407    p_DirNum3 :=' ';
9408    p_MedTxCrUsed3 :=0;
9409    p_DirNum4 :=' ';
9410    p_MedTxCrUsed4 :=0;
9411    p_DirNum5 :=' ';
9412    p_MedTxCrUsed5 :=0;
9413    p_DirNum6 :=' ';
9414    p_MedTxCrUsed6 :=0;
9415    p_DirNum7 :=' ';
9416    p_MedTxCrUsed7 :=0;
9417    p_DirNum8 :=' ';
9418    p_MedTxCrUsed8 :=0;
9419    p_DirNum9 :=' ';
9420    p_MedTxCrUsed9 :=0;
9421    p_DirNum10 :=' ';
9422    p_MedTxCrUsed10 :=0;
9423 
9424    l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
9425    hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
9426 
9427    l_ls_dirnum := trc_LSDirTab.first;
9428    while (l_ls_dirnum is not null)
9429    loop
9430       hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
9431       hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
9432       l_count := l_count+1;
9433       IF (l_count = l_dir_st) THEN
9434          p_DirNum1 := l_ls_dirnum;
9435          p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9436       ELSIF (l_count = l_dir_st +1) THEN
9437          p_DirNum2 := l_ls_dirnum;
9438          p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9439       ELSIF (l_count = l_dir_st +2) THEN
9440          p_DirNum3 := l_ls_dirnum;
9441          p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9442       ELSIF (l_count = l_dir_st +3) THEN
9443          p_DirNum4 := l_ls_dirnum;
9444          p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9445       ELSIF (l_count = l_dir_st +4) THEN
9446          p_DirNum5 := l_ls_dirnum;
9447          p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9448       ELSIF (l_count = l_dir_st +5) THEN
9449          p_DirNum6 := l_ls_dirnum;
9450          p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9451       ELSIF (l_count = l_dir_st +6) THEN
9452          p_DirNum7 := l_ls_dirnum;
9453          p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9454       ELSIF (l_count = l_dir_st +7) THEN
9455          p_DirNum8 := l_ls_dirnum;
9456          p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9457       ELSIF (l_count = l_dir_st +8) THEN
9458          p_DirNum9 := l_ls_dirnum;
9459          p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9460       ELSIF (l_count = l_dir_st +9) THEN
9461          p_DirNum10 := l_ls_dirnum;
9462          p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9463       END IF;
9464 
9465       IF (l_count = l_cur_max_dir) THEN
9466         EXIT;
9467       END IF;
9468       l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
9469    end loop;
9470 
9471    p_MedCrUsedLS := l_cur_max_dir;
9472    hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
9473    hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
9474 
9475    py_za_tx_utl_01032012.StopHrTrace;
9476 
9477    RETURN 1;
9478 
9479 EXCEPTION
9480    WHEN OTHERS THEN
9481       hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm6_01032012',50);
9482       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
9483       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
9484       py_za_tx_utl_01032012.StopHrTrace;
9485       hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm6_01032012: '||TO_CHAR(SQLCODE));
9486       hr_utility.raise_error;
9487 END ZaTxMedTxCrLmpSm6_01032012;
9488 
9489 
9490 FUNCTION ZaTxMedTxCrLmpSm7_01032012(
9491     p_MedCrUsedLS           OUT NOCOPY NUMBER
9492   , p_DirNum1               OUT NOCOPY VARCHAR2
9493   , p_MedTxCrUsed1          OUT NOCOPY NUMBER
9494   , p_DirNum2               OUT NOCOPY VARCHAR2
9495   , p_MedTxCrUsed2          OUT NOCOPY NUMBER
9496   , p_DirNum3               OUT NOCOPY VARCHAR2
9497   , p_MedTxCrUsed3          OUT NOCOPY NUMBER
9498   , p_DirNum4               OUT NOCOPY VARCHAR2
9499   , p_MedTxCrUsed4          OUT NOCOPY NUMBER
9500   , p_DirNum5               OUT NOCOPY VARCHAR2
9501   , p_MedTxCrUsed5          OUT NOCOPY NUMBER
9502   , p_DirNum6               OUT NOCOPY VARCHAR2
9503   , p_MedTxCrUsed6          OUT NOCOPY NUMBER
9504   , p_DirNum7               OUT NOCOPY VARCHAR2
9505   , p_MedTxCrUsed7          OUT NOCOPY NUMBER
9506   , p_DirNum8               OUT NOCOPY VARCHAR2
9507   , p_MedTxCrUsed8          OUT NOCOPY NUMBER
9508   , p_DirNum9               OUT NOCOPY VARCHAR2
9509   , p_MedTxCrUsed9          OUT NOCOPY NUMBER
9510   , p_DirNum10              OUT NOCOPY VARCHAR2
9511   , p_MedTxCrUsed10         OUT NOCOPY NUMBER
9512   )RETURN NUMBER
9513 AS
9514 
9515   l_chunk         number :=7;
9516   l_dir_st        number := 61;
9517   l_dir_end       number := 70;
9518   l_ls_dirnum     varchar2(100);
9519   l_cur_max_dir   number;
9520   l_count         number :=0;
9521 
9522 
9523 BEGIN
9524    py_za_tx_utl_01032012.StartHrTrace;
9525    hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm7_01032012',1);
9526 
9527    p_DirNum1 :=' ';
9528    p_MedTxCrUsed1 :=0;
9529    p_DirNum2 :=' ';
9530    p_MedTxCrUsed2 :=0;
9531    p_DirNum3 :=' ';
9532    p_MedTxCrUsed3 :=0;
9533    p_DirNum4 :=' ';
9534    p_MedTxCrUsed4 :=0;
9535    p_DirNum5 :=' ';
9536    p_MedTxCrUsed5 :=0;
9537    p_DirNum6 :=' ';
9538    p_MedTxCrUsed6 :=0;
9539    p_DirNum7 :=' ';
9540    p_MedTxCrUsed7 :=0;
9541    p_DirNum8 :=' ';
9542    p_MedTxCrUsed8 :=0;
9543    p_DirNum9 :=' ';
9544    p_MedTxCrUsed9 :=0;
9545    p_DirNum10 :=' ';
9546    p_MedTxCrUsed10 :=0;
9547 
9548    l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
9549    hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
9550 
9551    l_ls_dirnum := trc_LSDirTab.first;
9552    while (l_ls_dirnum is not null)
9553    loop
9554       hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
9555       hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
9556       l_count := l_count+1;
9557       IF (l_count = l_dir_st) THEN
9558          p_DirNum1 := l_ls_dirnum;
9559          p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9560       ELSIF (l_count = l_dir_st +1) THEN
9561          p_DirNum2 := l_ls_dirnum;
9562          p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9563       ELSIF (l_count = l_dir_st +2) THEN
9564          p_DirNum3 := l_ls_dirnum;
9565          p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9566       ELSIF (l_count = l_dir_st +3) THEN
9567          p_DirNum4 := l_ls_dirnum;
9568          p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9569       ELSIF (l_count = l_dir_st +4) THEN
9570          p_DirNum5 := l_ls_dirnum;
9571          p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9572       ELSIF (l_count = l_dir_st +5) THEN
9573          p_DirNum6 := l_ls_dirnum;
9574          p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9575       ELSIF (l_count = l_dir_st +6) THEN
9576          p_DirNum7 := l_ls_dirnum;
9577          p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9578       ELSIF (l_count = l_dir_st +7) THEN
9579          p_DirNum8 := l_ls_dirnum;
9580          p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9581       ELSIF (l_count = l_dir_st +8) THEN
9582          p_DirNum9 := l_ls_dirnum;
9583          p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9584       ELSIF (l_count = l_dir_st +9) THEN
9585          p_DirNum10 := l_ls_dirnum;
9586          p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9587       END IF;
9588 
9589       IF (l_count = l_cur_max_dir) THEN
9590         EXIT;
9591       END IF;
9592       l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
9593    end loop;
9594 
9595    p_MedCrUsedLS := l_cur_max_dir;
9596    hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
9597    hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
9598 
9599    py_za_tx_utl_01032012.StopHrTrace;
9600 
9601    RETURN 1;
9602 
9603 EXCEPTION
9604    WHEN OTHERS THEN
9605       hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm7_01032012',50);
9606       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
9607       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
9608       py_za_tx_utl_01032012.StopHrTrace;
9609       hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm7_01032012: '||TO_CHAR(SQLCODE));
9610       hr_utility.raise_error;
9611 END ZaTxMedTxCrLmpSm7_01032012;
9612 
9613 
9614 FUNCTION ZaTxMedTxCrLmpSm8_01032012(
9615     p_MedCrUsedLS           OUT NOCOPY NUMBER
9616   , p_DirNum1               OUT NOCOPY VARCHAR2
9617   , p_MedTxCrUsed1          OUT NOCOPY NUMBER
9618   , p_DirNum2               OUT NOCOPY VARCHAR2
9619   , p_MedTxCrUsed2          OUT NOCOPY NUMBER
9620   , p_DirNum3               OUT NOCOPY VARCHAR2
9621   , p_MedTxCrUsed3          OUT NOCOPY NUMBER
9622   , p_DirNum4               OUT NOCOPY VARCHAR2
9623   , p_MedTxCrUsed4          OUT NOCOPY NUMBER
9624   , p_DirNum5               OUT NOCOPY VARCHAR2
9625   , p_MedTxCrUsed5          OUT NOCOPY NUMBER
9626   , p_DirNum6               OUT NOCOPY VARCHAR2
9627   , p_MedTxCrUsed6          OUT NOCOPY NUMBER
9628   , p_DirNum7               OUT NOCOPY VARCHAR2
9629   , p_MedTxCrUsed7          OUT NOCOPY NUMBER
9630   , p_DirNum8               OUT NOCOPY VARCHAR2
9631   , p_MedTxCrUsed8          OUT NOCOPY NUMBER
9632   , p_DirNum9               OUT NOCOPY VARCHAR2
9633   , p_MedTxCrUsed9          OUT NOCOPY NUMBER
9634   , p_DirNum10              OUT NOCOPY VARCHAR2
9635   , p_MedTxCrUsed10         OUT NOCOPY NUMBER
9636   )RETURN NUMBER
9637 AS
9638 
9639   l_chunk         number :=8;
9640   l_dir_st        number := 71;
9641   l_dir_end       number := 80;
9642   l_ls_dirnum     varchar2(100);
9643   l_cur_max_dir   number;
9644   l_count         number :=0;
9645 
9646 
9647 BEGIN
9648    py_za_tx_utl_01032012.StartHrTrace;
9649    hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm8_01032012',1);
9650 
9651    p_DirNum1 :=' ';
9652    p_MedTxCrUsed1 :=0;
9653    p_DirNum2 :=' ';
9654    p_MedTxCrUsed2 :=0;
9655    p_DirNum3 :=' ';
9656    p_MedTxCrUsed3 :=0;
9657    p_DirNum4 :=' ';
9658    p_MedTxCrUsed4 :=0;
9659    p_DirNum5 :=' ';
9660    p_MedTxCrUsed5 :=0;
9661    p_DirNum6 :=' ';
9662    p_MedTxCrUsed6 :=0;
9663    p_DirNum7 :=' ';
9664    p_MedTxCrUsed7 :=0;
9665    p_DirNum8 :=' ';
9666    p_MedTxCrUsed8 :=0;
9667    p_DirNum9 :=' ';
9668    p_MedTxCrUsed9 :=0;
9669    p_DirNum10 :=' ';
9670    p_MedTxCrUsed10 :=0;
9671 
9672    l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
9673    hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
9674 
9675    l_ls_dirnum := trc_LSDirTab.first;
9676    while (l_ls_dirnum is not null)
9677    loop
9678       hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
9679       hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
9680       l_count := l_count+1;
9681       IF (l_count = l_dir_st) THEN
9682          p_DirNum1 := l_ls_dirnum;
9683          p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9684       ELSIF (l_count = l_dir_st +1) THEN
9685          p_DirNum2 := l_ls_dirnum;
9686          p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9687       ELSIF (l_count = l_dir_st +2) THEN
9688          p_DirNum3 := l_ls_dirnum;
9689          p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9690       ELSIF (l_count = l_dir_st +3) THEN
9691          p_DirNum4 := l_ls_dirnum;
9692          p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9693       ELSIF (l_count = l_dir_st +4) THEN
9694          p_DirNum5 := l_ls_dirnum;
9695          p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9696       ELSIF (l_count = l_dir_st +5) THEN
9697          p_DirNum6 := l_ls_dirnum;
9698          p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9699       ELSIF (l_count = l_dir_st +6) THEN
9700          p_DirNum7 := l_ls_dirnum;
9701          p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9702       ELSIF (l_count = l_dir_st +7) THEN
9703          p_DirNum8 := l_ls_dirnum;
9704          p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9705       ELSIF (l_count = l_dir_st +8) THEN
9706          p_DirNum9 := l_ls_dirnum;
9707          p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9708       ELSIF (l_count = l_dir_st +9) THEN
9709          p_DirNum10 := l_ls_dirnum;
9710          p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9711       END IF;
9712 
9713       IF (l_count = l_cur_max_dir) THEN
9714         EXIT;
9715       END IF;
9716       l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
9717    end loop;
9718 
9719    p_MedCrUsedLS := l_cur_max_dir;
9720    hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
9721    hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
9722 
9723    py_za_tx_utl_01032012.StopHrTrace;
9724 
9725    RETURN 1;
9726 
9727 EXCEPTION
9728    WHEN OTHERS THEN
9729       hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm8_01032012',50);
9730       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
9731       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
9732       py_za_tx_utl_01032012.StopHrTrace;
9733       hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm8_01032012: '||TO_CHAR(SQLCODE));
9734       hr_utility.raise_error;
9735 END ZaTxMedTxCrLmpSm8_01032012;
9736 
9737 
9738 FUNCTION ZaTxMedTxCrLmpSm9_01032012(
9739     p_MedCrUsedLS           OUT NOCOPY NUMBER
9740   , p_DirNum1               OUT NOCOPY VARCHAR2
9741   , p_MedTxCrUsed1          OUT NOCOPY NUMBER
9742   , p_DirNum2               OUT NOCOPY VARCHAR2
9743   , p_MedTxCrUsed2          OUT NOCOPY NUMBER
9744   , p_DirNum3               OUT NOCOPY VARCHAR2
9745   , p_MedTxCrUsed3          OUT NOCOPY NUMBER
9746   , p_DirNum4               OUT NOCOPY VARCHAR2
9747   , p_MedTxCrUsed4          OUT NOCOPY NUMBER
9748   , p_DirNum5               OUT NOCOPY VARCHAR2
9749   , p_MedTxCrUsed5          OUT NOCOPY NUMBER
9750   , p_DirNum6               OUT NOCOPY VARCHAR2
9751   , p_MedTxCrUsed6          OUT NOCOPY NUMBER
9752   , p_DirNum7               OUT NOCOPY VARCHAR2
9753   , p_MedTxCrUsed7          OUT NOCOPY NUMBER
9754   , p_DirNum8               OUT NOCOPY VARCHAR2
9755   , p_MedTxCrUsed8          OUT NOCOPY NUMBER
9756   , p_DirNum9               OUT NOCOPY VARCHAR2
9757   , p_MedTxCrUsed9          OUT NOCOPY NUMBER
9758   , p_DirNum10              OUT NOCOPY VARCHAR2
9759   , p_MedTxCrUsed10         OUT NOCOPY NUMBER
9760   )RETURN NUMBER
9761 AS
9762 
9763   l_chunk         number :=9;
9764   l_dir_st        number := 81;
9765   l_dir_end       number := 90;
9766   l_ls_dirnum     varchar2(100);
9767   l_cur_max_dir   number;
9768   l_count         number :=0;
9769 
9770 
9771 BEGIN
9772    py_za_tx_utl_01032012.StartHrTrace;
9773    hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm9_01032012',1);
9774 
9775    p_DirNum1 :=' ';
9776    p_MedTxCrUsed1 :=0;
9777    p_DirNum2 :=' ';
9778    p_MedTxCrUsed2 :=0;
9779    p_DirNum3 :=' ';
9780    p_MedTxCrUsed3 :=0;
9781    p_DirNum4 :=' ';
9782    p_MedTxCrUsed4 :=0;
9783    p_DirNum5 :=' ';
9784    p_MedTxCrUsed5 :=0;
9785    p_DirNum6 :=' ';
9786    p_MedTxCrUsed6 :=0;
9787    p_DirNum7 :=' ';
9788    p_MedTxCrUsed7 :=0;
9789    p_DirNum8 :=' ';
9790    p_MedTxCrUsed8 :=0;
9791    p_DirNum9 :=' ';
9792    p_MedTxCrUsed9 :=0;
9793    p_DirNum10 :=' ';
9794    p_MedTxCrUsed10 :=0;
9795 
9796    l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
9797    hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
9798 
9799    l_ls_dirnum := trc_LSDirTab.first;
9800    while (l_ls_dirnum is not null)
9801    loop
9802       hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
9803       hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
9804       l_count := l_count+1;
9805       IF (l_count = l_dir_st) THEN
9806          p_DirNum1 := l_ls_dirnum;
9807          p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9808       ELSIF (l_count = l_dir_st +1) THEN
9809          p_DirNum2 := l_ls_dirnum;
9810          p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9811       ELSIF (l_count = l_dir_st +2) THEN
9812          p_DirNum3 := l_ls_dirnum;
9813          p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9814       ELSIF (l_count = l_dir_st +3) THEN
9815          p_DirNum4 := l_ls_dirnum;
9816          p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9817       ELSIF (l_count = l_dir_st +4) THEN
9818          p_DirNum5 := l_ls_dirnum;
9819          p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9820       ELSIF (l_count = l_dir_st +5) THEN
9821          p_DirNum6 := l_ls_dirnum;
9822          p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9823       ELSIF (l_count = l_dir_st +6) THEN
9824          p_DirNum7 := l_ls_dirnum;
9825          p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9826       ELSIF (l_count = l_dir_st +7) THEN
9827          p_DirNum8 := l_ls_dirnum;
9828          p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9829       ELSIF (l_count = l_dir_st +8) THEN
9830          p_DirNum9 := l_ls_dirnum;
9831          p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9832       ELSIF (l_count = l_dir_st +9) THEN
9833          p_DirNum10 := l_ls_dirnum;
9834          p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9835       END IF;
9836 
9837       IF (l_count = l_cur_max_dir) THEN
9838         EXIT;
9839       END IF;
9840       l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
9841    end loop;
9842 
9843    p_MedCrUsedLS := l_cur_max_dir;
9844    hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
9845    hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
9846 
9847    py_za_tx_utl_01032012.StopHrTrace;
9848 
9849    RETURN 1;
9850 
9851 EXCEPTION
9852    WHEN OTHERS THEN
9853       hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm9_01032012',50);
9854       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
9855       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
9856       py_za_tx_utl_01032012.StopHrTrace;
9857       hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm9_01032012: '||TO_CHAR(SQLCODE));
9858       hr_utility.raise_error;
9859 END ZaTxMedTxCrLmpSm9_01032012;
9860 
9861 
9862 FUNCTION ZaTxMedTxCrLmpSm10_01032012(
9863     p_MedCrUsedLS           OUT NOCOPY NUMBER
9864   , p_DirNum1               OUT NOCOPY VARCHAR2
9865   , p_MedTxCrUsed1          OUT NOCOPY NUMBER
9866   , p_DirNum2               OUT NOCOPY VARCHAR2
9867   , p_MedTxCrUsed2          OUT NOCOPY NUMBER
9868   , p_DirNum3               OUT NOCOPY VARCHAR2
9869   , p_MedTxCrUsed3          OUT NOCOPY NUMBER
9870   , p_DirNum4               OUT NOCOPY VARCHAR2
9871   , p_MedTxCrUsed4          OUT NOCOPY NUMBER
9872   , p_DirNum5               OUT NOCOPY VARCHAR2
9873   , p_MedTxCrUsed5          OUT NOCOPY NUMBER
9874   , p_DirNum6               OUT NOCOPY VARCHAR2
9875   , p_MedTxCrUsed6          OUT NOCOPY NUMBER
9876   , p_DirNum7               OUT NOCOPY VARCHAR2
9877   , p_MedTxCrUsed7          OUT NOCOPY NUMBER
9878   , p_DirNum8               OUT NOCOPY VARCHAR2
9879   , p_MedTxCrUsed8          OUT NOCOPY NUMBER
9880   , p_DirNum9               OUT NOCOPY VARCHAR2
9881   , p_MedTxCrUsed9          OUT NOCOPY NUMBER
9882   , p_DirNum10              OUT NOCOPY VARCHAR2
9883   , p_MedTxCrUsed10         OUT NOCOPY NUMBER
9884   )RETURN NUMBER
9885 AS
9886 
9887   l_chunk         number :=10;
9888   l_dir_st        number := 91;
9889   l_dir_end       number := 100;
9890   l_ls_dirnum     varchar2(100);
9891   l_cur_max_dir   number;
9892   l_count         number :=0;
9893 
9894 
9895 BEGIN
9896    py_za_tx_utl_01032012.StartHrTrace;
9897    hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm10_01032012',1);
9898 
9899    p_DirNum1 :=' ';
9900    p_MedTxCrUsed1 :=0;
9901    p_DirNum2 :=' ';
9902    p_MedTxCrUsed2 :=0;
9903    p_DirNum3 :=' ';
9904    p_MedTxCrUsed3 :=0;
9905    p_DirNum4 :=' ';
9906    p_MedTxCrUsed4 :=0;
9907    p_DirNum5 :=' ';
9908    p_MedTxCrUsed5 :=0;
9909    p_DirNum6 :=' ';
9910    p_MedTxCrUsed6 :=0;
9911    p_DirNum7 :=' ';
9912    p_MedTxCrUsed7 :=0;
9913    p_DirNum8 :=' ';
9914    p_MedTxCrUsed8 :=0;
9915    p_DirNum9 :=' ';
9916    p_MedTxCrUsed9 :=0;
9917    p_DirNum10 :=' ';
9918    p_MedTxCrUsed10 :=0;
9919 
9920    l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
9921    hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
9922 
9923    l_ls_dirnum := trc_LSDirTab.first;
9924    while (l_ls_dirnum is not null)
9925    loop
9926       hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
9927       hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
9928       l_count := l_count+1;
9929       IF (l_count = l_dir_st) THEN
9930          p_DirNum1 := l_ls_dirnum;
9931          p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9932       ELSIF (l_count = l_dir_st +1) THEN
9933          p_DirNum2 := l_ls_dirnum;
9934          p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9935       ELSIF (l_count = l_dir_st +2) THEN
9936          p_DirNum3 := l_ls_dirnum;
9937          p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9938       ELSIF (l_count = l_dir_st +3) THEN
9939          p_DirNum4 := l_ls_dirnum;
9940          p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9941       ELSIF (l_count = l_dir_st +4) THEN
9942          p_DirNum5 := l_ls_dirnum;
9943          p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9944       ELSIF (l_count = l_dir_st +5) THEN
9945          p_DirNum6 := l_ls_dirnum;
9946          p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9947       ELSIF (l_count = l_dir_st +6) THEN
9948          p_DirNum7 := l_ls_dirnum;
9949          p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9950       ELSIF (l_count = l_dir_st +7) THEN
9951          p_DirNum8 := l_ls_dirnum;
9952          p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9953       ELSIF (l_count = l_dir_st +8) THEN
9954          p_DirNum9 := l_ls_dirnum;
9955          p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9956       ELSIF (l_count = l_dir_st +9) THEN
9957          p_DirNum10 := l_ls_dirnum;
9958          p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9959       END IF;
9960 
9961       IF (l_count = l_cur_max_dir) THEN
9962         EXIT;
9963       END IF;
9964       l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
9965    end loop;
9966 
9967    p_MedCrUsedLS := l_cur_max_dir;
9968    hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
9969    hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
9970 
9971    py_za_tx_utl_01032012.StopHrTrace;
9972 
9973    RETURN 1;
9974 
9975 EXCEPTION
9976    WHEN OTHERS THEN
9977       hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm10_01032012',50);
9978       WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
9979       WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
9980       py_za_tx_utl_01032012.StopHrTrace;
9981       hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm10_01032012: '||TO_CHAR(SQLCODE));
9982       hr_utility.raise_error;
9983 END ZaTxMedTxCrLmpSm10_01032012;
9984 
9985 
9986 END PY_ZA_TX_01032012;