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