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