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