[Home] [Help]
PACKAGE BODY: APPS.PY_ZA_TX_01032005
Source
1 PACKAGE BODY py_za_tx_01032005 AS
2 /* $Header: pyzat006.pkb 120.7 2006/05/16 11:28:13 amahanty noship $ */
3 /* Copyright (c) Oracle Corporation 1999. All rights reserved. */
4 /*
5 PRODUCT
6 Oracle Payroll - ZA Localisation Tax Module
7
8 NAME
9 py_za_tx_01032005.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_01032005
19 ZaTxGlb_01032005
20 ZaTxDbi_01032005
21 ZaTxBal1_01032005
22 ZaTxBal2_01032005
23 ZaTxBal3_01032005
24 ZaTx_01032005
25
26 PRIVATE FUNCTIONS
27 <none>
28
29
30 PRIVATE PROCEDURES
31 WrtHrTrc
32 Wrapper procedure for py_za_tx_utl_01032005.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 A. Mahanty 16/05/2006 115.12 5148830 References to the dimension _rtr_asg_tax_ptd
68 added in ZATX6_01032006. Norcalc is used
69 even when the asg has retro results.
70 A. Mahanty 01/03/2006 115.11 4346955 References to the dimension _non_rtr_asg_tax_ptd
71 removed in ZATX6_01032005. SitCalc is used when
72 the assignment has retropay results.
73 A. Mahanty 03/11/2005 115.10 4346955 Enh Retropay: ZATX6_01032005 modified
74 to use the new dimension _non_rtr_asg_tax_ptd
75 J.N. Louw 24/08/2005 115.9 4566053 Updated
76 J.N. Louw 17/08/2005 115.8 4346920 Updated
77 R.V. Pahune 05/08/2005 115.7 4346920 Balance feed enhancement
78 A. Mahanty 14/04/2005 115.6 3491357 BRA Enhancement
79 Balance Value retrieval modified.
80 J.N. Louw 05/04/2005 115.5 4032647
81 R.V. Pahune 05/04/2005 115.4 4276047
82 J.N. Louw 31/01/2005 115.3 4153654
83 J.N. Louw 12/01/2005 115.2 4117011
84 J.N. Louw 07/01/2005 115.1 4106307
85 4106240
86 J.N. Louw 22/12/2004 115.0 Next Version of Main ZA Tax
87 Package.
88 For detail history see
89 py_za_tx_01032004
90 */
91
92 -------------------------------------------------------------------------------
93 -- PACKAGE BODY --
94 -------------------------------------------------------------------------------
95
96 -------------------------------------------------------------------------------
97 -- WrtHrTrc
98 -- Wrapper for py_za_tx_utl_01032005.WriteHrTrace
99 -------------------------------------------------------------------------------
100 PROCEDURE WrtHrTrc(
101 p_Buf IN VARCHAR2
102 )
103 AS
104
105 BEGIN
106 py_za_tx_utl_01032005.WriteHrTrace(p_Buf);
107 END WrtHrTrc;
108
109 -------------------------------------------------------------------------------
110 -- NetTxbIncCalc
111 -- Calculates the net taxable income value for the calendar month
112 -------------------------------------------------------------------------------
113 PROCEDURE NetTxbIncCalc AS
114
115 -- Variable Declaration
116 nti_CurMthStrtDte DATE;
117 nti_CurMthEndDte DATE;
118 nti_SitFactor NUMBER;
119 nti_PerTypInc BALANCE DEFAULT 0;
120 nti_PerTypErn BALANCE DEFAULT 0;
121 nti_AnnTypErn BALANCE DEFAULT 0;
122 nti_PerPenFnd BALANCE DEFAULT 0;
123 nti_PerRfiCon BALANCE DEFAULT 0;
124 nti_PerPenFndMax BALANCE DEFAULT 0;
125 nti_PerPenFndAbm BALANCE DEFAULT 0;
126 nti_AnnPenFnd BALANCE DEFAULT 0;
127 nti_AnnRfiCon BALANCE DEFAULT 0;
128 nti_AnnPenFndMax BALANCE DEFAULT 0;
129 nti_AnnPenFndAbm BALANCE DEFAULT 0;
130 nti_PerArrPenFnd BALANCE DEFAULT 0;
131 nti_PerArrPenFndAbm BALANCE DEFAULT 0;
132 nti_PerRetAnu BALANCE DEFAULT 0;
133 nti_PerNrfiCon BALANCE DEFAULT 0;
134 nti_PerRetAnuMax BALANCE DEFAULT 0;
135 nti_PerRetAnuAbm BALANCE DEFAULT 0;
136 nti_PerArrRetAnu BALANCE DEFAULT 0;
137 nti_PerArrRetAnuAbm BALANCE DEFAULT 0;
138 nti_AnnArrPenFnd BALANCE DEFAULT 0;
139 nti_AnnArrPenFndAbm BALANCE DEFAULT 0;
140 nti_AnnRetAnu BALANCE DEFAULT 0;
141 nti_AnnNrfiCon BALANCE DEFAULT 0;
142 nti_AnnRetAnuMax BALANCE DEFAULT 0;
143 nti_AnnRetAnuAbm BALANCE DEFAULT 0;
144 nti_AnnArrRetAnu BALANCE DEFAULT 0;
145 nti_AnnArrRetAnuAbm BALANCE DEFAULT 0;
146 nti_MedAidAbm BALANCE DEFAULT 0;
147 nti_PerTotAbm BALANCE DEFAULT 0;
148 nti_AnnTotAbm BALANCE DEFAULT 0;
149 nti_TxbPerTypInc BALANCE DEFAULT 0;
150 nti_TxbAnnTypInc BALANCE DEFAULT 0;
151 nti_NetPerTxbInc BALANCE DEFAULT 0;
152 nti_NetAnnTxbInc BALANCE DEFAULT 0;
153 l_65Year DATE;
154 -- Fixed Pension Basis
155 nti_PerTxbPkg BALANCE DEFAULT 0;
156 nti_AnnTxbPkg BALANCE DEFAULT 0;
157 nti_TotPkg BALANCE DEFAULT 0;
158 nti_TxbFxdPrc BALANCE DEFAULT 0;
159 nti_PerRFITotPkgPTD BALANCE DEFAULT 0;
160 nti_PerNRFITotPkgPTD BALANCE DEFAULT 0;
161 nti_AnnRFITotPkgPTD BALANCE DEFAULT 0;
162 nti_AnnNRFITotPkgPTD BALANCE DEFAULT 0;
163 nti_PerRFITotPkgPTD_Upd BALANCE DEFAULT 0;
164 nti_PerNRFITotPkgPTD_Upd BALANCE DEFAULT 0;
165 nti_AnnRFITotPkgPTD_Upd BALANCE DEFAULT 0;
166 nti_AnnNRFITotPkgPTD_Upd BALANCE DEFAULT 0;
167 -- Income Protection Policy
168 nti_PerIncProPolAbm BALANCE DEFAULT 0;
169 nti_AnnIncProPolAbm BALANCE DEFAULT 0;
170
171 BEGIN
172 hr_utility.set_location('py_za_tx_01032005.NetTxbIncCalc',1);
173 -- Calculate the Current Effective Calendar Month to Date Start Date
174 --
175 SELECT trunc(dbi_SES_DTE,'Month')
176 INTO nti_CurMthStrtDte
177 FROM dual;
178 hr_utility.set_location('py_za_tx_01032005.NetTxbIncCalc',2);
179
180 -- Calculate the Current Effective Calendar Month to Date End Date
181 --
182 SELECT last_day(dbi_SES_DTE)
183 INTO nti_CurMthEndDte
184 FROM dual;
185 hr_utility.set_location('py_za_tx_01032005.NetTxbIncCalc',3);
186
187 -- Calculate Site Factor
188 --
189 -- Based on the number of days in the calendar year over days in the calendar month
190 nti_SitFactor := dbi_ZA_DYS_IN_YR / (nti_CurMthEndDte - nti_CurMthStrtDte + 1);
191
192 hr_utility.set_location('py_za_tx_01032005.NetTxbIncCalc',4);
193
194 WrtHrTrc('nti_CurMthEndDte: '||to_char(nti_CurMthEndDte,'DD/MM/YYYY'));
195 WrtHrTrc('nti_CurMthStrtDte: '||to_char(nti_CurMthStrtDte,'DD/MM/YYYY'));
196
197 -- Calculate the Taxable Portion of the Not-Fully Taxable Income Balances
198 --
199 bal_TOT_TXB_TA_CMTD := bal_TOT_TXB_TA_CMTD * glb_ZA_TRV_ALL_TX_PRC / 100;
200
201 bal_TOT_TXB_PO_CMTD := bal_TOT_TXB_PO_CMTD * glb_ZA_PBL_TX_PRC / 100;
202
203 -- Sum Period Type Income Calendar Month to Date Balances
204 --
205 nti_PerTypInc := bal_TOT_SKL_INC_CMTD;
206 -- Annualise by the Site Factor the Period Type Income
207 --
208 nti_PerTypErn := nti_PerTypInc * nti_SitFactor;
209 -- Sum Annual Type Income Calendar Month to Date Balances
210 --
211 nti_AnnTypErn := nti_PerTypErn + bal_TOT_SKL_ANN_INC_CMTD;
212
213 -----------------------------
214 -- Calculate Abatement Values
215 -----------------------------
216 -------------------------
217 -- Pension Fund Abatement
218 -------------------------
219 ---------------------
220 -- Period Calculation
221 ---------------------
222 -- Annualise Period Pension Fund Contribution
223 nti_PerPenFnd := bal_CUR_PF_CMTD * nti_SitFactor;
224 -- Annualise Period Rfiable Contributions
225 nti_PerRfiCon := bal_TOT_RFI_INC_CMTD * nti_SitFactor;
226 ---------------------
227 -- Annual Calculation
228 ---------------------
229 -- Annual Pension Fund Contribution
230 nti_AnnPenFnd := nti_PerPenFnd + bal_ANN_PF_CMTD;
231 -- Annual Rfi Contribution
232 nti_AnnRfiCon := nti_PerRfiCon + bal_TOT_RFI_AN_INC_CMTD;
233
234 --------------------------------
235 -- Arrear Pension Fund Abatement
236 --------------------------------
237 hr_utility.set_location('py_za_tx_01032005.NetTxbIncCalc',19);
238 -------------
239 -- Excess ITD
240 -------------
241 nti_PerArrPenFnd := bal_EXC_ARR_PEN_ITD;
242 ------------------------------------
243 -- Current/Annual based on frequency
244 ------------------------------------
245 nti_PerArrPenFnd :=
246 nti_PerArrPenFnd + ( bal_ARR_PF_CMTD * nti_SitFactor);
247 ---------
248 -- Annual
249 ---------
250 nti_AnnArrPenFnd := nti_PerArrPenFnd + bal_ANN_ARR_PF_CMTD;
251
252 -------------------------------
253 -- Retirement Annuity Abatement
254 -------------------------------
255 hr_utility.set_location('py_za_tx_01032005.NetTxbIncCalc',20);
256 -------------
257 -- Current RA
258 -------------
259 -- Calculate RA Contribution
260 nti_PerRetAnu := bal_CUR_RA_CMTD * nti_SitFactor;
261 ---------------------
262 -- Current NRFI Contr
263 ---------------------
264 IF bal_CUR_PF_CMTD + bal_ANN_PF_CMTD = 0 THEN
265 hr_utility.set_location('py_za_tx_01032005.NetTxbIncCalc',21);
266 nti_PerNrfiCon := (
267 bal_TOT_RFI_INC_CMTD + bal_TOT_NRFI_INC_CMTD
268 )
269 * nti_SitFactor;
270 ELSE
271 hr_utility.set_location('py_za_tx_01032005.NetTxbIncCalc',22);
272 nti_PerNrfiCon := bal_TOT_NRFI_INC_CMTD * nti_SitFactor;
273 END IF;
274 ------------
275 -- Annual RA
276 ------------
277 nti_AnnRetAnu := nti_PerRetAnu + bal_ANN_RA_CMTD;
278
279 IF bal_CUR_PF_CMTD + bal_ANN_PF_CMTD = 0 THEN
280 hr_utility.set_location('py_za_tx_01032005.NetTxbIncCalc',23);
281
282 nti_AnnNrfiCon := nti_PerNrfiCon
283 + bal_TOT_NRFI_AN_INC_CMTD
284 + bal_TOT_RFI_AN_INC_CMTD;
285 ELSE
286 hr_utility.set_location('py_za_tx_01032005.NetTxbIncCalc',24);
287 nti_AnnNrfiCon := nti_PerNrfiCon + bal_TOT_NRFI_AN_INC_CMTD;
288 END IF;
289 --------------------------------------
290 -- Arrear Retirement Annuity Abatement
291 --------------------------------------
292 hr_utility.set_location('py_za_tx_01032005.NetTxbIncCalc',25);
293 -------------
294 -- Excess ITD
295 -------------
296 nti_PerArrRetAnu := bal_EXC_ARR_RA_ITD;
297 ------------------------------------
298 -- Current/Annual based on frequency
299 ------------------------------------
300 nti_PerArrRetAnu := nti_PerArrRetAnu
301 + ( bal_ARR_RA_CMTD
302 * nti_SitFactor
303 );
304 ---------
305 -- Annual
306 ---------
307 nti_AnnArrRetAnu := nti_PerArrRetAnu
308 + nti_AnnArrRetAnu
309 + bal_ANN_ARR_RA_CMTD;
310
311 ------------------------
312 -- Medical Aid Abatement
313 ------------------------
314 nti_MedAidAbm := bal_MED_CONTR_CMTD * nti_SitFactor;
315
316 ---------------------------
317 -- Income Protection Policy
318 ---------------------------
319 ---------------------
320 -- Period Calculation
321 ---------------------
322 -- Annualise Income Protection Policy Contributions
323 nti_PerIncProPolAbm := bal_EE_INC_PRO_POL_CMTD * nti_SitFactor;
324
325 hr_utility.set_location('py_za_tx_01032005.NetTxbIncCalc',26);
326
327 ---------------------
328 -- Annual Calculation
329 ---------------------
330 -- Annual Income Protection Policy Contributions
331 nti_AnnIncProPolAbm :=
332 nti_PerIncProPolAbm
333 + bal_ANN_EE_INC_PRO_POL_CMTD;
334
335 ----------------------------------------------------------------------------
336 -- CALCULATE THE ABATEMENTS --
337 ----------------------------------------------------------------------------
338 -------------------------
339 -- Pension Fund Abatement
340 -------------------------
341 ---------------------
342 -- Period Calculation
343 ---------------------
344 -- Calculate the Pension Fund Maximum
345 nti_PerPenFndMax := GREATEST( glb_ZA_PF_AN_MX_ABT
346 , glb_ZA_PF_MX_PRC / 100 * nti_PerRfiCon
347 );
348 -- Calculate Period Pension Fund Abatement
349 nti_PerPenFndAbm := LEAST(nti_PerPenFnd, nti_PerPenFndMax);
350 ---------------------
351 -- Annual Calculation
352 ---------------------
353 -- Calculate the Pension Fund Maximum
354 nti_AnnPenFndMax := GREATEST( glb_ZA_PF_AN_MX_ABT
355 , glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiCon
356 );
357
358 -- Calculate Annual Pension Fund Abatement
359 nti_AnnPenFndAbm := LEAST(nti_AnnPenFnd, nti_AnnPenFndMax);
360 --------------------------------
361 -- Arrear Pension Fund Abatement
362 --------------------------------
363 ---------------------
364 -- Period Calculation
365 ---------------------
366 nti_PerArrPenFndAbm := LEAST(nti_PerArrPenFnd, glb_ZA_ARR_PF_AN_MX_ABT);
367 ---------------------
368 -- Annual Calculation
369 ---------------------
370 nti_AnnArrPenFndAbm := LEAST(nti_AnnArrPenFnd, glb_ZA_ARR_PF_AN_MX_ABT);
371 ---------------------------------
372 -- Retirement Annnnuity Abatement
373 ---------------------------------
374 ---------------------
375 -- Period Calculation
376 ---------------------
377 -- Calculate the Retirement Annuity Maximum
378 nti_PerRetAnuMax := GREATEST( glb_ZA_PF_AN_MX_ABT
379 , glb_ZA_RA_AN_MX_ABT - nti_PerPenFndAbm
380 , glb_ZA_RA_MX_PRC / 100 * nti_PerNrfiCon
381 );
382
383 -- Calculate Retirement Annuity Abatement
384 nti_PerRetAnuAbm := LEAST(nti_PerRetAnu, nti_PerRetAnuMax);
385 ---------------------
386 -- Annual Calculation
387 ---------------------
388 nti_AnnRetAnuMax := GREATEST( glb_ZA_PF_AN_MX_ABT
389 , glb_ZA_RA_AN_MX_ABT - nti_AnnPenFndAbm
390 , glb_ZA_RA_MX_PRC / 100 * nti_AnnNrfiCon
391 );
392
393 -- Calculate Retirement Annuity Abatement
394 nti_AnnRetAnuAbm := LEAST(nti_AnnRetAnu, nti_AnnRetAnuMax);
395 --------------------------------------
396 -- Arrear Retirement Annuity Abatement
397 --------------------------------------
398 ---------------------
399 -- Period Calculation
400 ---------------------
401 nti_PerArrRetAnuAbm := LEAST(nti_PerArrRetAnu, glb_ZA_ARR_RA_AN_MX_ABT);
402 ---------------------
403 -- Annual Calculation
404 ---------------------
405 nti_AnnArrRetAnuAbm := LEAST(nti_AnnArrRetAnu, glb_ZA_ARR_RA_AN_MX_ABT);
406
407 -----------------------------------------------------------
408 -- Tax Rebates, Threshold Figure and Medical Aid Abatements
409 -----------------------------------------------------------
410 -- Calculate the assignments 65 Year Date
411 l_65Year := add_months(py_za_tx_01032005.dbi_PER_DTE_OF_BRTH,780);
412
413 IF l_65Year > dbi_ZA_TX_YR_END THEN
414 nti_MedAidAbm := 0;
415 END IF;
416
417 hr_utility.set_location('py_za_tx_01032005.NetTxbIncCalc',27);
418
419 -------------------
420 -- Total Abatements
421 -------------------
422 -- Period Total Abatement
423 nti_PerTotAbm := ( nti_PerPenFndAbm
424 + nti_PerArrPenFndAbm
425 + nti_PerRetAnuAbm
426 + nti_PerArrRetAnuAbm
427 + nti_MedAidAbm
428 + nti_PerIncProPolAbm
429 );
430 -- Annual Total Abatements
431 nti_AnnTotAbm := ( nti_AnnPenFndAbm
432 + nti_AnnArrPenFndAbm
433 + nti_AnnRetAnuAbm
434 + nti_AnnArrRetAnuAbm
435 + nti_MedAidAbm
436 + nti_AnnIncProPolAbm
437 );
438
439 -- Calculate New O Figures
440 --
441 nti_TxbPerTypInc := nti_PerTypErn - nti_PerTotAbm;
442 nti_TxbAnnTypInc := nti_AnnTypErn - nti_AnnTotAbm;
443
444 -- Deannualise Period O Figure
445 --
446 nti_NetPerTxbInc := nti_TxbPerTypInc / nti_SitFactor;
447 -- Calculate the Net Taxable Annual Type Income
448 --
449 nti_NetAnnTxbInc := nti_TxbAnnTypInc - nti_TxbPerTypInc;
450
451 -- Calculate New Net Taxable Income Balance
452 --
453 trc_NtiUpdFig := (nti_NetPerTxbInc + nti_NetAnnTxbInc) - bal_NET_TXB_INC_CMTD;
454
455 WrtHrTrc('nti_SitFactor: '||to_char(nti_SitFactor));
456 WrtHrTrc('nti_PerTypErn: '||to_char(nti_PerTypErn));
457 WrtHrTrc('nti_AnnTypErn: '||to_char(nti_AnnTypErn));
458 WrtHrTrc('nti_NetPerTxbInc: '||to_char(nti_NetPerTxbInc));
459 WrtHrTrc('nti_NetAnnTxbInc: '||to_char(nti_NetAnnTxbInc));
460 WrtHrTrc('bal_NET_TXB_INC_CMTD: '||to_char(bal_NET_TXB_INC_CMTD));
461 WrtHrTrc('trc_NtiUpdFig: '||to_char(trc_NtiUpdFig));
462 WrtHrTrc(' ');
463 WrtHrTrc('-- Fixed Pension Basis');
464 WrtHrTrc('nti_PerTxbPkg: '||to_char(nti_PerTxbPkg ));
465 WrtHrTrc('nti_AnnTxbPkg: '||to_char(nti_AnnTxbPkg ));
466 WrtHrTrc('nti_TotPkg: '||to_char(nti_TotPkg ));
467 WrtHrTrc('nti_TxbFxdPrc: '||to_char(nti_TxbFxdPrc ));
468 WrtHrTrc('nti_PerRFITotPkgPTD: '||to_char(nti_PerRFITotPkgPTD ));
469 WrtHrTrc('nti_PerNRFITotPkgPTD: '||to_char(nti_PerNRFITotPkgPTD ));
470 WrtHrTrc('nti_AnnRFITotPkgPTD: '||to_char(nti_AnnRFITotPkgPTD ));
471 WrtHrTrc('nti_AnnNRFITotPkgPTD: '||to_char(nti_AnnNRFITotPkgPTD ));
472 WrtHrTrc('nti_PerRFITotPkgPTD_Upd: '||to_char(nti_PerRFITotPkgPTD_Upd ));
473 WrtHrTrc('nti_PerNRFITotPkgPTD_Upd: '||to_char(nti_PerNRFITotPkgPTD_Upd));
474 WrtHrTrc('nti_AnnRFITotPkgPTD_Upd: '||to_char(nti_AnnRFITotPkgPTD_Upd ));
475 WrtHrTrc('nti_AnnNRFITotPkgPTD_Upd: '||to_char(nti_AnnNRFITotPkgPTD_Upd));
476 WrtHrTrc(' ');
477 WrtHrTrc('nti_PerTotAbm: '||to_char(nti_PerTotAbm));
478 WrtHrTrc('nti_PerTotAbm consists of:');
479 WrtHrTrc('nti_PerPenFndAbm: '||to_char(nti_PerPenFndAbm));
480 WrtHrTrc('nti_PerArrPenFndAbm: '||to_char(nti_PerArrPenFndAbm));
481 WrtHrTrc('nti_PerRetAnuAbm: '||to_char(nti_PerRetAnuAbm));
482 WrtHrTrc('nti_PerArrRetAnuAbm: '||to_char(nti_PerArrRetAnuAbm));
483 WrtHrTrc('nti_MedAidAbm: '||to_char(nti_MedAidAbm));
484 WrtHrTrc('nti_PerIncProPolAbm: '||to_char(nti_PerIncProPolAbm));
485 WrtHrTrc(' ');
486 WrtHrTrc('nti_AnnTotAbm: '||to_char(nti_AnnTotAbm));
487 WrtHrTrc('nti_AnnTotAbm consists of:');
488 WrtHrTrc('nti_AnnPenFndAbm: '||to_char(nti_AnnPenFndAbm));
489 WrtHrTrc('nti_AnnArrPenFndAbm: '||to_char(nti_AnnArrPenFndAbm));
490 WrtHrTrc('nti_AnnRetAnuAbm: '||to_char(nti_AnnRetAnuAbm));
491 WrtHrTrc('nti_AnnArrRetAnuAbm: '||to_char(nti_AnnArrRetAnuAbm));
492 WrtHrTrc('nti_MedAidAbm: '||to_char(nti_MedAidAbm));
493 WrtHrTrc('nti_AnnIncProPolAbm: '||to_char(nti_AnnIncProPolAbm));
494
495
496 EXCEPTION
497 WHEN OTHERS THEN
498 IF xpt_Msg = 'No Error' THEN
499 xpt_Msg := 'NetTxbIncCalc: '||TO_CHAR(SQLCODE);
500 END IF;
501 RAISE xpt_E;
502 END NetTxbIncCalc;
503
504 -------------------------------------------------------------------------------
505 -- Tax Override Function
506 -------------------------------------------------------------------------------
507 FUNCTION ZaTxOvr_01032005(
508 p_OvrTyp IN VARCHAR2
509 ,p_TxOnNI IN NUMBER
510 ,p_TxOnAP IN NUMBER
511 ,p_TxPrc IN NUMBER
512 )RETURN NUMBER
513 AS
514 l_Dum NUMBER := 1;
515 BEGIN
516 -- Set the Override Global
517 trc_OvrTxCalc := TRUE;
518
519 -- Set Override Values
520 trc_OvrTyp := p_OvrTyp;
521
522 IF p_OvrTyp = 'V' THEN
523 trc_LibFpNI := p_TxOnNI;
524 trc_LibFpAP := p_TxOnAP;
525 ELSIF p_OvrTyp = 'P' THEN
526 trc_OvrPrc := p_TxPrc;
527 END IF;
528 RETURN l_Dum;
529
530 EXCEPTION
531 WHEN OTHERS THEN
532 hr_utility.set_message(801, 'ZaTxOvr_01032005: '||TO_CHAR(SQLCODE));
533 hr_utility.raise_error;
534 END ZaTxOvr_01032005;
535
536 -------------------------------------------------------------------------------
537 -- Main Tax Calculation Procedures --
538 -------------------------------------------------------------------------------
539 -------------------------------------------------------------------------------
540 -- LteCalc
541 -------------------------------------------------------------------------------
542 PROCEDURE LteCalc AS
543
544 -- Variables
545 l_EndDate DATE;
546 l_StrtDte DATE;
547 l_65Year DATE;
548 l_ZA_TX_YR_END DATE;
549 l_ZA_ADL_TX_RBT NUMBER;
550 l_ZA_PRI_TX_RBT NUMBER;
551 l_ZA_PRI_TX_THRSHLD NUMBER;
552 l_ZA_SC_TX_THRSHLD NUMBER;
553
554 l_Sl BOOLEAN;
555 l_Np BALANCE DEFAULT 0;
556
557
558 -- Private Functions
559 --
560 FUNCTION getBalVal
561 (p_BalNme IN pay_balance_types.balance_name%TYPE
562 ,p_EffDte IN DATE
563 ) RETURN NUMBER
564 AS
565 -- Variables
566 l_BalVal BALANCE;
567 l_BalTypId pay_balance_types.balance_type_id%TYPE;
568 l_dimension pay_balance_dimensions.dimension_name%TYPE ;
569
570 BEGIN
571 hr_utility.set_location('py_za_tx_01032005.LteCalc',1);
572 -- Get the Balance Type ID
573 SELECT pbt.balance_type_id
574 INTO l_BalTypId
575 FROM pay_balance_types pbt
576 WHERE pbt.balance_name = p_BalNme;
577
578 hr_utility.set_location('py_za_tx_01032005.LteCalc',2);
579
580 -- Get the Balance Value
581 l_dimension := '_ASG_TAX_YTD';
582 l_BalVal := py_za_bal.get_balance_value
583 ( con_ASG_ID
584 , l_BalTypId
585 , l_dimension
586 , p_EffDte
587 );
588 RETURN l_BalVal;
589 END getBalVal;
590
591 FUNCTION getBalVal2
592 (p_BalNme IN pay_balance_types.balance_name%TYPE
593 ,p_EffDte IN DATE
594 ) RETURN NUMBER
595 AS
596 -- Variables
597 l_BalVal BALANCE;
598 l_BalTypId pay_balance_types.balance_type_id%TYPE;
599 l_dimension pay_balance_dimensions.dimension_name%TYPE ;
600 BEGIN
601 hr_utility.set_location('py_za_tx_01032005.LteCalc',3);
602 -- Get the Balance Type ID
603 SELECT pbt.balance_type_id
604 INTO l_BalTypId
605 FROM pay_balance_types pbt
606 WHERE pbt.balance_name = p_BalNme;
607
608 hr_utility.set_location('py_za_tx_01032005.LteCalc',4);
609
610 -- Get the Balance Value
611 l_dimension := '_ASG_ITD';
612 l_BalVal := py_za_bal.get_balance_value
613 ( con_ASG_ID
614 , l_BalTypId
615 , l_dimension
616 , p_EffDte
617 );
618 RETURN l_BalVal;
619 END getBalVal2;
620
621 BEGIN
622 hr_utility.set_location('py_za_tx_01032005.LteCalc',5);
623 -- Does the Assignment have an OFigure?
624 --
625 IF bal_TOT_TXB_INC_ITD <= 0 THEN
626 hr_utility.set_location('py_za_tx_01032005.LteCalc',6);
627 -- Calculate the 'O' Figure
628 -- Set the Global
629 trc_CalTyp := 'PstCalc';
630 -- Set the Site Factor to the value of the previous tax year
631 l_StrtDte := dbi_ZA_ASG_TX_YR_STRT;
632 l_EndDate := dbi_ZA_ASG_TX_YR_END;
633 hr_utility.set_location('py_za_tx_01032005.LteCalc',8);
634
635 trc_SitFactor := (l_EndDate - l_StrtDte + 1) / py_za_tx_utl_01032005.DaysWorked;
636 hr_utility.set_location('py_za_tx_01032005.LteCalc',9);
637
638 -- Populate Local Balance Variables
639 -- The PTD Globals are used as dummy to store the previous tax year's
640 -- Balance values
641
642 bal_ANN_ARR_PF_PTD := getBalVal('Annual Arrear Pension Fund',l_EndDate);
643 bal_ANN_ARR_RA_PTD := getBalVal('Annual Arrear Retirement Annuity',l_EndDate);
644 bal_ANN_PF_PTD := getBalVal('Annual Pension Fund',l_EndDate);
645 bal_ANN_RA_PTD := getBalVal('Annual Retirement Annuity',l_EndDate);
646 bal_ARR_PF_PTD := getBalVal('Arrear Pension Fund',l_EndDate);
647 bal_ARR_RA_PTD := getBalVal('Arrear Retirement Annuity',l_EndDate);
648 bal_BP_PTD := getBalVal('Bonus Provision',l_EndDate);
649 bal_CUR_PF_PTD := getBalVal('Current Pension Fund',l_EndDate);
650 bal_CUR_RA_PTD := getBalVal('Current Retirement Annuity',l_EndDate);
651 bal_EXC_ARR_PEN_PTD := getBalVal2('Excess Arrear Pension',l_EndDate);
652 bal_EXC_ARR_RA_PTD := getBalVal2('Excess Arrear Retirement Annuity',l_EndDate);
653 bal_MED_CONTR_PTD := getBalVal('Medical Aid Contribution',l_EndDate);
654 bal_TOT_INC_PTD := getBalVal('Total Income',l_EndDate);
655 bal_TOT_NRFI_AN_INC_PTD := getBalVal('Total NRFIable Annual Income',l_EndDate);
656 bal_TOT_NRFI_INC_PTD := getBalVal('Total NRFIable Income',l_EndDate);
657 bal_TOT_RFI_AN_INC_PTD := getBalVal('Total RFIable Annual Income',l_EndDate);
658 bal_TOT_RFI_INC_PTD := getBalVal('Total RFIable Income',l_EndDate);
659 bal_TOT_TXB_AB_PTD := getBalVal('ZATax Total Taxable Annual Bonus',l_EndDate);
660 bal_TOT_TXB_AP_PTD := getBalVal('ZATax Total Taxable Annual Payments',l_EndDate);
661 bal_TOT_TXB_FB_PTD := getBalVal('ZATax Total Taxable Fringe Benefits',l_EndDate);
662 bal_TOT_TXB_NI_PTD := getBalVal('ZATax Total Taxable Normal Income',l_EndDate);
663 bal_TOT_TXB_TA_PTD := getBalVal('ZATax Total Taxable Travel Allowance',l_EndDate);
664 bal_TOT_TXB_PO_PTD := getBalVal('ZATax Total Taxable Public Office Allowance',l_EndDate);
665
666 hr_utility.set_location('py_za_tx_01032005.LteCalc',10);
667
668 -- Update Globals with Correct Taxable Values
669 py_za_tx_utl_01032005.TrvAll;
670
671 bal_TOT_TXB_PO_PTD := bal_TOT_TXB_PO_PTD
672 * py_za_tx_utl_01032005.GlbVal('ZA_PUBL_TAX_PERC',l_EndDate)
673 / 100;
674 hr_utility.set_location('py_za_tx_01032005.LteCalc',11);
675
676 -- Rebates
677 py_za_tx_utl_01032005.SetRebates;
678 -- Abatements
679 py_za_tx_utl_01032005.Abatements;
680
681 hr_utility.set_location('py_za_tx_01032005.LteCalc',12);
682
683 -- Base Earnings
684 --
685 trc_BseErn :=
686 ( ( bal_TOT_TXB_NI_PTD
687 + bal_TOT_TXB_FB_PTD
688 + bal_TOT_TXB_TA_PTD
689 + bal_TOT_TXB_PO_PTD
690 + bal_BP_PTD
691 )* trc_SitFactor
692 )
693 + bal_TOT_TXB_AB_PTD
694 + bal_TOT_TXB_AP_PTD;
695 -- Taxable Base Income
696 trc_TxbBseInc := trc_BseErn - trc_AnnTotAbm;
697 -- Threshold Check
698 IF trc_TxbBseInc >= trc_Threshold THEN
699 hr_utility.set_location('py_za_tx_01032005.LteCalc',13);
700 -- Tax Liability
701 trc_TotLibBse := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbBseInc);
702 ELSE
703 hr_utility.set_location('py_za_tx_01032005.LteCalc',14);
704 trc_TotLibBse := 0;
705 END IF;
706
707 -- Populate the O Figure
708 trc_OUpdFig := trc_TxbBseInc - bal_TOT_TXB_INC_ITD;
709
710 -- Base Income
711 WrtHrTrc('trc_BseErn: '||to_char(trc_BseErn));
712 WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
713 WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
714
715 ELSE
716 hr_utility.set_location('py_za_tx_01032005.LteCalc',15);
717 -- Use the 'O' Figure as Base
718 -- Set the Global
719 trc_CalTyp := 'LteCalc';
720
721 -- Get the assignment's previous tax year's
722 -- threshold and rebate figures
723 -- Employee Tax Year Start and End Dates
724 l_EndDate := dbi_ZA_ASG_TX_YR_END;
725
726 hr_utility.set_location('py_za_tx_01032005.LteCalc',16);
727
728 -- Global Values
729 l_ZA_TX_YR_END := l_EndDate;
730 l_ZA_ADL_TX_RBT := py_za_tx_utl_01032005.GlbVal('ZA_ADDITIONAL_TAX_REBATE',l_EndDate);
731 l_ZA_PRI_TX_RBT := py_za_tx_utl_01032005.GlbVal('ZA_PRIMARY_TAX_REBATE',l_EndDate);
732 l_ZA_PRI_TX_THRSHLD := py_za_tx_utl_01032005.GlbVal('ZA_PRIM_TAX_THRESHOLD',l_EndDate);
733 l_ZA_SC_TX_THRSHLD := py_za_tx_utl_01032005.GlbVal('ZA_SEC_TAX_THRESHOLD',l_EndDate);
734
735 -- Calculate the assignments 65 Year Date
736 l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
737
738 IF l_65Year <= l_ZA_TX_YR_END THEN
739 hr_utility.set_location('py_za_tx_01032005.LteCalc',17);
740 -- give the extra abatement
741 trc_Rebate := l_ZA_PRI_TX_RBT + l_ZA_ADL_TX_RBT;
742 trc_Threshold := l_ZA_SC_TX_THRSHLD;
743 ELSE
744 hr_utility.set_location('py_za_tx_01032005.LteCalc',18);
745 -- not eligable for extra abatement
746 trc_Rebate := l_ZA_PRI_TX_RBT;
747 trc_Threshold := l_ZA_PRI_TX_THRSHLD;
748 END IF;
749
750
751 -- Base Earnings
752 --
753 -- Take the OFigure as Taxable Base Income
754 trc_TxbBseInc := bal_TOT_TXB_INC_ITD;
755 -- Threshold Check
756 IF trc_TxbBseInc >= trc_Threshold THEN
757 hr_utility.set_location('py_za_tx_01032005.LteCalc',19);
758 -- Tax Liability
759 trc_TotLibBse := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbBseInc);
760 ELSE
761 hr_utility.set_location('py_za_tx_01032005.LteCalc',20);
762 trc_TotLibBse := 0;
763 END IF;
764
765 -- Base Income
766 WrtHrTrc('trc_BseErn: '||to_char(trc_BseErn));
767 WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
768 WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
769 END IF;
770
771 -- Override the Global
772 trc_CalTyp := 'LteCalc';
773 -- Set the SitFactor back to 1
774 trc_SitFactor := 1;
775
776 hr_utility.set_location('py_za_tx_01032005.LteCalc',21);
777
778 -- Rebates
779 py_za_tx_utl_01032005.SetRebates;
780 -- Abatements
781 py_za_tx_utl_01032005.Abatements;
782
783 hr_utility.set_location('py_za_tx_01032005.LteCalc',22);
784
785 -- Update Global Balance Values with correct TAXABLE values
786 py_za_tx_utl_01032005.TrvAll;
787
788 bal_TOT_TXB_PO_YTD := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
789
790 -- Normal Income
791 --
792 -- Ytd Normal Income
793 trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
794 -- Skip the calculation if there is No Income
795 IF trc_NorIncYtd <> 0 THEN
796 hr_utility.set_location('py_za_tx_01032005.LteCalc',23);
797 -- Normal Earnings
798 trc_NorErn := trc_NorIncYtd + trc_TxbBseInc;
799 -- Taxable Normal Income
800 trc_TxbNorInc := trc_NorErn - trc_PerTotAbm;
801 -- Threshold Check
802 IF trc_TxbNorInc >= trc_Threshold THEN
803 hr_utility.set_location('py_za_tx_01032005.LteCalc',24);
804 -- Tax Liability
805 trc_TotLibNI := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbNorInc);
806 trc_LibFyNI := trc_TotLibNI - least(trc_TotLibNI,trc_TotLibBse);
807 trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibBse);
808 trc_LibFpNI := trc_LibFyNI - bal_TX_ON_NI_YTD;
809 ELSE
810 hr_utility.set_location('py_za_tx_01032005.LteCalc',25);
811 -- Set Cascade Figures and Refund
812 trc_TotLibNI := 0;
813 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
814 trc_LibFpNIOvr := TRUE;
815 END IF;
816 ELSE
817 hr_utility.set_location('py_za_tx_01032005.LteCalc',26);
818 -- Set Cascade Figures and Refund
819 trc_NorErn := trc_TxbBseInc;
820 trc_TxbNorInc := 0;
821 trc_TotLibNI := trc_TotLibBse;
822 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
823 trc_LibFpNIOvr := TRUE;
824 END IF;
825
826 -- Fringe Benefits
827 --
828 trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
829 -- Skip the calculation if there is No Income
830 IF trc_FrnBenYtd <> 0 THEN
831 hr_utility.set_location('py_za_tx_01032005.LteCalc',27);
832 -- Fringe Benefit Earnings
833 trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
834 -- Taxable Fringe Income
835 trc_TxbFrnInc := trc_FrnBenErn - trc_PerTotAbm;
836 -- Threshold Check
837 IF trc_TxbFrnInc >= trc_Threshold THEN
838 hr_utility.set_location('py_za_tx_01032005.LteCalc',28);
839 -- Tax Liability
840 trc_TotLibFB := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbFrnInc);
841 trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
842 trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
843 trc_LibFpFB := trc_LibFyFB - bal_TX_ON_FB_YTD;
844 ElSE
845 hr_utility.set_location('py_za_tx_01032005.LteCalc',29);
846 -- Set Cascade Figures and Refund
847 trc_TotLibFB := trc_TotLibNI;
848 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
849 trc_LibFpFBOvr := TRUE;
850 END IF;
851 ELSE
852 hr_utility.set_location('py_za_tx_01032005.LteCalc',30);
853 -- Set Cascade Figures and Refund
854 trc_FrnBenErn := trc_NorErn;
855 trc_TxbFrnInc := trc_TxbNorInc;
856 trc_TotLibFB := trc_TotLibNI;
857 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
858 trc_LibFpFBOvr := TRUE;
859 END IF;
860
861 -- Travel Allowance
862 --
863 -- Ytd Travel Allowance
864 trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
865 -- Skip the calculation if there is No Income
866 IF trc_TrvAllYtd <> 0 THEN
867 hr_utility.set_location('py_za_tx_01032005.LteCalc',31);
868 -- Travel Earnings
869 trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
870 -- Taxable Travel Income
871 trc_TxbTrvInc := trc_TrvAllErn - trc_PerTotAbm;
872 -- Threshold Check
873 IF trc_TxbTrvInc >= trc_Threshold THEN
874 hr_utility.set_location('py_za_tx_01032005.LteCalc',32);
875 -- Tax Liability
876 trc_TotLibTA := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbTrvInc);
877 trc_LibFyTA := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
878 trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
879 trc_LibFpTA := trc_LibFyTA - bal_TX_ON_TA_YTD;
880 ELSE
881 hr_utility.set_location('py_za_tx_01032005.LteCalc',33);
882 -- Set Cascade Figures and Refund
883 trc_TotLibTA := trc_TotLibFB;
884 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
885 trc_LibFpTAOvr := TRUE;
886 END IF;
887 ELSE
888 hr_utility.set_location('py_za_tx_01032005.LteCalc',34);
889 -- Set Cascade Figures and Refund
890 trc_TrvAllErn := trc_FrnBenErn;
891 trc_TxbTrvInc := trc_TxbFrnInc;
892 trc_TotLibTA := trc_TotLibFB;
893 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
894 trc_LibFpTAOvr := TRUE;
895 END IF;
896
897 -- Annual Bonus
898 --
899 -- Ytd Annual Bonus
900 trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
901 -- Skip the calculation if there is No Income
902 IF trc_AnnBonYtd <> 0 THEN
903 hr_utility.set_location('py_za_tx_01032005.LteCalc',35);
904 -- Annual Bonus Earnings
905 trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
906 -- Taxable Annual Bonus Income
907 trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
908 -- Threshold Check
909 IF trc_TxbAnnBonInc >= trc_Threshold THEN
910 hr_utility.set_location('py_za_tx_01032005.LteCalc',36);
911 -- Tax Liability
912 trc_TotLibAB := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbAnnBonInc);
913 trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
914 trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
915 trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
916 ELSE
917 hr_utility.set_location('py_za_tx_01032005.LteCalc',39);
918 -- Set Cascade Figures and Refund
919 trc_TotLibAB := trc_TotLibTA;
920 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
921 trc_LibFpABOvr := TRUE;
922 END IF;
923 ELSE
924 hr_utility.set_location('py_za_tx_01032005.LteCalc',40);
925 -- Set Cascade Figures and Refund
926 trc_AnnBonErn := trc_TrvAllErn;
927 trc_TxbAnnBonInc := trc_TxbTrvInc;
928 trc_TotLibAB := trc_TotLibTA;
929 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
930 trc_LibFpABOvr := TRUE;
931 END IF;
932
933 -- Annual Payments
934 --
935 -- Ytd Annual Payments
936 trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
937 -- Skip the calculation if there is No Income
938 IF trc_AnnPymYtd <> 0 THEN
939 hr_utility.set_location('py_za_tx_01032005.LteCalc',41);
940 -- Annual Payments Earnings
941 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
942 -- Taxable Annual Payments Income
943 trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
944 -- Threshold Check
945 IF trc_TxbAnnPymInc >= trc_Threshold THEN
946 hr_utility.set_location('py_za_tx_01032005.LteCalc',42);
947 -- Tax Liability
948 trc_TotLibAP := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbAnnPymInc);
949 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
950 trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
951 trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
952 ELSE
953 hr_utility.set_location('py_za_tx_01032005.LteCalc',45);
954 -- Set Cascade Figures and Refund
955 trc_TotLibAP := trc_TotLibAB;
956 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
957 trc_LibFpAPOvr := TRUE;
958 END IF;
959 ELSE
960 hr_utility.set_location('py_za_tx_01032005.LteCalc',46);
961 -- Set Cascade Figures and Refund
962 trc_AnnPymErn := trc_AnnBonErn;
963 trc_TxbAnnPymInc := trc_TxbAnnBonInc;
964 trc_TotLibAP := trc_TotLibAB;
965 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
966 trc_LibFpAPOvr := TRUE;
967 END IF;
968
969 -- Public Office Allowance
970 --
971 -- Ytd Public Office Allowance
972 trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
973 -- Skip the calculation if there is No Income
974 IF trc_PblOffYtd <> 0 THEN
975 hr_utility.set_location('py_za_tx_01032005.LteCalc',47);
976 -- Public Office Earnings
977 trc_PblOffErn := trc_PblOffYtd;
978 -- Tax Liability
979 trc_LibFyPO := trc_PblOffErn * glb_ZA_PBL_TX_RTE / 100;
980 trc_LibFpPO := trc_LibFyPO - bal_TX_ON_PO_YTD;
981 ELSE
982 hr_utility.set_location('py_za_tx_01032005.LteCalc',48);
983 -- Set Cascade Figures and Refund
984 trc_LibFyPO := 0;
985 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
986 trc_LibFpPOOvr := TRUE;
987 END IF;
988
989 -- Net Pay Validation
990 --
991 -- Net Pay of the Employee
992 l_Np := bal_NET_PAY_RUN;
993 -- Site Limit Check
994 IF trc_TxbAnnPymInc + trc_PblOffErn < glb_ZA_SIT_LIM THEN
995 hr_utility.set_location('py_za_tx_01032005.LteCalc',49);
996 l_Sl := TRUE;
997 ELSE
998 hr_utility.set_location('py_za_tx_01032005.LteCalc',50);
999 l_Sl := FALSE;
1000 END IF;
1001
1002 py_za_tx_utl_01032005.ValidateTaxOns(p_Rf => l_Sl);
1003
1004 -- Set IT3A Indicator
1005 --
1006 IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
1007 hr_utility.set_location('py_za_tx_01032005.LteCalc',51);
1008 trc_It3Ind := 0; -- Over Lim
1009 ELSE
1010 hr_utility.set_location('py_za_tx_01032005.LteCalc',52);
1011 trc_It3Ind := 1; -- Under Lim
1012 END IF;
1013
1014 -- Normal Income
1015 WrtHrTrc('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
1016 WrtHrTrc('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
1017 WrtHrTrc('trc_NorErn: '||to_char(trc_NorErn));
1018 WrtHrTrc('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
1019 WrtHrTrc('trc_TotLibNI: '||to_char(trc_TotLibNI));
1020 WrtHrTrc('trc_LibFyNI: '||to_char(trc_LibFyNI));
1021 WrtHrTrc('trc_LibFpNI: '||to_char(trc_LibFpNI));
1022 -- Fringe Benefits
1023 WrtHrTrc('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
1024 WrtHrTrc('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
1025 WrtHrTrc('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
1026 WrtHrTrc('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
1027 WrtHrTrc('trc_TotLibFB: '||to_char(trc_TotLibFB));
1028 WrtHrTrc('trc_LibFyFB: '||to_char(trc_LibFyFB));
1029 WrtHrTrc('trc_LibFpFB: '||to_char(trc_LibFpFB));
1030 -- Travel Allowance
1031 WrtHrTrc('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
1032 WrtHrTrc('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
1033 WrtHrTrc('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
1034 WrtHrTrc('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
1035 WrtHrTrc('trc_TotLibTA: '||to_char(trc_TotLibTA));
1036 WrtHrTrc('trc_LibFyTA: '||to_char(trc_LibFyTA));
1037 WrtHrTrc('trc_LibFpTA: '||to_char(trc_LibFpTA));
1038 -- Annual Bonus
1039 WrtHrTrc('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
1040 WrtHrTrc('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
1041 WrtHrTrc('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
1042 WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
1043 WrtHrTrc('trc_TotLibAB: '||to_char(trc_TotLibAB));
1044 WrtHrTrc('trc_LibFyAB: '||to_char(trc_LibFyAB));
1045 WrtHrTrc('trc_LibFpAB: '||to_char(trc_LibFpAB));
1046 -- Annual Payments
1047 WrtHrTrc('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
1048 WrtHrTrc('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
1049 WrtHrTrc('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
1050 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
1051 WrtHrTrc('trc_TotLibAP: '||to_char(trc_TotLibAP));
1052 WrtHrTrc('trc_LibFyAP: '||to_char(trc_LibFyAP));
1053 WrtHrTrc('trc_LibFpAP: '||to_char(trc_LibFpAP));
1054 -- Pubilc Office Allowance
1055 WrtHrTrc('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
1056 WrtHrTrc('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
1057 WrtHrTrc('trc_PblOffErn: '||to_char(trc_PblOffErn));
1058 WrtHrTrc('trc_LibFyPO: '||to_char(trc_LibFyPO));
1059 WrtHrTrc('trc_LibFpPO: '||to_char(trc_LibFpPO));
1060
1061 EXCEPTION
1062 WHEN OTHERS THEN
1063 IF xpt_Msg = 'No Error' THEN
1064 xpt_Msg := 'LteCalc: '||TO_CHAR(SQLCODE);
1065 END IF;
1066 RAISE xpt_E;
1067 END LteCalc;
1068 -------------------------------------------------------------------------------
1069 -- SeaCalc --
1070 -- Tax Calculation for Seasonal Workers --
1071 -------------------------------------------------------------------------------
1072 PROCEDURE SeaCalc AS
1073 -- Variables
1074 --
1075 l_Np BALANCE DEFAULT 0;
1076 l_65Year DATE;
1077
1078 BEGIN
1079 hr_utility.set_location('py_za_tx_01032005.SeaCalc',1);
1080 -- Identify the calculation
1081 --
1082 trc_CalTyp := 'SeaCalc';
1083
1084 -- Period Type Income
1085 --
1086 trc_TxbIncPtd :=
1087 ( bal_TOT_TXB_NI_RUN
1088 + bal_TOT_TXB_FB_RUN
1089 );
1090 -- Check if any Period Income Exists
1091 --
1092 hr_utility.set_location('py_za_tx_01032005.SeaCalc',2);
1093 IF trc_TxbIncPtd = 0 THEN -- Pre-Earnings Calc
1094 hr_utility.set_location('py_za_tx_01032005.SeaCalc',3);
1095 -- Site Factor
1096 --
1097 trc_SitFactor := glb_ZA_WRK_DYS_PR_YR / dbi_SEA_WRK_DYS_WRK;
1098
1099 -- Tax Rebates, Threshold Figure and Medical Aid
1100 -- Abatements
1101 -- Calculate the assignments 65 Year Date
1102 l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
1103
1104 IF l_65Year BETWEEN dbi_ZA_TX_YR_STRT AND dbi_ZA_TX_YR_END THEN
1105 hr_utility.set_location('py_za_tx_01032005.SeaCalc',4);
1106 -- give the extra abatement
1107 trc_Rebate := glb_ZA_PRI_TX_RBT + glb_ZA_ADL_TX_RBT;
1108 trc_Threshold := glb_ZA_SC_TX_THRSHLD;
1109 ELSE
1110 hr_utility.set_location('py_za_tx_01032005.SeaCalc',5);
1111 -- not eligable for extra abatement
1112 trc_Rebate := glb_ZA_PRI_TX_RBT;
1113 trc_Threshold := glb_ZA_PRI_TX_THRSHLD;
1114 END IF;
1115
1116 -- Base Income
1117 --
1118 -- Base Income
1119 trc_BseErn := bal_TOT_TXB_AP_RUN;
1120 -- Taxable Base Income
1121 trc_TxbBseInc := trc_BseErn * trc_SitFactor;
1122 -- Threshold Check
1123 IF trc_TxbBseInc >= trc_Threshold THEN
1124 hr_utility.set_location('py_za_tx_01032005.SeaCalc',6);
1125 -- Tax Liability
1126 trc_TotLibBse := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbBseInc);
1127 ELSE
1128 hr_utility.set_location('py_za_tx_01032005.SeaCalc',7);
1129 trc_TotLibBse := 0;
1130 END IF;
1131
1132 -- Annual Payments
1133 --
1134 -- Taxable Annual Payments Income
1135 trc_TxbAnnPymInc := trc_BseErn + trc_TxbBseInc;-- AP was taken as base!
1136 -- Threshold Check
1137 IF trc_TxbAnnPymInc >= trc_Threshold THEN
1138 hr_utility.set_location('py_za_tx_01032005.SeaCalc',8);
1139 -- Tax Liability
1140 trc_TotLibAP := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1141 trc_LibFpAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibBse);
1142 ElSE
1143 hr_utility.set_location('py_za_tx_01032005.SeaCalc',9);
1144 trc_LibFpAP := 0;
1145 END IF;
1146
1147 -- Base Income
1148 WrtHrTrc('trc_BseErn: ' ||to_char(trc_BseErn));
1149 WrtHrTrc('trc_TxbBseInc: ' ||to_char(trc_TxbBseInc));
1150 WrtHrTrc('trc_TotLibBse: ' ||to_char(trc_TotLibBse));
1151 -- Annual Payments
1152 WrtHrTrc('trc_AnnPymYtd: ' ||to_char(trc_AnnPymYtd));
1153 WrtHrTrc('trc_AnnPymPtd: ' ||to_char(trc_AnnPymPtd));
1154 WrtHrTrc('trc_AnnPymErn: ' ||to_char(trc_AnnPymErn));
1155 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
1156 WrtHrTrc('trc_TotLibAP: ' ||to_char(trc_TotLibAP));
1157 WrtHrTrc('trc_LibFyAP: ' ||to_char(trc_LibFyAP));
1158 WrtHrTrc('trc_LibFpAP: ' ||to_char(trc_LibFpAP));
1159
1160
1161 ELSE
1162 hr_utility.set_location('py_za_tx_01032005.SeaCalc',10);
1163 -- Site Factor
1164 --
1165 trc_SitFactor := glb_ZA_WRK_DYS_PR_YR / dbi_SEA_WRK_DYS_WRK;
1166
1167 -- Rebates
1168 py_za_tx_utl_01032005.SetRebates;
1169
1170 -- Abatements
1171 py_za_tx_utl_01032005.Abatements;
1172
1173 hr_utility.set_location('py_za_tx_01032005.SeaCalc',11);
1174
1175 -- Normal Income
1176 --
1177 -- Run Normal Income
1178 trc_NorIncPtd := bal_TOT_TXB_NI_RUN;
1179 -- Skip the calculation if there is No Income
1180 IF trc_NorIncPtd <> 0 THEN
1181 hr_utility.set_location('py_za_tx_01032005.SeaCalc',12);
1182 -- Normal Earnings
1183 trc_NorErn := trc_NorIncPtd * trc_SitFactor;
1184 -- Taxable Normal Income
1185 trc_TxbNorInc := trc_NorErn - trc_PerTotAbm;
1186 -- Threshold Check
1187 IF trc_TxbNorInc >= trc_Threshold THEN
1188 hr_utility.set_location('py_za_tx_01032005.SeaCalc',13);
1189 -- Tax Liability
1190 trc_TotLibNI := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbNorInc);
1191 trc_LibFyNI := trc_TotLibNI - 0;
1192 trc_TotLibNI := greatest(trc_TotLibNI,0);
1193 trc_LibFpNI := trc_LibFyNI / trc_SitFactor;
1194 ELSE
1195 hr_utility.set_location('py_za_tx_01032005.SeaCalc',14);
1196 trc_TotLibNI := 0;
1197 END IF;
1198 ELSE
1199 hr_utility.set_location('py_za_tx_01032005.SeaCalc',15);
1200 trc_NorErn := 0;
1201 trc_TxbNorInc := 0;
1202 trc_TotLibNI := 0;
1203 END IF;
1204
1205 -- Fringe Benefits
1206 --
1207 -- Run Fringe Benefits
1208 trc_FrnBenPtd := bal_TOT_TXB_FB_RUN;
1209 -- Skip the calculation if there is No Income
1210 IF trc_FrnBenPtd <> 0 THEN
1211 hr_utility.set_location('py_za_tx_01032005.SeaCalc',16);
1212 -- Fringe Benefit Earnings
1213 trc_FrnBenErn := trc_FrnBenPtd * trc_SitFactor + trc_NorErn;
1214 -- Taxable Fringe Income
1215 trc_TxbFrnInc := trc_FrnBenErn - trc_PerTotAbm;
1216 -- Threshold Check
1217 IF trc_TxbFrnInc >= trc_Threshold THEN
1218 hr_utility.set_location('py_za_tx_01032005.SeaCalc',17);
1219 -- Tax Liability
1220 trc_TotLibFB := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbFrnInc);
1221 trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
1222 trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
1223 trc_LibFpFB := trc_LibFyFB / trc_SitFactor;
1224 ELSE
1225 hr_utility.set_location('py_za_tx_01032005.SeaCalc',18);
1226 trc_TotLibFB := trc_TotLibNI;
1227 END IF;
1228 ELSE
1229 hr_utility.set_location('py_za_tx_01032005.SeaCalc',19);
1230 trc_FrnBenErn := trc_NorErn;
1231 trc_TxbFrnInc := trc_TxbNorInc;
1232 trc_TotLibFB := trc_TotLibNI;
1233 END IF;
1234
1235 -- Annual Payments
1236 --
1237 -- Run Annual Payments
1238 trc_AnnPymPtd := bal_TOT_TXB_AP_RUN;
1239 -- Skip the calculation if there is No Income
1240 IF trc_AnnPymPtd <> 0 THEN
1241 hr_utility.set_location('py_za_tx_01032005.SeaCalc',20);
1242 -- Annual Payments Earnings
1243 trc_AnnPymErn := trc_AnnPymPtd + trc_FrnBenErn;
1244 -- Taxable Annual Payments Income
1245 trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
1246 -- Threshold Check
1247 IF trc_TxbAnnPymInc >= trc_Threshold THEN
1248 hr_utility.set_location('py_za_tx_01032005.SeaCalc',21);
1249 -- Tax Liability
1250 trc_TotLibAP := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1251 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibFB);
1252 trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibFB);
1253 trc_LibFpAP := trc_LibFyAP;
1254 ELSE
1255 hr_utility.set_location('py_za_tx_01032005.SeaCalc',22);
1256 trc_TotLibAP := trc_TotLibFB;
1257 END IF;
1258 ELSE
1259 hr_utility.set_location('py_za_tx_01032005.SeaCalc',23);
1260 trc_AnnPymErn := trc_FrnBenErn;
1261 trc_TxbAnnPymInc := trc_TxbFrnInc;
1262 trc_TotLibAP := trc_TotLibFB;
1263 END IF;
1264
1265
1266 -- Net Pay Validation
1267 --
1268 py_za_tx_utl_01032005.ValidateTaxOns;
1269
1270 hr_utility.set_location('py_za_tx_01032005.SeaCalc',24);
1271
1272 -- Set IT3A Indicator
1273 --
1274 IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
1275 hr_utility.set_location('py_za_tx_01032005.SeaCalc',25);
1276 trc_It3Ind := 0; -- Over Lim
1277 ELSE
1278 hr_utility.set_location('py_za_tx_01032005.SeaCalc',26);
1279 trc_It3Ind := 1; -- Under Lim
1280 END IF;
1281 END IF;
1282
1283 -- Normal Income
1284 WrtHrTrc('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
1285 WrtHrTrc('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
1286 WrtHrTrc('trc_NorErn: '||to_char(trc_NorErn));
1287 WrtHrTrc('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
1288 WrtHrTrc('trc_TotLibNI: '||to_char(trc_TotLibNI));
1289 WrtHrTrc('trc_LibFyNI: '||to_char(trc_LibFyNI));
1290 WrtHrTrc('trc_LibFpNI: '||to_char(trc_LibFpNI));
1291 -- Fringe Benefits
1292 WrtHrTrc('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
1293 WrtHrTrc('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
1294 WrtHrTrc('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
1295 WrtHrTrc('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
1296 WrtHrTrc('trc_TotLibFB: '||to_char(trc_TotLibFB));
1297 WrtHrTrc('trc_LibFyFB: '||to_char(trc_LibFyFB));
1298 WrtHrTrc('trc_LibFpFB: '||to_char(trc_LibFpFB));
1299 -- Annual Payments
1300 WrtHrTrc('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
1301 WrtHrTrc('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
1302 WrtHrTrc('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
1303 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
1304 WrtHrTrc('trc_TotLibAP: '||to_char(trc_TotLibAP));
1305 WrtHrTrc('trc_LibFyAP: '||to_char(trc_LibFyAP));
1306 WrtHrTrc('trc_LibFpAP: '||to_char(trc_LibFpAP));
1307
1308 EXCEPTION
1309 WHEN OTHERS THEN
1310 IF xpt_Msg = 'No Error' THEN
1311 xpt_Msg := 'SeaCalc: '||TO_CHAR(SQLCODE);
1312 END IF;
1313 RAISE xpt_E;
1314 END SeaCalc;
1315
1316 -------------------------------------------------------------------------------
1317 -- SitCalc --
1318 -- End of Year Tax Calculation --
1319 -------------------------------------------------------------------------------
1320 PROCEDURE SitCalc AS
1321 -- Variables
1322 --
1323 l_Sl BOOLEAN;
1324 l_Np BALANCE;
1325
1326 BEGIN
1327
1328 hr_utility.set_location('py_za_tx_01032005.SitCalc',1);
1329 -- Identify the calculation
1330 --
1331 trc_CalTyp := 'SitCalc';
1332
1333 -- Update Global Balance Values with correct TAXABLE values
1334 --
1335 py_za_tx_utl_01032005.TrvAll;
1336
1337 hr_utility.set_location('py_za_tx_01032005.SitCalc',2);
1338
1339 bal_TOT_TXB_PO_YTD := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
1340
1341 -- Ytd Taxable Income
1342 --
1343 trc_TxbIncYtd :=
1344 ( bal_TOT_TXB_NI_YTD
1345 + bal_TOT_TXB_FB_YTD
1346 + bal_TOT_TXB_TA_YTD
1347 + bal_BP_YTD
1348 );
1349 hr_utility.set_location('py_za_tx_01032005.SitCalc',3);
1350
1351 -- Site Factor
1352 --
1353 trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032005.DaysWorked;
1354
1355 hr_utility.set_location('py_za_tx_01032005.SitCalc',4);
1356
1357 -- Rebates
1358 py_za_tx_utl_01032005.SetRebates;
1359
1360 -- Abatements
1361 py_za_tx_utl_01032005.Abatements;
1362
1363 hr_utility.set_location('py_za_tx_01032005.SitCalc',5);
1364
1365 -- Deemed Remuneration
1366 --
1367 -- Run Deemed Remuneration
1368 trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
1369
1370 -- Skip the calculation if there is No Income
1371 IF trc_DmdRmnRun <> 0 THEN
1372 hr_utility.set_location('py_za_tx_01032005.SitCalc',6);
1373 -- Taxable Deemed Remuneration
1374 trc_TxbDmdRmn := trc_DmdRmnRun;
1375 -- Threshold Check
1376 IF trc_TxbDmdRmn >= trc_Threshold THEN
1377 hr_utility.set_location('py_za_tx_01032005.SitCalc',7);
1378 -- Tax Liability
1379 trc_TotLibDR := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbDmdRmn);
1380 trc_LibFyDR := (trc_TotLibDR - 0) / trc_SitFactor;
1381 trc_TotLibDR := greatest(trc_TotLibDR,0);
1382 trc_LibFpDR := trc_LibFyDR - bal_TX_ON_DR_YTD;
1383 ELSE
1384 hr_utility.set_location('py_za_tx_01032005.SitCalc',8);
1385 -- Set Cascade Figures and Refund
1386 trc_TotLibDR := 0;
1387 trc_LibFpDR := -1 * bal_TX_ON_DR_YTD;
1388 trc_LibFpDROvr := TRUE;
1389 END IF;
1390 ELSE
1391 hr_utility.set_location('py_za_tx_01032005.SitCalc',9);
1392 -- Set Cascade Figures and Refund
1393 trc_TxbDmdRmn := 0;
1394 trc_TotLibDR := 0;
1395 trc_LibFpDR := -1 * bal_TX_ON_DR_YTD;
1396 trc_LibFpDROvr := TRUE;
1397 END IF;
1398
1399 hr_utility.set_location('py_za_tx_01032005.SitCalc',10);
1400
1401 -- Normal Income
1402 --
1403 -- Ytd Normal Income
1404 trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
1405 -- Skip the calculation if there is No Income
1406 IF trc_NorIncYtd <> 0 THEN
1407 hr_utility.set_location('py_za_tx_01032005.SitCalc',11);
1408 -- Normal Earnings
1409 trc_NorErn := trc_NorIncYtd * trc_SitFactor;
1410 -- Taxable Normal Income
1411 trc_TxbNorInc := trc_NorErn - trc_PerTotAbm;
1412 -- Threshold Check
1413 IF trc_TxbNorInc >= trc_Threshold THEN
1414 hr_utility.set_location('py_za_tx_01032005.SitCalc',12);
1415 -- Tax Liability
1416 trc_TotLibNI := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbNorInc);
1417 trc_LibFyNI := (trc_TotLibNI - least(trc_TotLibNI,trc_TotLibDR)) / trc_SitFactor;
1418 trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibDR);
1419 trc_LibFpNI := trc_LibFyNI - bal_TX_ON_NI_YTD;
1420 ELSE
1421 hr_utility.set_location('py_za_tx_01032005.SitCalc',13);
1422 -- Set Cascade Figures and Refund
1423 trc_TotLibNI := trc_TotLibDR;
1424 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
1425 trc_LibFpNIOvr := TRUE;
1426 END IF;
1427 ELSE
1428 hr_utility.set_location('py_za_tx_01032005.SitCalc',14);
1429 -- Set Cascade Figures and Refund
1430 trc_NorErn := 0;
1431 trc_TxbNorInc := 0;
1432 trc_TotLibNI := trc_TotLibDR;
1433 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
1434 trc_LibFpNIOvr := TRUE;
1435 END IF;
1436
1437 -- Fringe Benefits
1438 --
1439 -- Ytd Fringe Benefits
1440 trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
1441 -- Skip the calculation if there is No Income
1442 IF trc_FrnBenYtd <> 0 THEN
1443 hr_utility.set_location('py_za_tx_01032005.SitCalc',15);
1444 -- Fringe Benefit Earnings
1445 trc_FrnBenErn := trc_FrnBenYtd * trc_SitFactor + trc_NorErn;
1446 -- Taxable Fringe Income
1447 trc_TxbFrnInc := trc_FrnBenErn - trc_PerTotAbm;
1448 -- Threshold Check
1449 IF trc_TxbFrnInc >= trc_Threshold THEN
1450 hr_utility.set_location('py_za_tx_01032005.SitCalc',16);
1451 -- Tax Liability
1452 trc_TotLibFB := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbFrnInc);
1453 trc_LibFyFB := (trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI)) / trc_SitFactor;
1454 trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
1455 trc_LibFpFB := trc_LibFyFB - bal_TX_ON_FB_YTD;
1456 ElSE
1457 hr_utility.set_location('py_za_tx_01032005.SitCalc',17);
1458 -- Set Cascade Figures and Refund
1459 trc_TotLibFB := trc_TotLibNI;
1460 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
1461 trc_LibFpFBOvr := TRUE;
1462 END IF;
1463 ELSE
1464 hr_utility.set_location('py_za_tx_01032005.SitCalc',18);
1465 -- Set Cascade Figures and Refund
1466 trc_FrnBenErn := trc_NorErn;
1467 trc_TxbFrnInc := trc_TxbNorInc;
1468 trc_TotLibFB := trc_TotLibNI;
1469 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
1470 trc_LibFpFBOvr := TRUE;
1471 END IF;
1472
1473 -- Travel Allowance
1474 --
1475 -- Ytd Travel Allowance
1476 trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
1477 -- Skip the calculation if there is No Income
1478 IF trc_TrvAllYtd <> 0 THEN
1479 hr_utility.set_location('py_za_tx_01032005.SitCalc',19);
1480 -- Travel Earnings
1481 trc_TrvAllErn := trc_TrvAllYtd * trc_SitFactor + trc_FrnBenErn;
1482 -- Taxable Travel Income
1483 trc_TxbTrvInc := trc_TrvAllErn - trc_PerTotAbm;
1484 -- Threshold Check
1485 IF trc_TxbTrvInc >= trc_Threshold THEN
1486 hr_utility.set_location('py_za_tx_01032005.SitCalc',20);
1487 -- Tax Liability
1488 trc_TotLibTA := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbTrvInc);
1489 trc_LibFyTA := (trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB)) / trc_SitFactor;
1490 trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
1491 trc_LibFpTA := trc_LibFyTA - bal_TX_ON_TA_YTD;
1492 ELSE
1493 hr_utility.set_location('py_za_tx_01032005.SitCalc',21);
1494 -- Set Cascade Figures and Refund
1495 trc_TotLibTA := trc_TotLibFB;
1496 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
1497 trc_LibFpTAOvr := TRUE;
1498 END IF;
1499 ELSE
1500 hr_utility.set_location('py_za_tx_01032005.SitCalc',22);
1501 -- Set Cascade Figures and Refund
1502 trc_TrvAllErn := trc_FrnBenErn;
1503 trc_TxbTrvInc := trc_TxbFrnInc;
1504 trc_TotLibTA := trc_TotLibFB;
1505 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
1506 trc_LibFpTAOvr := TRUE;
1507 END IF;
1508
1509 -- Bonus Provision
1510 --
1511 -- Ytd Bonus Prvision
1512 trc_BonProYtd := bal_BP_YTD;
1513 -- Skip the calculation if there is No Income
1514 IF trc_BonProYtd <> 0 THEN
1515 hr_utility.set_location('py_za_tx_01032005.SitCalc',23);
1516 -- Bonus Provision Earnings
1517 trc_BonProErn := trc_BonProYtd * trc_SitFactor + trc_TrvAllErn;
1518 -- Taxable Bonus Provision Income
1519 trc_TxbBonProInc := trc_BonProErn - trc_PerTotAbm;
1520 -- Threshold Check
1521 IF trc_TxbBonProInc >= trc_Threshold THEN
1522 hr_utility.set_location('py_za_tx_01032005.SitCalc',24);
1523 -- Tax Liability
1524 trc_TotLibBP := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbBonProInc);
1525 trc_LibFyBP := (trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA)) / trc_SitFactor;
1526 trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
1527 trc_LibFpBP := trc_LibFyBP - bal_TX_ON_BP_YTD;
1528 ELSE
1529 hr_utility.set_location('py_za_tx_01032005.SitCalc',25);
1530 -- Set Cascade Figures and Refund
1531 trc_TotLibBP := trc_TotLibTA;
1532 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
1533 trc_LibFpBPOvr := TRUE;
1534 END IF;
1535 ELSE
1536 hr_utility.set_location('py_za_tx_01032005.SitCalc',26);
1537 -- Set Cascade Figures and Refund
1538 trc_BonProErn := trc_TrvAllErn;
1539 trc_TxbBonProInc := trc_TxbTrvInc;
1540 trc_TotLibBP := trc_TotLibTA;
1541 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
1542 trc_LibFpBPOvr := TRUE;
1543 END IF;
1544
1545 -- Annual Bonus
1546 --
1547 -- Ytd Annual Bonus
1548 trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
1549 -- Skip the calculation if there is No Income
1550 IF trc_AnnBonYtd <> 0 THEN
1551 hr_utility.set_location('py_za_tx_01032005.SitCalc',27);
1552 -- Annual Bonus Earnings
1553 trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
1554 -- Taxable Annual Bonus Income
1555 trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
1556 -- Threshold Check
1557 IF trc_TxbAnnBonInc >= trc_Threshold THEN
1558 hr_utility.set_location('py_za_tx_01032005.SitCalc',28);
1559 -- Tax Liability
1560 trc_TotLibAB := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbAnnBonInc);
1561 trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
1562 trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
1563 hr_utility.set_location('py_za_tx_01032005.SitCalc',29);
1564 -- Check Bonus Provision
1565 IF trc_BonProYtd <> 0 THEN
1566 hr_utility.set_location('py_za_tx_01032005.SitCalc',30);
1567 -- Check Bonus Provision Frequency
1568 IF dbi_BP_TX_RCV = 'B' OR py_za_tx_utl_01032005.SitePeriod THEN
1569 hr_utility.set_location('py_za_tx_01032005.SitCalc',31);
1570 trc_LibFpAB :=
1571 trc_LibFyAB - (bal_TX_ON_BP_YTD
1572 + trc_LibFpBP
1573 + bal_TX_ON_AB_YTD);
1574 ELSE
1575 hr_utility.set_location('py_za_tx_01032005.SitCalc',32);
1576 trc_LibFpAB := 0;
1577 END IF;
1578 ELSE
1579 hr_utility.set_location('py_za_tx_01032005.SitCalc',33);
1580 trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
1581 END IF;
1582 ELSE
1583 hr_utility.set_location('py_za_tx_01032005.SitCalc',34);
1584 -- Set Cascade Figures and Refund
1585 trc_TotLibAB := trc_TotLibTA;
1586 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1587 trc_LibFpABOvr := TRUE;
1588 END IF;
1589 ELSE
1590 hr_utility.set_location('py_za_tx_01032005.SitCalc',35);
1591 -- Set Cascade Figures and Refund
1592 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1593 trc_LibFpABOvr := TRUE;
1594
1595 IF dbi_BP_TX_RCV = 'A' AND py_za_tx_utl_01032005.SitePeriod THEN
1596 hr_utility.set_location('py_za_tx_01032005.SitCalc',36);
1597 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
1598 trc_LibFpBPOvr := TRUE;
1599 trc_LibFpAPOvr := TRUE;
1600
1601 trc_AnnBonErn := trc_TrvAllErn;
1602 trc_TxbAnnBonInc := trc_TxbTrvInc;
1603 trc_TotLibAB := trc_TotLibTA;
1604 ELSE
1605 hr_utility.set_location('py_za_tx_01032005.SitCalc',37);
1606 trc_AnnBonErn := trc_BonProErn;
1607 trc_TxbAnnBonInc := trc_TxbBonProInc;
1608 trc_TotLibAB := trc_TotLibBP;
1609 END IF;
1610 END IF;
1611
1612 -- Annual Payments
1613 --
1614 -- Ytd Annual Payments
1615 trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
1616 -- Skip the calculation if there is No Income
1617 IF trc_AnnPymYtd <> 0 THEN
1618 hr_utility.set_location('py_za_tx_01032005.SitCalc',38);
1619 -- Annual Payments Earnings
1620 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
1621 -- Taxable Annual Payments Income
1622 trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
1623 -- Threshold Check
1624 IF trc_TxbAnnPymInc >= trc_Threshold THEN
1625 hr_utility.set_location('py_za_tx_01032005.SitCalc',39);
1626 -- Tax Liability
1627 trc_TotLibAP := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1628 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
1629 trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
1630 trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
1631 ELSE
1632 hr_utility.set_location('py_za_tx_01032005.SitCalc',40);
1633 -- Set Cascade Figures and Refund
1634 trc_TotLibAP := trc_TotLibAB;
1635 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
1636 trc_LibFpAPOvr := TRUE;
1637 END IF;
1638 ELSE
1639 hr_utility.set_location('py_za_tx_01032005.SitCalc',41);
1640 -- Set Cascade Figures and Refund
1641 trc_AnnPymErn := trc_AnnBonErn;
1642 trc_TxbAnnPymInc := trc_TxbAnnBonInc;
1643 trc_TotLibAP := trc_TotLibAB;
1644 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
1645 trc_LibFpAPOvr := TRUE;
1646 END IF;
1647
1648 -- Public Office Allowance
1649 --
1650 -- Ytd Public Office Allowance
1651 trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
1652 -- Skip the calculation if there is No Income
1653 IF trc_PblOffYtd <> 0 THEN
1654 hr_utility.set_location('py_za_tx_01032005.SitCalc',42);
1655 -- Public Office Earnings
1656 trc_PblOffErn := trc_PblOffYtd * trc_SitFactor;
1657 -- Tax Liability
1658 trc_LibFyPO := (trc_PblOffErn * glb_ZA_PBL_TX_RTE / 100)/trc_SitFactor;
1659 trc_LibFpPO := trc_LibFyPO - bal_TX_ON_PO_YTD;
1660 ELSE
1661 hr_utility.set_location('py_za_tx_01032005.SitCalc',43);
1662 -- Set Cascade Figures and Refund
1663 trc_LibFyPO := 0;
1664 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
1665 trc_LibFpPOOvr := TRUE;
1666 END IF;
1667
1668 -- Net Pay Validation
1669 --
1670 -- Net Pay of the Employee
1671 l_Np := bal_NET_PAY_RUN;
1672 -- Site Limit Check
1673 IF trc_TxbAnnPymInc + trc_PblOffErn < glb_ZA_SIT_LIM THEN
1674 hr_utility.set_location('py_za_tx_01032005.SitCalc',44);
1675 l_Sl := TRUE;
1676 ELSE
1677 hr_utility.set_location('py_za_tx_01032005.SitCalc',45);
1678 l_Sl := FALSE;
1679 END IF;
1680
1681 py_za_tx_utl_01032005.ValidateTaxOns(p_Rf => l_Sl);
1682
1683 hr_utility.set_location('py_za_tx_01032005.SitCalc',46);
1684
1685 -- Set IT3A Indicator
1686 --
1687 IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
1688 hr_utility.set_location('py_za_tx_01032005.SitCalc',47);
1689 trc_It3Ind := 0; -- Over Lim
1690 ELSE
1691 hr_utility.set_location('py_za_tx_01032005.SitCalc',48);
1692 trc_It3Ind := 1; -- Under Lim
1693 END IF;
1694
1695 -- Calculate Total Taxable Income and pass out
1696 --
1697 trc_OUpdFig := (trc_TxbAnnPymInc + trc_PblOffErn) - bal_TOT_TXB_INC_ITD;
1698
1699 hr_utility.set_location('py_za_tx_01032005.SitCalc',49);
1700
1701 -- Deemed Remuneration
1702 WrtHrTrc('trc_TxbDmdRmn: '||to_char(trc_TxbDmdRmn));
1703 WrtHrTrc('trc_TotLibDR: '||to_char(trc_TotLibDR));
1704 WrtHrTrc('trc_LibFyDR: '||to_char(trc_LibFyDR));
1705 WrtHrTrc('trc_LibFpDR: '||to_char(trc_LibFpDR));
1706 -- Base Income
1707 WrtHrTrc('trc_BseErn: '||to_char(trc_BseErn));
1708 WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
1709 WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
1710 -- Normal Income
1711 WrtHrTrc('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
1712 WrtHrTrc('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
1713 WrtHrTrc('trc_NorErn: '||to_char(trc_NorErn));
1714 WrtHrTrc('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
1715 WrtHrTrc('trc_TotLibNI: '||to_char(trc_TotLibNI));
1716 WrtHrTrc('trc_LibFyNI: '||to_char(trc_LibFyNI));
1717 WrtHrTrc('trc_LibFpNI: '||to_char(trc_LibFpNI));
1718 -- Fringe Benefits
1719 WrtHrTrc('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
1720 WrtHrTrc('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
1721 WrtHrTrc('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
1722 WrtHrTrc('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
1723 WrtHrTrc('trc_TotLibFB: '||to_char(trc_TotLibFB));
1724 WrtHrTrc('trc_LibFyFB: '||to_char(trc_LibFyFB));
1725 WrtHrTrc('trc_LibFpFB: '||to_char(trc_LibFpFB));
1726 -- Travel Allowance
1727 WrtHrTrc('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
1728 WrtHrTrc('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
1729 WrtHrTrc('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
1730 WrtHrTrc('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
1731 WrtHrTrc('trc_TotLibTA: '||to_char(trc_TotLibTA));
1732 WrtHrTrc('trc_LibFyTA: '||to_char(trc_LibFyTA));
1733 WrtHrTrc('trc_LibFpTA: '||to_char(trc_LibFpTA));
1734 -- Bonus Provision
1735 WrtHrTrc('trc_BonProYtd: '||to_char(trc_BonProYtd));
1736 WrtHrTrc('trc_BonProPtd: '||to_char(trc_BonProPtd));
1737 WrtHrTrc('trc_BonProErn: '||to_char(trc_BonProErn));
1738 WrtHrTrc('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
1739 WrtHrTrc('trc_TotLibBP: '||to_char(trc_TotLibBP));
1740 WrtHrTrc('trc_LibFyBP: '||to_char(trc_LibFyBP));
1741 WrtHrTrc('trc_LibFpBP: '||to_char(trc_LibFpBP));
1742 -- Annual Bonus
1743 WrtHrTrc('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
1744 WrtHrTrc('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
1745 WrtHrTrc('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
1746 WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
1747 WrtHrTrc('trc_TotLibAB: '||to_char(trc_TotLibAB));
1748 WrtHrTrc('trc_LibFyAB: '||to_char(trc_LibFyAB));
1749 WrtHrTrc('trc_LibFpAB: '||to_char(trc_LibFpAB));
1750 -- Annual Payments
1751 WrtHrTrc('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
1752 WrtHrTrc('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
1753 WrtHrTrc('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
1754 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
1755 WrtHrTrc('trc_TotLibAP: '||to_char(trc_TotLibAP));
1756 WrtHrTrc('trc_LibFyAP: '||to_char(trc_LibFyAP));
1757 WrtHrTrc('trc_LibFpAP: '||to_char(trc_LibFpAP));
1758
1759 EXCEPTION
1760 WHEN OTHERS THEN
1761 IF xpt_Msg = 'No Error' THEN
1762 xpt_Msg := 'SitCalc: '||TO_CHAR(SQLCODE);
1763 END IF;
1764 RAISE xpt_E;
1765 END SitCalc;
1766
1767 -------------------------------------------------------------------------------
1768 -- DirCalc --
1769 -- Tax Calculation for Directive Assignments --
1770 -------------------------------------------------------------------------------
1771 PROCEDURE DirCalc AS
1772 -- Variables
1773 --
1774 l_Np BALANCE DEFAULT 0;
1775
1776 BEGIN
1777
1778 hr_utility.set_location('py_za_tx_01032005.DirCalc',1);
1779 -- Identify the calculation
1780 --
1781 trc_CalTyp := 'DirCalc';
1782
1783 -- Update Global Balance Values with correct TAXABLE values
1784 --
1785 py_za_tx_utl_01032005.TrvAll;
1786
1787 hr_utility.set_location('py_za_tx_01032005.DirCalc',2);
1788
1789 bal_TOT_TXB_PO_YTD := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
1790
1791 -- Normal Income
1792 --
1793 -- Ytd Normal Income
1794 trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
1795 -- Skip the calculation if there is No Income
1796 IF trc_NorIncYtd <> 0 THEN
1797 hr_utility.set_location('py_za_tx_01032005.DirCalc',3);
1798 -- Normal Earnings
1799 trc_NorErn := trc_NorIncYtd;
1800 -- Tax Liability
1801 trc_TotLibNI := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_NorErn);
1802 trc_LibFyNI := trc_TotLibNI - 0;
1803 trc_TotLibNI := greatest(trc_TotLibNI,0);
1804 trc_LibFpNI := trc_LibFyNI - bal_TX_ON_NI_YTD;
1805 ELSE
1806 hr_utility.set_location('py_za_tx_01032005.DirCalc',4);
1807 -- Set Cascade Figures and Refund
1808 trc_NorErn := 0;
1809 trc_TotLibNI := 0;
1810 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
1811 trc_LibFpNIOvr := TRUE;
1812 END IF;
1813
1814 -- Fringe Benefits
1815 --
1816 -- Ytd Fringe Benefits
1817 trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
1818 -- Skip the calculation if there is No Income
1819 IF trc_FrnBenYtd <> 0 THEN
1820 hr_utility.set_location('py_za_tx_01032005.DirCalc',5);
1821 -- Fringe Benefit Earnings
1822 trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
1823 -- Tax Liability
1824 trc_TotLibFB := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_FrnBenErn);
1825 trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
1826 trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
1827 trc_LibFpFB := trc_LibFyFB - bal_TX_ON_FB_YTD;
1828 ELSE
1829 hr_utility.set_location('py_za_tx_01032005.DirCalc',6);
1830 -- Set Cascade Figures and Refund
1831 trc_FrnBenErn := trc_NorErn;
1832 trc_TotLibFB := trc_TotLibNI;
1833 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
1834 trc_LibFpFBOvr := TRUE;
1835 END IF;
1836
1837 -- Travel Allowance
1838 --
1839 -- Ytd Travel Allowance
1840 trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
1841 -- Skip the calculation if there is No Income
1842 IF trc_TrvAllYtd <> 0 THEN
1843 hr_utility.set_location('py_za_tx_01032005.DirCalc',7);
1844 -- Travel Allowance Earnings
1845 trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
1846 -- Tax Liability
1847 trc_TotLibTA := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TrvAllErn);
1848 trc_LibFyTA := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
1849 trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
1850 trc_LibFpTA := trc_LibFyTA - bal_TX_ON_TA_YTD;
1851 ELSE
1852 hr_utility.set_location('py_za_tx_01032005.DirCalc',8);
1853 -- Set Cascade Figures and Refund
1854 trc_TrvAllErn := trc_FrnBenErn; --Cascade Figure
1855 trc_TotLibTA := trc_TotLibFB;
1856 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
1857 trc_LibFpTAOvr := TRUE;
1858 END IF;
1859
1860 -- Bonus Provision
1861 --
1862 -- Ytd Bonus Provision
1863 trc_BonProYtd := bal_BP_YTD;
1864 -- Skip the calculation if there is No Income
1865 IF trc_BonProYtd <> 0 THEN
1866 hr_utility.set_location('py_za_tx_01032005.DirCalc',9);
1867 -- Bonus Provision Earnings
1868 trc_BonProErn := trc_BonProYtd + trc_TrvAllErn;
1869 -- Tax Liability
1870 trc_TotLibBP := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_BonProErn);
1871 trc_LibFyBP := trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA);
1872 trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
1873 trc_LibFpBP := trc_LibFyBP - bal_TX_ON_BP_YTD;
1874 ELSE
1875 hr_utility.set_location('py_za_tx_01032005.DirCalc',10);
1876 -- Set Cascade Figures and Refund
1877 trc_BonProErn := trc_TrvAllErn;
1878 trc_TotLibBP := trc_TotLibTA;
1879 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
1880 trc_LibFpBPOvr := TRUE;
1881 END IF;
1882
1883 -- Annual Bonus
1884 --
1885 -- Ytd Annual Bonus
1886 trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
1887 -- Skip the calculation if there is No Income
1888 IF trc_AnnBonYtd <> 0 THEN
1889 hr_utility.set_location('py_za_tx_01032005.DirCalc',11);
1890 -- Annual Bonus Earnings
1891 trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
1892 -- Tax Liability
1893 trc_TotLibAB := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_AnnBonErn);
1894 trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
1895 trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
1896 -- Check Bonus Provision
1897 IF trc_BonProYtd <> 0 THEN
1898 hr_utility.set_location('py_za_tx_01032005.DirCalc',12);
1899 -- Check Bonus Provision Frequency
1900 IF dbi_BP_TX_RCV = 'B' OR py_za_tx_utl_01032005.SitePeriod THEN
1901 hr_utility.set_location('py_za_tx_01032005.DirCalc',13);
1902 trc_LibFpAB :=
1903 trc_LibFyAB - (bal_TX_ON_BP_YTD
1904 + trc_LibFpBP
1905 + bal_TX_ON_AB_YTD);
1906 ELSE
1907 hr_utility.set_location('py_za_tx_01032005.DirCalc',14);
1908 trc_LibFpAB := 0;
1909 END IF;
1910 ELSE
1911 hr_utility.set_location('py_za_tx_01032005.DirCalc',15);
1912 trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
1913 END IF;
1914 ELSE
1915 hr_utility.set_location('py_za_tx_01032005.DirCalc',16);
1916 -- Set Cascade Figures and Refund
1917 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1918 trc_LibFpABOvr := TRUE;
1919
1920 IF dbi_BP_TX_RCV = 'A' AND py_za_tx_utl_01032005.SitePeriod THEN
1921 hr_utility.set_location('py_za_tx_01032005.DirCalc',17);
1922 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
1923 trc_LibFpBPOvr := TRUE;
1924 trc_LibFpAPOvr := TRUE;
1925
1926 trc_AnnBonErn := trc_TrvAllErn;
1927 trc_TotLibAB := trc_TotLibTA;
1928 ELSE
1929 hr_utility.set_location('py_za_tx_01032005.DirCalc',18);
1930 trc_AnnBonErn := trc_BonProErn;
1931 trc_TotLibAB := trc_TotLibBP;
1932 END IF;
1933 END IF;
1934
1935 -- Annual Payments
1936 --
1937 -- Ytd Annual Payments
1938 trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
1939 -- Skip the calculation if there is No Income
1940 IF trc_AnnPymYtd <> 0 THEN
1941 hr_utility.set_location('py_za_tx_01032005.DirCalc',19);
1942 -- Annual Payments Earnings
1943 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
1944 -- Tax Liability
1945 trc_TotLibAP := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_AnnPymErn);
1946 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
1947 trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
1948 trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
1949 ElSE
1950 hr_utility.set_location('py_za_tx_01032005.DirCalc',20);
1951 -- Set Cascade Figures and Refund
1952 trc_AnnPymErn := trc_AnnBonErn;
1953 trc_TotLibAP := trc_TotLibAB;
1954 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
1955 trc_LibFpAPOvr := TRUE;
1956 END IF;
1957
1958 -- Public Office Allowance
1959 --
1960 -- Ytd Public Office Allowance
1961 trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
1962 -- Skip the calculation if there is No Income
1963 IF trc_PblOffYtd <> 0 THEN
1964 hr_utility.set_location('py_za_tx_01032005.DirCalc',21);
1965 -- Tax Liability
1966 trc_LibFyPO := trc_PblOffYtd * glb_ZA_PBL_TX_RTE / 100;
1967 trc_LibFpPO := trc_LibFyPO - bal_TX_ON_PO_YTD;
1968 ELSE
1969 hr_utility.set_location('py_za_tx_01032005.DirCalc',22);
1970 -- Set Cascade Figures and Refund
1971 trc_LibFyPO := 0;
1972 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
1973 trc_LibFpPOOvr := TRUE;
1974 END IF;
1975
1976 -- Net Pay Validation
1977 --
1978 py_za_tx_utl_01032005.ValidateTaxOns(p_Rf => TRUE);
1979
1980 hr_utility.set_location('py_za_tx_01032005.DirCalc',23);
1981
1982 -- Tax Percentage Indicator
1983 --
1984 IF dbi_TX_STA IN ('D','P') THEN
1985 hr_utility.set_location('py_za_tx_01032005.DirCalc',24);
1986 trc_TxPercVal := dbi_TX_DIR_VAL;
1987 ELSIF dbi_TX_STA = 'E' THEN
1988 hr_utility.set_location('py_za_tx_01032005.DirCalc',25);
1989 trc_TxPercVal := glb_ZA_CC_TX_PRC;
1990 ELSIF dbi_TX_STA = 'F' THEN
1991 hr_utility.set_location('py_za_tx_01032005.DirCalc',26);
1992 trc_TxPercVal := glb_ZA_TMP_TX_RTE;
1993 ELSIF dbi_TX_STA = 'J' THEN
1994 hr_utility.set_location('py_za_tx_01032005.DirCalc',27);
1995 trc_TxPercVal := glb_ZA_PER_SERV_COMP_PERC;
1996 ELSIF dbi_TX_STA = 'K' THEN
1997 hr_utility.set_location('py_za_tx_01032005.DirCalc',28);
1998 trc_TxPercVal := glb_ZA_PER_SERV_TRST_PERC;
1999 ELSIF dbi_TX_STA = 'L' THEN
2000 hr_utility.set_location('py_za_tx_01032005.DirCalc',29);
2001 trc_TxPercVal := glb_ZA_PER_SERV_COMP_PERC;
2002 ELSE
2003 hr_utility.set_location('py_za_tx_01032005.DirCalc',30);
2004 trc_TxPercVal := 0;
2005 END IF;
2006
2007 hr_utility.set_location('py_za_tx_01032005.DirCalc',31);
2008
2009 -- Base Income
2010 WrtHrTrc('trc_BseErn: '||to_char(trc_BseErn));
2011 WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
2012 WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
2013 -- Normal Income
2014 WrtHrTrc('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
2015 WrtHrTrc('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
2016 WrtHrTrc('trc_NorErn: '||to_char(trc_NorErn));
2017 WrtHrTrc('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
2018 WrtHrTrc('trc_TotLibNI: '||to_char(trc_TotLibNI));
2019 WrtHrTrc('trc_LibFyNI: '||to_char(trc_LibFyNI));
2020 WrtHrTrc('trc_LibFpNI: '||to_char(trc_LibFpNI));
2021 -- Fringe Benefits
2022 WrtHrTrc('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
2023 WrtHrTrc('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
2024 WrtHrTrc('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
2025 WrtHrTrc('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
2026 WrtHrTrc('trc_TotLibFB: '||to_char(trc_TotLibFB));
2027 WrtHrTrc('trc_LibFyFB: '||to_char(trc_LibFyFB));
2028 WrtHrTrc('trc_LibFpFB: '||to_char(trc_LibFpFB));
2029 -- Travel Allowance
2030 WrtHrTrc('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
2031 WrtHrTrc('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
2032 WrtHrTrc('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
2033 WrtHrTrc('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
2034 WrtHrTrc('trc_TotLibTA: '||to_char(trc_TotLibTA));
2035 WrtHrTrc('trc_LibFyTA: '||to_char(trc_LibFyTA));
2036 WrtHrTrc('trc_LibFpTA: '||to_char(trc_LibFpTA));
2037 -- Bonus Provision
2038 WrtHrTrc('trc_BonProYtd: '||to_char(trc_BonProYtd));
2039 WrtHrTrc('trc_BonProPtd: '||to_char(trc_BonProPtd));
2040 WrtHrTrc('trc_BonProErn: '||to_char(trc_BonProErn));
2041 WrtHrTrc('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
2042 WrtHrTrc('trc_TotLibBP: '||to_char(trc_TotLibBP));
2043 WrtHrTrc('trc_LibFyBP: '||to_char(trc_LibFyBP));
2044 WrtHrTrc('trc_LibFpBP: '||to_char(trc_LibFpBP));
2045 -- Annual Bonus
2046 WrtHrTrc('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
2047 WrtHrTrc('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
2048 WrtHrTrc('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
2049 WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
2050 WrtHrTrc('trc_TotLibAB: '||to_char(trc_TotLibAB));
2051 WrtHrTrc('trc_LibFyAB: '||to_char(trc_LibFyAB));
2052 WrtHrTrc('trc_LibFpAB: '||to_char(trc_LibFpAB));
2053 -- Annual Payments
2054 WrtHrTrc('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
2055 WrtHrTrc('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
2056 WrtHrTrc('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
2057 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2058 WrtHrTrc('trc_TotLibAP: '||to_char(trc_TotLibAP));
2059 WrtHrTrc('trc_LibFyAP: '||to_char(trc_LibFyAP));
2060 WrtHrTrc('trc_LibFpAP: '||to_char(trc_LibFpAP));
2061 -- Pubilc Office Allowance
2062 WrtHrTrc('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
2063 WrtHrTrc('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
2064 WrtHrTrc('trc_PblOffErn: '||to_char(trc_PblOffErn));
2065 WrtHrTrc('trc_LibFyPO: '||to_char(trc_LibFyPO));
2066 WrtHrTrc('trc_LibFpPO: '||to_char(trc_LibFpPO));
2067
2068 EXCEPTION
2069 WHEN OTHERS THEN
2070 IF xpt_Msg = 'No Error' THEN
2071 xpt_Msg := 'DirCalc: '||TO_CHAR(SQLCODE);
2072 END IF;
2073 RAISE xpt_E;
2074 END DirCalc;
2075
2076 -------------------------------------------------------------------------------
2077 -- BasCalc --
2078 -- Pre-Earnings Tax Calculation --
2079 -------------------------------------------------------------------------------
2080 PROCEDURE BasCalc AS
2081 -- Variables
2082 --
2083 l_Np BALANCE;
2084 l_65Year DATE;
2085
2086 BEGIN
2087
2088 hr_utility.set_location('py_za_tx_01032005.BasCalc',1);
2089 -- Identify the Calculation
2090 --
2091 trc_CalTyp := 'BasCalc';
2092
2093 -- Rebates
2094 py_za_tx_utl_01032005.SetRebates;
2095
2096 -- Abatements
2097 py_za_tx_utl_01032005.Abatements;
2098
2099 -- Deemed Remuneration
2100 --
2101 -- Run Deemed Remuneration
2102 trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
2103
2104 -- Skip the calculation if there is No Income
2105 IF trc_DmdRmnRun <> 0 THEN
2106 hr_utility.set_location('py_za_tx_01032005.BasCalc',2);
2107 -- Taxable Deemed Remuneration
2108 trc_TxbDmdRmn := trc_DmdRmnRun;
2109 -- Threshold Check
2110 IF trc_TxbDmdRmn >= trc_Threshold THEN
2111 hr_utility.set_location('py_za_tx_01032005.BasCalc',3);
2112 -- Tax Liability
2113 trc_TotLibDR := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbDmdRmn);
2114 ELSE
2115 hr_utility.set_location('py_za_tx_01032005.BasCalc',4);
2116 trc_TotLibDR := 0;
2117 END IF;
2118 ELSE
2119 hr_utility.set_location('py_za_tx_01032005.BasCalc',5);
2120 trc_TotLibDR := 0;
2121 END IF;
2122
2123 hr_utility.set_location('py_za_tx_01032005.BasCalc',6);
2124
2125 -- Base Earnings
2126 --
2127 --Base Earnings
2128 trc_BseErn := bal_TOT_TXB_AB_PTD + bal_TOT_TXB_AP_PTD;
2129 -- Estimate Base Taxable Income
2130 trc_TxbBseInc := trc_BseErn * dbi_ZA_PAY_PRDS_PER_YR;
2131 -- Threshold Check
2132 IF trc_TxbBseInc >= trc_Threshold THEN
2133 hr_utility.set_location('py_za_tx_01032005.BasCalc',7);
2134 -- Tax Liability
2135 trc_TotLibBse := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbBseInc);
2136 trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
2137 ELSE
2138 hr_utility.set_location('py_za_tx_01032005.BasCalc',8);
2139 trc_TotLibBse := trc_TotLibDR;
2140 END IF;
2141
2142 hr_utility.set_location('py_za_tx_01032005.BasCalc',9);
2143
2144 -- Annual Bonus
2145 --
2146 -- Ytd Annual Bonus
2147 trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
2148 -- Skip the calculation if there is No Income
2149 IF trc_AnnBonYtd <> 0 THEN
2150 hr_utility.set_location('py_za_tx_01032005.BasCalc',10);
2151 -- Annual Bonus Earnings
2152 trc_AnnBonErn := trc_AnnBonYtd + trc_TxbBseInc;
2153 -- Taxable Annual Bonus Income
2154 trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
2155 -- Threshold Check
2156 IF trc_TxbAnnBonInc >= trc_Threshold THEN
2157 hr_utility.set_location('py_za_tx_01032005.BasCalc',11);
2158 -- Tax Liability
2159 trc_TotLibAB := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbAnnBonInc);
2160 trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
2161 trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
2162 -- Check Bonus Provision
2163 IF bal_BP_YTD <> 0 THEN
2164 hr_utility.set_location('py_za_tx_01032005.BasCalc',12);
2165 -- Check Bonus Provision Frequency
2166 IF dbi_BP_TX_RCV = 'A' THEN
2167 hr_utility.set_location('py_za_tx_01032005.BasCalc',13);
2168 trc_LibFpAB := 0;
2169 ELSE
2170 hr_utility.set_location('py_za_tx_01032005.BasCalc',14);
2171 trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD
2172 + bal_TX_ON_AB_YTD);
2173 END IF;
2174 ELSE
2175 hr_utility.set_location('py_za_tx_01032005.BasCalc',15);
2176 trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
2177 END IF;
2178 ELSE
2179 hr_utility.set_location('py_za_tx_01032005.BasCalc',16);
2180 trc_TotLibAB := trc_TotLibBse;
2181 END IF;
2182 ELSE
2183 hr_utility.set_location('py_za_tx_01032005.BasCalc',17);
2184 trc_TotLibAB := trc_TotLibBse;
2185 trc_TxbAnnBonInc := trc_TxbBseInc;
2186 END IF;
2187
2188 hr_utility.set_location('py_za_tx_01032005.BasCalc',18);
2189
2190 -- Annual Payments
2191 --
2192 -- Ytd Annual Payments
2193 trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
2194 -- Skip the calculation if there is No Income
2195 IF trc_AnnPymYtd <> 0 THEN
2196 hr_utility.set_location('py_za_tx_01032005.BasCalc',19);
2197 -- Taxable Annual Payments Income
2198 trc_TxbAnnPymInc := trc_AnnPymYtd + trc_TxbAnnBonInc;
2199 -- Threshold Check
2200 IF trc_TxbAnnPymInc >= trc_Threshold THEN
2201 hr_utility.set_location('py_za_tx_01032005.BasCalc',20);
2202 -- Tax Liability
2203 trc_TotLibAP := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2204 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
2205 trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
2206 trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
2207 ELSE
2208 hr_utility.set_location('py_za_tx_01032005.BasCalc',21);
2209 NULL;
2210 END IF;
2211 ELSE
2212 hr_utility.set_location('py_za_tx_01032005.BasCalc',22);
2213 NULL;
2214 END IF;
2215
2216 -- Net Pay Validation
2217 --
2218 py_za_tx_utl_01032005.ValidateTaxOns;
2219
2220 -- Deemed Remuneration
2221 WrtHrTrc('trc_TxbDmdRmn: '||to_char(trc_TxbDmdRmn));
2222 WrtHrTrc('trc_TotLibDR: '||to_char(trc_TotLibDR));
2223 WrtHrTrc('trc_LibFyDR: '||to_char(trc_LibFyDR));
2224 WrtHrTrc('trc_LibFpDR: '||to_char(trc_LibFpDR));
2225 -- Base Income
2226 WrtHrTrc('trc_BseErn: '||to_char(trc_BseErn));
2227 WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
2228 WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
2229 -- Normal Income
2230 WrtHrTrc('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
2231 WrtHrTrc('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
2232 WrtHrTrc('trc_NorErn: '||to_char(trc_NorErn));
2233 WrtHrTrc('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
2234 WrtHrTrc('trc_TotLibNI: '||to_char(trc_TotLibNI));
2235 WrtHrTrc('trc_LibFyNI: '||to_char(trc_LibFyNI));
2236 WrtHrTrc('trc_LibFpNI: '||to_char(trc_LibFpNI));
2237 -- Fringe Benefits
2238 WrtHrTrc('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
2239 WrtHrTrc('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
2240 WrtHrTrc('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
2241 WrtHrTrc('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
2242 WrtHrTrc('trc_TotLibFB: '||to_char(trc_TotLibFB));
2243 WrtHrTrc('trc_LibFyFB: '||to_char(trc_LibFyFB));
2244 WrtHrTrc('trc_LibFpFB: '||to_char(trc_LibFpFB));
2245 -- Travel Allowance
2246 WrtHrTrc('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
2247 WrtHrTrc('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
2248 WrtHrTrc('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
2249 WrtHrTrc('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
2250 WrtHrTrc('trc_TotLibTA: '||to_char(trc_TotLibTA));
2251 WrtHrTrc('trc_LibFyTA: '||to_char(trc_LibFyTA));
2252 WrtHrTrc('trc_LibFpTA: '||to_char(trc_LibFpTA));
2253 -- Bonus Provision
2254 WrtHrTrc('trc_BonProYtd: '||to_char(trc_BonProYtd));
2255 WrtHrTrc('trc_BonProPtd: '||to_char(trc_BonProPtd));
2256 WrtHrTrc('trc_BonProErn: '||to_char(trc_BonProErn));
2257 WrtHrTrc('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
2258 WrtHrTrc('trc_TotLibBP: '||to_char(trc_TotLibBP));
2259 WrtHrTrc('trc_LibFyBP: '||to_char(trc_LibFyBP));
2260 WrtHrTrc('trc_LibFpBP: '||to_char(trc_LibFpBP));
2261 -- Annual Bonus
2262 WrtHrTrc('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
2263 WrtHrTrc('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
2264 WrtHrTrc('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
2265 WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
2266 WrtHrTrc('trc_TotLibAB: '||to_char(trc_TotLibAB));
2267 WrtHrTrc('trc_LibFyAB: '||to_char(trc_LibFyAB));
2268 WrtHrTrc('trc_LibFpAB: '||to_char(trc_LibFpAB));
2269 -- Annual Payments
2270 WrtHrTrc('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
2271 WrtHrTrc('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
2272 WrtHrTrc('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
2273 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2274 WrtHrTrc('trc_TotLibAP: '||to_char(trc_TotLibAP));
2275 WrtHrTrc('trc_LibFyAP: '||to_char(trc_LibFyAP));
2276 WrtHrTrc('trc_LibFpAP: '||to_char(trc_LibFpAP));
2277 -- Pubilc Office Allowance
2278 WrtHrTrc('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
2279 WrtHrTrc('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
2280 WrtHrTrc('trc_PblOffErn: '||to_char(trc_PblOffErn));
2281 WrtHrTrc('trc_LibFyPO: '||to_char(trc_LibFyPO));
2282 WrtHrTrc('trc_LibFpPO: '||to_char(trc_LibFpPO));
2283
2284 EXCEPTION
2285 WHEN OTHERS THEN
2286 IF xpt_Msg = 'No Error' THEN
2287 xpt_Msg := 'BasCalc: '||TO_CHAR(SQLCODE);
2288 END IF;
2289 RAISE xpt_E;
2290 END BasCalc;
2291
2292 -------------------------------------------------------------------------------
2293 -- CalCalc --
2294 -- Pre-Earnings Tax Calculation --
2295 -------------------------------------------------------------------------------
2296 PROCEDURE CalCalc AS
2297 -- Variables
2298 --
2299 l_Np BALANCE;
2300
2301 BEGIN
2302
2303 hr_utility.set_location('py_za_tx_01032005.CalCalc',1);
2304 -- Identify the calculation
2305 --
2306 trc_CalTyp := 'CalCalc';
2307
2308 -- Update Global Balance Values with correct TAXABLE values
2309 --
2310 py_za_tx_utl_01032005.TrvAll;
2311
2312 hr_utility.set_location('py_za_tx_01032005.CalCalc',2);
2313
2314 -- Calendar Ytd Taxable Income
2315 --
2316 trc_TxbIncYtd := ( bal_TOT_TXB_NI_CYTD
2317 + bal_TOT_TXB_FB_CYTD
2318 + bal_TOT_TXB_TA_CYTD );
2319 -- If there is no Income Execute the Base calculation
2320 --
2321 IF trc_TxbIncYtd = 0 THEN
2322 hr_utility.set_location('py_za_tx_01032005.CalCalc',3);
2323 BasCalc;
2324 ELSE -- continue CalCalc
2325 hr_utility.set_location('py_za_tx_01032005.CalCalc',4);
2326 -- Site Factor
2327 --
2328 trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032005.DaysWorked;
2329
2330 -- Rebates
2331 py_za_tx_utl_01032005.SetRebates;
2332
2333 -- Abatements
2334 py_za_tx_utl_01032005.Abatements;
2335
2336 hr_utility.set_location('py_za_tx_01032005.CalCalc',5);
2337
2338 -- Deemed Remuneration
2339 --
2340 -- Run Deemed Remuneration
2341 trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
2342
2343 -- Skip the calculation if there is No Income
2344 IF trc_DmdRmnRun <> 0 THEN
2345 hr_utility.set_location('py_za_tx_01032005.CalCalc',6);
2346 -- Taxable Deemed Remuneration
2347 trc_TxbDmdRmn := trc_DmdRmnRun;
2348 -- Threshold Check
2349 IF trc_TxbDmdRmn >= trc_Threshold THEN
2350 hr_utility.set_location('py_za_tx_01032005.CalCalc',7);
2351 -- Tax Liability
2352 trc_TotLibDR := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbDmdRmn);
2353 ELSE
2354 hr_utility.set_location('py_za_tx_01032005.CalCalc',8);
2355 trc_TotLibDR := 0;
2356 END IF;
2357 ELSE
2358 hr_utility.set_location('py_za_tx_01032005.CalCalc',9);
2359 trc_TotLibDR := 0;
2360 END IF;
2361
2362 hr_utility.set_location('py_za_tx_01032005.CalCalc',10);
2363
2364 -- Base Earnings
2365 --
2366 -- Base Earnings
2367 trc_BseErn := trc_TxbIncYtd * trc_SitFactor;
2368 -- Taxable Base Income
2369 trc_TxbBseInc := trc_BseErn - trc_PerTotAbm;
2370 -- Threshold Check
2371 IF trc_TxbBseInc >= trc_Threshold THEN
2372 hr_utility.set_location('py_za_tx_01032005.CalCalc',11);
2373 -- Tax Liability
2374 trc_TotLibBse := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbBseInc);
2375 trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
2376 ELSE
2377 hr_utility.set_location('py_za_tx_01032005.CalCalc',12);
2378 trc_TotLibBse := trc_TotLibDR;
2379 END IF;
2380
2381 hr_utility.set_location('py_za_tx_01032005.CalCalc',13);
2382
2383 -- Annual Bonus
2384 --
2385 -- Ytd Annual Bonus
2386 trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
2387 -- Skip the calculation if there is No Income
2388 IF trc_AnnBonYtd <> 0 THEN
2389 hr_utility.set_location('py_za_tx_01032005.CalCalc',14);
2390 -- Annual Bonus Earnings
2391 trc_AnnBonErn := trc_AnnBonYtd + trc_BseErn;
2392 -- Taxable Annual Bonus Income
2393 trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
2394 -- Threshold Check
2395 IF trc_TxbAnnBonInc >= trc_Threshold THEN
2396 hr_utility.set_location('py_za_tx_01032005.CalCalc',15);
2397 -- Tax Liability
2398 trc_TotLibAB := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbAnnBonInc);
2399 trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
2400 trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
2401 -- Check Bonus Provision
2402 IF bal_BP_YTD <> 0 THEN
2403 hr_utility.set_location('py_za_tx_01032005.CalCalc',16);
2404 -- Check Bonus Provision Frequency
2405 IF dbi_BP_TX_RCV = 'A' THEN
2406 hr_utility.set_location('py_za_tx_01032005.CalCalc',17);
2407 trc_LibFpAB := 0;
2408 ELSE
2409 hr_utility.set_location('py_za_tx_01032005.CalCalc',18);
2410 trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD
2411 + bal_TX_ON_AB_YTD);
2412 END IF;
2413 ELSE
2414 hr_utility.set_location('py_za_tx_01032005.CalCalc',19);
2415 trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
2416 END IF;
2417 ELSE
2418 hr_utility.set_location('py_za_tx_01032005.CalCalc',20);
2419 trc_TotLibAB := trc_TotLibBse;
2420 END IF;
2421 ELSE
2422 hr_utility.set_location('py_za_tx_01032005.CalCalc',21);
2423 trc_AnnBonErn := trc_BseErn;
2424 trc_TxbAnnBonInc := trc_TxbBseInc;
2425 trc_TotLibAB := trc_TotLibBse;
2426 END IF;
2427
2428 hr_utility.set_location('py_za_tx_01032005.CalCalc',22);
2429
2430 -- Annual Payments
2431 --
2432 -- Ytd Annual Payments
2433 trc_AnnPymYtd := bal_TOT_TXB_AP_YTD ;
2434 -- Skip the calculation if there is No Income
2435 IF trc_AnnPymYtd <> 0 THEN
2436 hr_utility.set_location('py_za_tx_01032005.CalCalc',23);
2437 -- Annual Payments Earnings
2438 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
2439 -- Taxable Annual Payments Income
2440 trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
2441 -- Threshold Check
2442 IF trc_TxbAnnPymInc >= trc_Threshold THEN
2443 hr_utility.set_location('py_za_tx_01032005.CalCalc',24);
2444 -- Tax Liability
2445 trc_TotLibAP := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2446 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
2447 trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
2448 trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
2449 ELSE
2450 hr_utility.set_location('py_za_tx_01032005.CalCalc',25);
2451 trc_TotLibAP := trc_TotLibAB;
2452 END IF;
2453 ELSE
2454 hr_utility.set_location('py_za_tx_01032005.CalCalc',26);
2455 trc_AnnPymErn := trc_AnnBonErn;
2456 trc_TxbAnnPymInc := trc_TxbAnnBonInc;
2457 trc_TotLibAP := trc_TotLibAB;
2458 END IF;
2459
2460 -- Net pay Validation
2461 --
2462 py_za_tx_utl_01032005.ValidateTaxOns;
2463
2464 -- Deemed Remuneration
2465 WrtHrTrc('trc_TxbDmdRmn: '||to_char(trc_TxbDmdRmn));
2466 WrtHrTrc('trc_TotLibDR: '||to_char(trc_TotLibDR));
2467 WrtHrTrc('trc_LibFyDR: '||to_char(trc_LibFyDR));
2468 WrtHrTrc('trc_LibFpDR: '||to_char(trc_LibFpDR));
2469 -- Base Income
2470 WrtHrTrc('trc_BseErn: '||to_char(trc_BseErn));
2471 WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
2472 WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
2473 -- Normal Income
2474 WrtHrTrc('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
2475 WrtHrTrc('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
2476 WrtHrTrc('trc_NorErn: '||to_char(trc_NorErn));
2477 WrtHrTrc('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
2478 WrtHrTrc('trc_TotLibNI: '||to_char(trc_TotLibNI));
2479 WrtHrTrc('trc_LibFyNI: '||to_char(trc_LibFyNI));
2480 WrtHrTrc('trc_LibFpNI: '||to_char(trc_LibFpNI));
2481 -- Fringe Benefits
2482 WrtHrTrc('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
2483 WrtHrTrc('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
2484 WrtHrTrc('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
2485 WrtHrTrc('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
2486 WrtHrTrc('trc_TotLibFB: '||to_char(trc_TotLibFB));
2487 WrtHrTrc('trc_LibFyFB: '||to_char(trc_LibFyFB));
2488 WrtHrTrc('trc_LibFpFB: '||to_char(trc_LibFpFB));
2489 -- Travel Allowance
2490 WrtHrTrc('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
2491 WrtHrTrc('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
2492 WrtHrTrc('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
2493 WrtHrTrc('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
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_TotLibBP: '||to_char(trc_TotLibBP));
2503 WrtHrTrc('trc_LibFyBP: '||to_char(trc_LibFyBP));
2504 WrtHrTrc('trc_LibFpBP: '||to_char(trc_LibFpBP));
2505 -- Annual Bonus
2506 WrtHrTrc('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
2507 WrtHrTrc('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
2508 WrtHrTrc('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
2509 WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
2510 WrtHrTrc('trc_TotLibAB: '||to_char(trc_TotLibAB));
2511 WrtHrTrc('trc_LibFyAB: '||to_char(trc_LibFyAB));
2512 WrtHrTrc('trc_LibFpAB: '||to_char(trc_LibFpAB));
2513 -- Annual Payments
2514 WrtHrTrc('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
2515 WrtHrTrc('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
2516 WrtHrTrc('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
2517 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2518 WrtHrTrc('trc_TotLibAP: '||to_char(trc_TotLibAP));
2519 WrtHrTrc('trc_LibFyAP: '||to_char(trc_LibFyAP));
2520 WrtHrTrc('trc_LibFpAP: '||to_char(trc_LibFpAP));
2521 -- Pubilc Office Allowance
2522 WrtHrTrc('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
2523 WrtHrTrc('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
2524 WrtHrTrc('trc_PblOffErn: '||to_char(trc_PblOffErn));
2525 WrtHrTrc('trc_LibFyPO: '||to_char(trc_LibFyPO));
2526 WrtHrTrc('trc_LibFpPO: '||to_char(trc_LibFpPO));
2527
2528 END IF;
2529
2530 hr_utility.set_location('py_za_tx_01032005.CalCalc',27);
2531
2532 EXCEPTION
2533 WHEN OTHERS THEN
2534 IF xpt_Msg = 'No Error' THEN
2535 xpt_Msg := 'CalCalc: '||TO_CHAR(SQLCODE);
2536 END IF;
2537 RAISE xpt_E;
2538 END CalCalc;
2539 -------------------------------------------------------------------------------
2540 -- YtdCalc --
2541 -- Pre-Earnings Tax Calculation --
2542 -------------------------------------------------------------------------------
2543 PROCEDURE YtdCalc AS
2544 -- Variables
2545 --
2546 l_Np BALANCE;
2547
2548 BEGIN
2549
2550 hr_utility.set_location('py_za_tx_01032005.YtdCalc',1);
2551 -- Identify the calculation
2552 --
2553 trc_CalTyp := 'YtdCalc';
2554
2555 -- Update Global Balance Values with correct TAXABLE values
2556 py_za_tx_utl_01032005.TrvAll;
2557
2558 hr_utility.set_location('py_za_tx_01032005.YtdCalc',2);
2559
2560 -- Ytd Taxable Income
2561 trc_TxbIncYtd :=
2562 ( bal_TOT_TXB_NI_YTD
2563 + bal_TOT_TXB_FB_YTD
2564 + bal_TOT_TXB_TA_YTD
2565 + bal_BP_YTD
2566 );
2567 -- If the Ytd Taxable Income = 0, execute the CalCalc
2568 IF trc_TxbIncYtd = 0 THEN
2569 hr_utility.set_location('py_za_tx_01032005.YtdCalc',3);
2570 CalCalc;
2571 ELSE --Continue YtdCalc
2572 hr_utility.set_location('py_za_tx_01032005.YtdCalc',4);
2573 -- Site Factor
2574 trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032005.DaysWorked;
2575
2576 -- Rebates
2577 py_za_tx_utl_01032005.SetRebates;
2578
2579 -- Abatements
2580 py_za_tx_utl_01032005.Abatements;
2581
2582 hr_utility.set_location('py_za_tx_01032005.YtdCalc',5);
2583
2584 -- Deemed Remuneration
2585 --
2586 -- Run Deemed Remuneration
2587 trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
2588
2589 -- Skip the calculation if there is No Income
2590 IF trc_DmdRmnRun <> 0 THEN
2591 hr_utility.set_location('py_za_tx_01032005.YtdCalc',6);
2592 -- Taxable Deemed Remuneration
2593 trc_TxbDmdRmn := trc_DmdRmnRun;
2594 -- Threshold Check
2595 IF trc_TxbDmdRmn >= trc_Threshold THEN
2596 hr_utility.set_location('py_za_tx_01032005.YtdCalc',7);
2597 -- Tax Liability
2598 trc_TotLibDR := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbDmdRmn);
2599 ELSE
2600 hr_utility.set_location('py_za_tx_01032005.YtdCalc',8);
2601 trc_TotLibDR := 0;
2602 END IF;
2603 ELSE
2604 hr_utility.set_location('py_za_tx_01032005.YtdCalc',9);
2605 trc_TotLibDR := 0;
2606 END IF;
2607
2608 hr_utility.set_location('py_za_tx_01032005.YtdCalc',10);
2609
2610 -- Base Earnings
2611 --
2612 -- Base Earnings
2613 trc_BseErn := trc_TxbIncYtd * trc_SitFactor;
2614 -- Taxable Base Income
2615 trc_TxbBseInc := trc_BseErn - trc_PerTotAbm;
2616 -- Threshold Check
2617 IF trc_TxbBseInc >= trc_Threshold THEN
2618 hr_utility.set_location('py_za_tx_01032005.YtdCalc',11);
2619 -- Tax Liability
2620 trc_TotLibBse := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbBseInc);
2621 trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
2622 ELSE
2623 hr_utility.set_location('py_za_tx_01032005.YtdCalc',12);
2624 trc_TotLibBse := trc_TotLibDR;
2625 END IF;
2626
2627 hr_utility.set_location('py_za_tx_01032005.YtdCalc',13);
2628
2629 -- Annual Bonus
2630 --
2631 -- Ytd Annual Bonus
2632 trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
2633 -- Skip the calculation if there is No Income
2634 IF trc_AnnBonYtd <> 0 THEN
2635 hr_utility.set_location('py_za_tx_01032005.YtdCalc',14);
2636 -- Annual Bonus Earnings
2637 trc_AnnBonErn := trc_AnnBonYtd + trc_BseErn;
2638 -- Taxable Annual Bonus Income
2639 trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
2640 -- Threshold Check
2641 IF trc_TxbAnnBonInc >= trc_Threshold THEN
2642 hr_utility.set_location('py_za_tx_01032005.YtdCalc',15);
2643 -- Tax Liability
2644 trc_TotLibAB := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbAnnBonInc);
2645 trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
2646 trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
2647 -- Check Bonus Provision
2648 IF bal_BP_YTD <> 0 THEN
2649 hr_utility.set_location('py_za_tx_01032005.YtdCalc',16);
2650 -- Check Bonus Provision Frequency
2651 IF dbi_BP_TX_RCV = 'A' THEN
2652 hr_utility.set_location('py_za_tx_01032005.YtdCalc',17);
2653 trc_LibFpAB := 0;
2654 ELSE
2655 hr_utility.set_location('py_za_tx_01032005.YtdCalc',18);
2656 trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD
2657 + bal_TX_ON_AB_YTD);
2658 END IF;
2659 ELSE
2660 hr_utility.set_location('py_za_tx_01032005.YtdCalc',19);
2661 trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
2662 END IF;
2663 ELSE
2664 hr_utility.set_location('py_za_tx_01032005.YtdCalc',20);
2665 trc_TotLibAB := trc_TotLibBse;
2666 END IF;
2667 ELSE
2668 hr_utility.set_location('py_za_tx_01032005.YtdCalc',21);
2669 trc_AnnBonErn := trc_BseErn;
2670 trc_TxbAnnBonInc := trc_TxbBseInc;
2671 trc_TotLibAB := trc_TotLibBse;
2672 END IF;
2673
2674 hr_utility.set_location('py_za_tx_01032005.YtdCalc',22);
2675
2676 -- Annual Payments
2677 --
2678 -- Ytd Annual Payments
2679 trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
2680 -- Skip the calculation if there is No Income
2681 IF trc_AnnPymYtd <> 0 THEN
2682 hr_utility.set_location('py_za_tx_01032005.YtdCalc',23);
2683 -- Annual Payments Earnings
2684 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
2685 -- Taxable Annual Payments Income
2686 trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
2687 -- Threshold Check
2688 IF trc_TxbAnnPymInc >= trc_Threshold THEN
2689 hr_utility.set_location('py_za_tx_01032005.YtdCalc',24);
2690 -- Tax Liability
2691 trc_TotLibAP := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2692 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
2693 trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
2694 trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
2695 ELSE
2696 hr_utility.set_location('py_za_tx_01032005.YtdCalc',25);
2697 trc_TotLibAP := trc_TotLibAB;
2698 END IF;
2699 ELSE
2700 hr_utility.set_location('py_za_tx_01032005.YtdCalc',26);
2701 trc_AnnPymErn := trc_AnnBonErn;
2702 trc_TxbAnnPymInc := trc_TxbAnnBonInc;
2703 trc_TotLibAP := trc_TotLibAB;
2704 END IF;
2705
2706 -- Net Pay validation
2707 --
2708 py_za_tx_utl_01032005.ValidateTaxOns;
2709
2710 hr_utility.set_location('py_za_tx_01032005.YtdCalc',27);
2711
2712 -- Deemed Remuneration
2713 WrtHrTrc('trc_TxbDmdRmn: '||to_char(trc_TxbDmdRmn));
2714 WrtHrTrc('trc_TotLibDR: '||to_char(trc_TotLibDR));
2715 WrtHrTrc('trc_LibFyDR: '||to_char(trc_LibFyDR));
2716 WrtHrTrc('trc_LibFpDR: '||to_char(trc_LibFpDR));
2717 -- Base Income
2718 WrtHrTrc('trc_BseErn: '||to_char(trc_BseErn));
2719 WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
2720 WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
2721 -- Normal Income
2722 WrtHrTrc('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
2723 WrtHrTrc('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
2724 WrtHrTrc('trc_NorErn: '||to_char(trc_NorErn));
2725 WrtHrTrc('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
2726 WrtHrTrc('trc_TotLibNI: '||to_char(trc_TotLibNI));
2727 WrtHrTrc('trc_LibFyNI: '||to_char(trc_LibFyNI));
2728 WrtHrTrc('trc_LibFpNI: '||to_char(trc_LibFpNI));
2729 -- Fringe Benefits
2730 WrtHrTrc('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
2731 WrtHrTrc('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
2732 WrtHrTrc('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
2733 WrtHrTrc('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
2734 WrtHrTrc('trc_TotLibFB: '||to_char(trc_TotLibFB));
2735 WrtHrTrc('trc_LibFyFB: '||to_char(trc_LibFyFB));
2736 WrtHrTrc('trc_LibFpFB: '||to_char(trc_LibFpFB));
2737 -- Travel Allowance
2738 WrtHrTrc('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
2739 WrtHrTrc('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
2740 WrtHrTrc('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
2741 WrtHrTrc('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
2742 WrtHrTrc('trc_TotLibTA: '||to_char(trc_TotLibTA));
2743 WrtHrTrc('trc_LibFyTA: '||to_char(trc_LibFyTA));
2744 WrtHrTrc('trc_LibFpTA: '||to_char(trc_LibFpTA));
2745 -- Bonus Provision
2746 WrtHrTrc('trc_BonProYtd: '||to_char(trc_BonProYtd));
2747 WrtHrTrc('trc_BonProPtd: '||to_char(trc_BonProPtd));
2748 WrtHrTrc('trc_BonProErn: '||to_char(trc_BonProErn));
2749 WrtHrTrc('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
2750 WrtHrTrc('trc_TotLibBP: '||to_char(trc_TotLibBP));
2751 WrtHrTrc('trc_LibFyBP: '||to_char(trc_LibFyBP));
2752 WrtHrTrc('trc_LibFpBP: '||to_char(trc_LibFpBP));
2753 -- Annual Bonus
2754 WrtHrTrc('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
2755 WrtHrTrc('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
2756 WrtHrTrc('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
2757 WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
2758 WrtHrTrc('trc_TotLibAB: '||to_char(trc_TotLibAB));
2759 WrtHrTrc('trc_LibFyAB: '||to_char(trc_LibFyAB));
2760 WrtHrTrc('trc_LibFpAB: '||to_char(trc_LibFpAB));
2761 -- Annual Payments
2762 WrtHrTrc('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
2763 WrtHrTrc('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
2764 WrtHrTrc('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
2765 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2766 WrtHrTrc('trc_TotLibAP: '||to_char(trc_TotLibAP));
2767 WrtHrTrc('trc_LibFyAP: '||to_char(trc_LibFyAP));
2768 WrtHrTrc('trc_LibFpAP: '||to_char(trc_LibFpAP));
2769 -- Pubilc Office Allowance
2770 WrtHrTrc('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
2771 WrtHrTrc('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
2772 WrtHrTrc('trc_PblOffErn: '||to_char(trc_PblOffErn));
2773 WrtHrTrc('trc_LibFyPO: '||to_char(trc_LibFyPO));
2774 WrtHrTrc('trc_LibFpPO: '||to_char(trc_LibFpPO));
2775
2776 END IF;
2777
2778 EXCEPTION
2779 WHEN OTHERS THEN
2780 IF xpt_Msg = 'No Error' THEN
2781 xpt_Msg := 'YtdCalc: '||TO_CHAR(SQLCODE);
2782 END IF;
2783 RAISE xpt_E;
2784 END YtdCalc;
2785 -------------------------------------------------------------------------------
2786 -- NorCalc --
2787 -- Main Tax Calculation for Periodic Income --
2788 -------------------------------------------------------------------------------
2789 PROCEDURE NorCalc AS
2790 -- Variables
2791 --
2792 l_Np BALANCE DEFAULT 0;
2793
2794 BEGIN
2795
2796 hr_utility.set_location('py_za_tx_01032005.NorCalc',1);
2797 -- Identify the calculation
2798 --
2799 trc_CalTyp := 'NorCalc';
2800
2801 -- Update Global Balance Values with correct TAXABLE values
2802 --
2803 bal_TOT_TXB_TA_PTD := bal_TOT_TXB_TA_PTD * glb_ZA_TRV_ALL_TX_PRC / 100;
2804
2805 py_za_tx_utl_01032005.TrvAll;
2806
2807 hr_utility.set_location('py_za_tx_01032005.NorCalc',2);
2808
2809 bal_TOT_TXB_PO_PTD := bal_TOT_TXB_PO_PTD * glb_ZA_PBL_TX_PRC / 100;
2810 bal_TOT_TXB_PO_YTD := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
2811
2812 -- PTD Taxable Income
2813 --
2814 trc_TxbIncPtd :=
2815 ( bal_TOT_TXB_NI_PTD
2816 + bal_TOT_TXB_FB_PTD
2817 + bal_TOT_TXB_TA_PTD
2818 + bal_BP_PTD
2819 );
2820 -- Period Factor
2821 py_za_tx_utl_01032005.PeriodFactor;
2822
2823 -- Possible Periods Factor
2824 py_za_tx_utl_01032005.PossiblePeriodsFactor;
2825
2826 -- Rebates
2827 py_za_tx_utl_01032005.SetRebates;
2828
2829 -- Abatements
2830 py_za_tx_utl_01032005.Abatements;
2831
2832 hr_utility.set_location('py_za_tx_01032005.NorCalc',3);
2833
2834 -- Deemed Remuneration
2835 --
2836 -- Run Deemed Remuneration
2837 trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
2838 -- Skip the calculation if there is No Income
2839 IF trc_DmdRmnRun <> 0 THEN
2840 hr_utility.set_location('py_za_tx_01032005.NorCalc',4);
2841 -- Taxable Deemed Remuneration
2842 trc_TxbDmdRmn := trc_DmdRmnRun;
2843 -- Threshold Check
2844 IF trc_TxbDmdRmn >= trc_Threshold THEN
2845 hr_utility.set_location('py_za_tx_01032005.NorCalc',5);
2846 -- Tax Liability
2847 trc_TotLibDR := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbDmdRmn);
2848 trc_LibFyDR := trc_TotLibDR - 0;
2849 trc_TotLibDR := greatest(trc_TotLibDR,0);
2850 -- DeAnnualise
2851 trc_LibFpDR := py_za_tx_utl_01032005.DeAnnualise
2852 ( p_Liab => trc_LibFyDR
2853 , p_TxOnYtd => bal_TX_ON_DR_YTD
2854 , p_TxOnPtd => bal_TX_ON_DR_PTD
2855 );
2856 ELSE
2857 hr_utility.set_location('py_za_tx_01032005.NorCalc',6);
2858 -- Set Cascade Figures and Refund
2859 trc_TotLibDR := 0;
2860 trc_LibFpDR := -1 * bal_TX_ON_DR_YTD;
2861 trc_LibFpDROvr := TRUE;
2862 END IF;
2863 ELSE
2864 hr_utility.set_location('py_za_tx_01032005.NorCalc',7);
2865 -- Set Cascade Figures and Refund
2866 trc_TxbDmdRmn := 0;
2867 trc_TotLibDR := 0;
2868 trc_LibFpDR := -1 * bal_TX_ON_DR_YTD;
2869 trc_LibFpDROvr := TRUE;
2870 END IF;
2871
2872 -- Normal Income
2873 --
2874 -- Ytd Normal Income
2875 trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
2876 -- Skip the calculation if there is No Income
2877 IF trc_NorIncYtd <> 0 THEN
2878 hr_utility.set_location('py_za_tx_01032005.NorCalc',8);
2879
2880 -- Annualise Normal Income
2881 trc_NorErn := py_za_tx_utl_01032005.Annualise
2882 (p_YtdInc => trc_NorIncYtd
2883 ,p_PtdInc => trc_NorIncPtd
2884 );
2885 -- Taxable Normal Income
2886 trc_TxbNorInc := trc_NorErn - trc_PerTotAbm;
2887 -- Threshold Check
2888 IF trc_TxbNorInc >= trc_Threshold THEN
2889 hr_utility.set_location('py_za_tx_01032005.NorCalc',9);
2890 -- Tax Liability
2891 trc_TotLibNI := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbNorInc);
2892 trc_LibFyNI := trc_TotLibNI - least(trc_TotLibNI,trc_TotLibDR);
2893 trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibDR);
2894 -- DeAnnualise
2895 trc_LibFpNI := py_za_tx_utl_01032005.DeAnnualise
2896 ( p_Liab => trc_LibFyNI
2897 , p_TxOnYtd => bal_TX_ON_NI_YTD
2898 , p_TxOnPtd => bal_TX_ON_NI_PTD
2899 );
2900 ELSE
2901 hr_utility.set_location('py_za_tx_01032005.NorCalc',10);
2902 -- Set Cascade Figures and Refund
2903 trc_TotLibNI := trc_TotLibDR;
2904 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
2905 trc_LibFpNIOvr := TRUE;
2906 END IF;
2907 ELSE
2908 hr_utility.set_location('py_za_tx_01032005.NorCalc',11);
2909 -- Set Cascade Figures and Refund
2910 trc_NorErn := 0;
2911 trc_TxbNorInc := 0;
2912 trc_TotLibNI := trc_TotLibDR;
2913 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
2914 trc_LibFpNIOvr := TRUE;
2915 END IF;
2916
2917 -- Fringe Benefits
2918 --
2919 -- Ytd Fringe Benefits
2920 trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
2921 -- Skip the calculation if there is No Income
2922 IF trc_FrnBenYtd <> 0 THEN
2923 hr_utility.set_location('py_za_tx_01032005.NorCalc',12);
2924
2925 -- Annualise Fringe Benefits
2926 trc_FrnBenErn := py_za_tx_utl_01032005.Annualise
2927 ( p_YtdInc => trc_FrnBenYtd
2928 , p_PtdInc => trc_FrnBenPtd
2929 ) + trc_NorErn;
2930 -- Taxable Fringe Income
2931 trc_TxbFrnInc := trc_FrnBenErn - trc_PerTotAbm;
2932 -- Threshold Check
2933 IF trc_TxbFrnInc >= trc_Threshold THEN
2934 hr_utility.set_location('py_za_tx_01032005.NorCalc',13);
2935 -- Tax Liability
2936 trc_TotLibFB := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbFrnInc);
2937 trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
2938 trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
2939 -- DeAnnualise
2940 trc_LibFpFB := py_za_tx_utl_01032005.DeAnnualise
2941 ( trc_LibFyFB
2942 , bal_TX_ON_FB_YTD
2943 , bal_TX_ON_FB_PTD
2944 );
2945 ELSE
2946 hr_utility.set_location('py_za_tx_01032005.NorCalc',14);
2947 -- Set Cascade Figures and Refund
2948 trc_TotLibFB := trc_TotLibNI;
2949 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
2950 trc_LibFpFBOvr := TRUE;
2951 END IF;
2952 ELSE
2953 hr_utility.set_location('py_za_tx_01032005.NorCalc',15);
2954 -- Set Cascade Figures and Refund
2955 trc_FrnBenErn := trc_NorErn;
2956 trc_TxbFrnInc := trc_TxbNorInc;
2957 trc_TotLibFB := trc_TotLibNI;
2958 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
2959 trc_LibFpFBOvr := TRUE;
2960 END IF;
2961
2962 -- Travel Allowance
2963 --
2964 -- Ytd Travel Allowance
2965 trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
2966 -- Skip the calculation if there is No Income
2967 IF trc_TrvAllYtd <> 0 THEN
2968 hr_utility.set_location('py_za_tx_01032005.NorCalc',16);
2969 -- Ptd Travel Allowance
2970 trc_TrvAllPtd := bal_TOT_TXB_TA_PTD;
2971 -- Annualise Travel Allowance
2972 trc_TrvAllErn := py_za_tx_utl_01032005.Annualise
2973 ( p_YtdInc => trc_TrvAllYtd
2974 , p_PtdInc => trc_TrvAllPtd
2975 ) + trc_FrnBenErn;
2976 -- Taxable Travel Income
2977 trc_TxbTrvInc := trc_TrvAllErn - trc_PerTotAbm;
2978 -- Threshold Check
2979 IF trc_TxbTrvInc >= trc_Threshold THEN
2980 hr_utility.set_location('py_za_tx_01032005.NorCalc',17);
2981 -- Tax Liability
2982 trc_TotLibTA := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbTrvInc);
2983 trc_LibFyTA := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
2984 trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
2985 -- DeAnnualise
2986 trc_LibFpTA := py_za_tx_utl_01032005.DeAnnualise
2987 ( trc_LibFyTA
2988 , bal_TX_ON_TA_YTD
2989 , bal_TX_ON_TA_PTD
2990 );
2991 ELSE
2992 hr_utility.set_location('py_za_tx_01032005.NorCalc',18);
2993 -- Set Cascade Figures and Refund
2994 trc_TotLibTA := trc_TotLibFB;
2995 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
2996 trc_LibFpTAOvr := TRUE;
2997 END IF;
2998 ELSE
2999 hr_utility.set_location('py_za_tx_01032005.NorCalc',19);
3000 -- Set Cascade Figures and Refund
3001 trc_TrvAllErn := trc_FrnBenErn;
3002 trc_TxbTrvInc := trc_TxbFrnInc;
3003 trc_TotLibTA := trc_TotLibFB;
3004 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
3005 trc_LibFpTAOvr := TRUE;
3006 END IF;
3007
3008 -- Bonus Provision
3009 --
3010 -- Ytd Bonus Prvision
3011 trc_BonProYtd := bal_BP_YTD;
3012 -- Skip the calculation if there is No Income
3013 IF trc_BonProYtd <> 0 THEN
3014 hr_utility.set_location('py_za_tx_01032005.NorCalc',20);
3015 -- Annualise Bonus Provision
3016 trc_BonProErn := py_za_tx_utl_01032005.Annualise
3017 ( p_YtdInc => trc_BonProYtd
3018 , p_PtdInc => trc_BonProPtd
3019 ) + trc_TrvAllErn;
3020 -- Taxable Bonus Provision Income
3021 trc_TxbBonProInc := trc_BonProErn - trc_PerTotAbm;
3022 -- Threshold Check
3023 IF trc_TxbBonProInc >= trc_Threshold THEN
3024 hr_utility.set_location('py_za_tx_01032005.NorCalc',21);
3025 -- Tax Liability
3026 trc_TotLibBP := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbBonProInc);
3027 trc_LibFyBP := trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA);
3028 trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
3029 -- DeAnnualise
3030 trc_LibFpBP := py_za_tx_utl_01032005.DeAnnualise
3031 ( trc_LibFyBP
3032 , bal_TX_ON_BP_YTD
3033 , bal_TX_ON_BP_PTD
3034 );
3035 ELSE
3036 hr_utility.set_location('py_za_tx_01032005.NorCalc',22);
3037 -- Set Cascade Figures and Refund
3038 trc_TotLibBP := trc_TotLibTA;
3039 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
3040 trc_LibFpBPOvr := TRUE;
3041 END IF;
3042 ELSE
3043 hr_utility.set_location('py_za_tx_01032005.NorCalc',23);
3044 -- Set Cascade Figures and Refund
3045 trc_BonProErn := trc_TrvAllErn;
3046 trc_TxbBonProInc := trc_TxbTrvInc;
3047 trc_TotLibBP := trc_TotLibTA;
3048 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
3049 trc_LibFpBPOvr := TRUE;
3050 END IF;
3051
3052 -- Annual Bonus
3053 --
3054 -- Ytd Annual Bonus
3055 trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
3056 -- Skip the calculation if there is No Income
3057 IF trc_AnnBonYtd <> 0 THEN
3058 hr_utility.set_location('py_za_tx_01032005.NorCalc',24);
3059 -- Annual Bonus Earnings
3060 trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
3061 -- Taxable Annual Bonus Income
3062 trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
3063 -- Threshold Check
3064 IF trc_TxbAnnBonInc >= trc_Threshold THEN
3065 hr_utility.set_location('py_za_tx_01032005.NorCalc',25);
3066 -- Tax Liability
3067 trc_TotLibAB := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbAnnBonInc);
3068 trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
3069 trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
3070 -- Check Bonus Provision
3071 IF trc_BonProYtd <> 0 THEN
3072 hr_utility.set_location('py_za_tx_01032005.NorCalc',26);
3073 -- Check Bonus Provision Frequency
3074 IF dbi_BP_TX_RCV = 'A' THEN
3075 hr_utility.set_location('py_za_tx_01032005.NorCalc',27);
3076 trc_LibFpAB := 0;
3077 ELSE
3078 hr_utility.set_location('py_za_tx_01032005.NorCalc',28);
3079 trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD
3080 + trc_LibFpBP
3081 + bal_TX_ON_AB_YTD);
3082 END IF;
3083 ELSE
3084 hr_utility.set_location('py_za_tx_01032005.NorCalc',29);
3085 trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
3086 END IF;
3087 ELSE
3088 hr_utility.set_location('py_za_tx_01032005.NorCalc',30);
3089 -- Set Cascade Figures and Refund
3090 trc_TotLibAB := trc_TotLibTA;
3091 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
3092 trc_LibFpABOvr := TRUE;
3093 END IF;
3094 ELSE
3095 hr_utility.set_location('py_za_tx_01032005.NorCalc',31);
3096 -- Set Cascade Figures and Refund
3097 trc_AnnBonErn := trc_BonProErn;
3098 trc_TxbAnnBonInc := trc_TxbBonProInc;
3099 trc_TotLibAB := trc_TotLibBP;
3100 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
3101 trc_LibFpABOvr := TRUE;
3102 END IF;
3103
3104 -- Annual Payments
3105 --
3106 -- Ytd Annual Payments
3107 trc_AnnPymYtd := bal_TOT_TXB_AP_YTD ;
3108 -- Skip the calculation if there is No Income
3109 IF trc_AnnPymYtd <> 0 THEN
3110 hr_utility.set_location('py_za_tx_01032005.NorCalc',32);
3111 -- Annual Payments Earnings
3112 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
3113 -- Taxable Annual Payments Income
3114 trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
3115 -- Threshold Check
3116 IF trc_TxbAnnPymInc >= trc_Threshold THEN
3117 hr_utility.set_location('py_za_tx_01032005.NorCalc',33);
3118 -- Tax Liability
3119 trc_TotLibAP := py_za_tx_utl_01032005.TaxLiability(p_Amt => trc_TxbAnnPymInc);
3120 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
3121 trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
3122 hr_utility.set_location('py_za_tx_01032005.NorCalc',34);
3123 trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
3124 ELSE
3125 hr_utility.set_location('py_za_tx_01032005.NorCalc',35);
3126 -- Set Cascade Figures and Refund
3127 trc_TotLibAP := trc_TotLibAB;
3128 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
3129 trc_LibFpAPOvr := TRUE;
3130 END IF;
3131 ELSE
3132 hr_utility.set_location('py_za_tx_01032005.NorCalc',36);
3133 -- Set Cascade Figures and Refund
3134 trc_AnnPymErn := trc_AnnBonErn;
3135 trc_TxbAnnPymInc := trc_TxbAnnBonInc;
3136 trc_TotLibAP := trc_TotLibAB;
3137 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
3138 trc_LibFpAPOvr := TRUE;
3139 END IF;
3140
3141 -- Public Office Allowance
3142 --
3143 -- Ytd Public Office Allowance
3144 trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
3145 -- Skip the calculation if there is No Income
3146 IF trc_PblOffYtd <> 0 THEN
3147 hr_utility.set_location('py_za_tx_01032005.NorCalc',37);
3148 -- Ptd Public Office Allowance
3149 trc_PblOffPtd := bal_TOT_TXB_PO_PTD;
3150 -- Annualise Public Office Allowance
3151 trc_PblOffErn := py_za_tx_utl_01032005.Annualise
3152 ( p_YtdInc => trc_PblOffYtd
3153 , p_PtdInc => trc_PblOffPtd
3154 );
3155 -- Tax Liability
3156 trc_LibFyPO := trc_PblOffErn * glb_ZA_PBL_TX_RTE / 100;
3157 trc_LibFpPO := py_za_tx_utl_01032005.DeAnnualise
3158 ( trc_LibFyPO
3159 , bal_TX_ON_PO_YTD
3160 , bal_TX_ON_PO_PTD
3161 );
3162 ELSE
3163 hr_utility.set_location('py_za_tx_01032005.NorCalc',38);
3164 -- Set Cascade Figures and Refund
3165 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
3166 trc_LibFpPOOvr := TRUE;
3167 END IF;
3168
3169 -- Net Pay Validation
3170 --
3171 py_za_tx_utl_01032005.ValidateTaxOns;
3172
3173 hr_utility.set_location('py_za_tx_01032005.NorCalc',39);
3174
3175 -- Deemed Remuneration
3176 WrtHrTrc('trc_TxbDmdRmn: '||to_char(trc_TxbDmdRmn));
3177 WrtHrTrc('trc_TotLibDR: '||to_char(trc_TotLibDR ));
3178 WrtHrTrc('trc_LibFyDR: '||to_char(trc_LibFyDR ));
3179 WrtHrTrc('trc_LibFpDR: '||to_char(trc_LibFpDR ));
3180 -- Base Income
3181 WrtHrTrc('trc_BseErn: '||to_char(trc_BseErn ));
3182 WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
3183 WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
3184 -- Normal Income
3185 WrtHrTrc('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
3186 WrtHrTrc('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
3187 WrtHrTrc('trc_NorErn: '||to_char(trc_NorErn ));
3188 WrtHrTrc('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
3189 WrtHrTrc('trc_TotLibNI: '||to_char(trc_TotLibNI ));
3190 WrtHrTrc('trc_LibFyNI: '||to_char(trc_LibFyNI ));
3191 WrtHrTrc('trc_LibFpNI: '||to_char(trc_LibFpNI ));
3192 -- Fringe Benefits
3193 WrtHrTrc('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
3194 WrtHrTrc('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
3195 WrtHrTrc('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
3196 WrtHrTrc('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
3197 WrtHrTrc('trc_TotLibFB: '||to_char(trc_TotLibFB ));
3198 WrtHrTrc('trc_LibFyFB: '||to_char(trc_LibFyFB ));
3199 WrtHrTrc('trc_LibFpFB: '||to_char(trc_LibFpFB ));
3200 -- Travel Allowance
3201 WrtHrTrc('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
3202 WrtHrTrc('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
3203 WrtHrTrc('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
3204 WrtHrTrc('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
3205 WrtHrTrc('trc_TotLibTA: '||to_char(trc_TotLibTA ));
3206 WrtHrTrc('trc_LibFyTA: '||to_char(trc_LibFyTA ));
3207 WrtHrTrc('trc_LibFpTA: '||to_char(trc_LibFpTA ));
3208 -- Bonus Provision
3209 WrtHrTrc('trc_BonProYtd: '||to_char(trc_BonProYtd));
3210 WrtHrTrc('trc_BonProPtd: '||to_char(trc_BonProPtd));
3211 WrtHrTrc('trc_BonProErn: '||to_char(trc_BonProErn));
3212 WrtHrTrc('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
3213 WrtHrTrc('trc_TotLibBP: '||to_char(trc_TotLibBP ));
3214 WrtHrTrc('trc_LibFyBP: '||to_char(trc_LibFyBP ));
3215 WrtHrTrc('trc_LibFpBP: '||to_char(trc_LibFpBP ));
3216 -- Annual Bonus
3217 WrtHrTrc('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
3218 WrtHrTrc('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
3219 WrtHrTrc('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
3220 WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
3221 WrtHrTrc('trc_TotLibAB: '||to_char(trc_TotLibAB ));
3222 WrtHrTrc('trc_LibFyAB: '||to_char(trc_LibFyAB ));
3223 WrtHrTrc('trc_LibFpAB: '||to_char(trc_LibFpAB ));
3224 -- Annual Payments
3225 WrtHrTrc('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
3226 WrtHrTrc('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
3227 WrtHrTrc('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
3228 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
3229 WrtHrTrc('trc_TotLibAP: '||to_char(trc_TotLibAP ));
3230 WrtHrTrc('trc_LibFyAP: '||to_char(trc_LibFyAP ));
3231 WrtHrTrc('trc_LibFpAP: '||to_char(trc_LibFpAP ));
3232 -- Pubilc Office Allowance
3233 WrtHrTrc('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
3234 WrtHrTrc('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
3235 WrtHrTrc('trc_PblOffErn: '||to_char(trc_PblOffErn));
3236 WrtHrTrc('trc_LibFyPO: '||to_char(trc_LibFyPO ));
3237 WrtHrTrc('trc_LibFpPO: '||to_char(trc_LibFpPO ));
3238
3239 EXCEPTION
3240 WHEN OTHERS THEN
3241 IF xpt_Msg = 'No Error' THEN
3242 xpt_Msg := 'NorCalc: '||TO_CHAR(SQLCODE);
3243 END IF;
3244 RAISE xpt_E;
3245 END NorCalc;
3246 -------------------------------------------------------------------------------
3247 -- ZaTxGlb_01032005 --
3248 -- Tax module supporting function --
3249 -------------------------------------------------------------------------------
3250 FUNCTION ZaTxGlb_01032005(
3251 -- Global Values
3252 p_ZA_ADL_TX_RBT IN NUMBER
3253 ,p_ZA_ARR_PF_AN_MX_ABT IN NUMBER
3254 ,p_ZA_ARR_RA_AN_MX_ABT IN NUMBER
3255 ,p_ZA_TRV_ALL_TX_PRC IN NUMBER
3256 ,p_ZA_CC_TX_PRC IN NUMBER
3257 ,p_ZA_PF_AN_MX_ABT IN NUMBER
3258 ,p_ZA_PF_MX_PRC IN NUMBER
3259 ,p_ZA_PER_SERV_COMP_PERC IN NUMBER
3260 ,p_ZA_PER_SERV_TRST_PERC IN NUMBER
3261 ,p_ZA_PRI_TX_RBT IN NUMBER
3262 ,p_ZA_PRI_TX_THRSHLD IN NUMBER
3263 ,p_ZA_PBL_TX_PRC IN NUMBER
3264 ,p_ZA_PBL_TX_RTE IN NUMBER
3265 ,p_ZA_RA_AN_MX_ABT IN NUMBER
3266 ,p_ZA_RA_MX_PRC IN NUMBER
3267 ,p_ZA_SC_TX_THRSHLD IN NUMBER
3268 ,p_ZA_SIT_LIM IN NUMBER
3269 ,p_ZA_TMP_TX_RTE IN NUMBER
3270 ,p_ZA_WRK_DYS_PR_YR IN NUMBER
3271 ) RETURN NUMBER
3272 AS
3273 l_Dum NUMBER := 1;
3274 --id VARCHAR2(30);
3275
3276 BEGIN
3277
3278 --id := dbms_debug.initialize('JLTX');
3279 --dbms_debug.debug_on;
3280
3281 -- Initialise Package Globals
3282 -- Global Values
3283 glb_ZA_ADL_TX_RBT := p_ZA_ADL_TX_RBT;
3284 glb_ZA_ARR_PF_AN_MX_ABT := p_ZA_ARR_PF_AN_MX_ABT;
3285 glb_ZA_ARR_RA_AN_MX_ABT := p_ZA_ARR_RA_AN_MX_ABT;
3286 glb_ZA_TRV_ALL_TX_PRC := p_ZA_TRV_ALL_TX_PRC;
3287 glb_ZA_CC_TX_PRC := p_ZA_CC_TX_PRC;
3288 glb_ZA_PF_AN_MX_ABT := p_ZA_PF_AN_MX_ABT;
3289 glb_ZA_PF_MX_PRC := p_ZA_PF_MX_PRC;
3290 glb_ZA_PER_SERV_COMP_PERC := p_ZA_PER_SERV_COMP_PERC;
3291 glb_ZA_PER_SERV_TRST_PERC := p_ZA_PER_SERV_TRST_PERC;
3292 glb_ZA_PRI_TX_RBT := p_ZA_PRI_TX_RBT;
3293 glb_ZA_PRI_TX_THRSHLD := p_ZA_PRI_TX_THRSHLD;
3294 glb_ZA_PBL_TX_PRC := p_ZA_PBL_TX_PRC;
3295 glb_ZA_PBL_TX_RTE := p_ZA_PBL_TX_RTE;
3296 glb_ZA_RA_AN_MX_ABT := p_ZA_RA_AN_MX_ABT;
3297 glb_ZA_RA_MX_PRC := p_ZA_RA_MX_PRC;
3298 glb_ZA_SC_TX_THRSHLD := p_ZA_SC_TX_THRSHLD;
3299 glb_ZA_SIT_LIM := p_ZA_SIT_LIM;
3300 glb_ZA_TMP_TX_RTE := p_ZA_TMP_TX_RTE;
3301 glb_ZA_WRK_DYS_PR_YR := p_ZA_WRK_DYS_PR_YR;
3302
3303 RETURN l_Dum;
3304 EXCEPTION
3305 WHEN OTHERS THEN
3306 hr_utility.set_message(801, 'ZaTxGlb_01032005: '||TO_CHAR(SQLCODE));
3307 hr_utility.raise_error;
3308 END ZaTxGlb_01032005;
3309 -------------------------------------------------------------------------------
3310 -- ZaTxDbi_01032005 --
3311 -- Tax module supporting function --
3312 -------------------------------------------------------------------------------
3313 FUNCTION ZaTxDbi_01032005(
3314 -- Database Items
3315 p_PAY_PROC_PRD_DTE_PD IN DATE
3316 ,p_PER_AGE IN NUMBER
3317 ,p_PER_DTE_OF_BRTH IN DATE
3318 ,p_SES_DTE IN DATE
3319 ,p_ZA_ACT_END_DTE IN DATE
3320 ,p_ZA_ACT_STRT_DTE IN DATE
3321 ,p_ZA_ASG_TX_RTR_PRD IN VARCHAR2
3322 ,p_ZA_ASG_TAX_RTR_RSLTS IN VARCHAR2
3323 ,p_ZA_ASG_TX_YR IN NUMBER
3324 ,p_ZA_ASG_TX_YR_END IN DATE
3325 ,p_ZA_ASG_TX_YR_STRT IN DATE
3326 ,p_ZA_CUR_PRD_END_DTE IN DATE
3327 ,p_ZA_CUR_PRD_STRT_DTE IN DATE
3328 ,p_ZA_DYS_IN_YR IN NUMBER
3329 ,p_ZA_PAY_PRDS_LFT IN NUMBER
3330 ,p_ZA_PAY_PRDS_PER_YR IN NUMBER
3331 ,p_ZA_TX_YR_END IN DATE
3332 ,p_ZA_TX_YR_STRT IN DATE
3333 ,p_BP_TX_RCV IN VARCHAR2
3334 ,p_SEA_WRK_DYS_WRK IN NUMBER
3335 ,p_TX_DIR_NUM IN VARCHAR2
3336 ,p_TX_DIR_VAL IN NUMBER
3337 ,p_TX_STA IN VARCHAR2
3338 ,p_ZA_LS_DIR_NUM IN VARCHAR2
3339 ,p_ZA_LS_DIR_VAL IN NUMBER
3340 ) RETURN NUMBER
3341 AS
3342 l_Dum NUMBER := 1;
3343
3344 BEGIN
3345
3346 -- Initialise Package Globals
3347 -- Database Items
3348 dbi_PAY_PROC_PRD_DTE_PD := p_PAY_PROC_PRD_DTE_PD;
3349 dbi_PER_AGE := p_PER_AGE;
3350 dbi_PER_DTE_OF_BRTH := p_PER_DTE_OF_BRTH;
3351 dbi_SES_DTE := p_SES_DTE;
3352 dbi_ZA_ACT_END_DTE := p_ZA_ACT_END_DTE;
3353 dbi_ZA_ACT_STRT_DTE := p_ZA_ACT_STRT_DTE;
3354 dbi_ZA_ASG_TX_RTR_PRD := p_ZA_ASG_TX_RTR_PRD;
3355 dbi_ZA_ASG_TAX_RTR_RSLTS := p_ZA_ASG_TAX_RTR_RSLTS;
3356 dbi_ZA_ASG_TX_YR := p_ZA_ASG_TX_YR;
3357 dbi_ZA_ASG_TX_YR_END := p_ZA_ASG_TX_YR_END;
3358 dbi_ZA_ASG_TX_YR_STRT := p_ZA_ASG_TX_YR_STRT;
3359 dbi_ZA_CUR_PRD_END_DTE := p_ZA_CUR_PRD_END_DTE;
3360 dbi_ZA_CUR_PRD_STRT_DTE := p_ZA_CUR_PRD_STRT_DTE;
3361 dbi_ZA_DYS_IN_YR := p_ZA_DYS_IN_YR;
3362 dbi_ZA_PAY_PRDS_LFT := p_ZA_PAY_PRDS_LFT;
3363 dbi_ZA_PAY_PRDS_PER_YR := p_ZA_PAY_PRDS_PER_YR;
3364 dbi_ZA_TX_YR_END := p_ZA_TX_YR_END;
3365 dbi_ZA_TX_YR_STRT := p_ZA_TX_YR_STRT;
3366 dbi_BP_TX_RCV := p_BP_TX_RCV;
3367 dbi_SEA_WRK_DYS_WRK := p_SEA_WRK_DYS_WRK;
3368 dbi_TX_DIR_NUM := p_TX_DIR_NUM;
3369 dbi_TX_DIR_VAL := p_TX_DIR_VAL;
3370 dbi_TX_STA := p_TX_STA;
3371 dbi_ZA_LS_DIR_NUM := p_ZA_LS_DIR_NUM;
3372 dbi_ZA_LS_DIR_VAL := p_ZA_LS_DIR_VAL;
3373
3374 RETURN l_Dum;
3375 EXCEPTION
3376 WHEN OTHERS THEN
3377 hr_utility.set_message(801, 'ZaTxDbi_01032005: '||TO_CHAR(SQLCODE));
3378 hr_utility.raise_error;
3379 END ZaTxDbi_01032005;
3380 -------------------------------------------------------------------------------
3381 -- ZaTxBal1_01032005 --
3382 -- Tax module supporting function --
3383 -------------------------------------------------------------------------------
3384 FUNCTION ZaTxBal1_01032005(
3385 -- Balances
3386 p_ANN_ARR_PF_CMTD IN NUMBER
3387 ,p_ANN_ARR_PF_CYTD IN NUMBER
3388 ,p_ANN_ARR_PF_RUN IN NUMBER
3389 ,p_ANN_ARR_PF_PTD IN NUMBER
3390 ,p_ANN_ARR_PF_YTD IN NUMBER
3391 ,p_ANN_ARR_RA_CMTD IN NUMBER
3392 ,p_ANN_ARR_RA_CYTD IN NUMBER
3393 ,p_ANN_ARR_RA_RUN IN NUMBER
3394 ,p_ANN_ARR_RA_PTD IN NUMBER
3395 ,p_ANN_ARR_RA_YTD IN NUMBER
3396 ,p_ANN_EE_INC_PRO_POL_CMTD IN NUMBER
3397 ,p_ANN_EE_INC_PRO_POL_CYTD IN NUMBER
3398 ,p_ANN_EE_INC_PRO_POL_RUN IN NUMBER
3399 ,p_ANN_EE_INC_PRO_POL_PTD IN NUMBER
3400 ,p_ANN_EE_INC_PRO_POL_YTD IN NUMBER
3401 ,p_ANN_PF_CMTD IN NUMBER
3402 ,p_ANN_PF_CYTD IN NUMBER
3403 ,p_ANN_PF_RUN IN NUMBER
3404 ,p_ANN_PF_PTD IN NUMBER
3405 ,p_ANN_PF_YTD IN NUMBER
3406 ,p_ANN_RA_CMTD IN NUMBER
3407 ,p_ANN_RA_CYTD IN NUMBER
3408 ,p_ANN_RA_RUN IN NUMBER
3409 ,p_ANN_RA_PTD IN NUMBER
3410 ,p_ANN_RA_YTD IN NUMBER
3411 ) RETURN NUMBER
3412 AS
3413 l_Dum NUMBER := 1;
3414
3415 BEGIN
3416 -- Balances
3417 bal_ANN_ARR_PF_CMTD := p_ANN_ARR_PF_CMTD;
3418 bal_ANN_ARR_PF_CYTD := p_ANN_ARR_PF_CYTD;
3419 bal_ANN_ARR_PF_RUN := p_ANN_ARR_PF_RUN;
3420 bal_ANN_ARR_PF_PTD := p_ANN_ARR_PF_PTD;
3421 bal_ANN_ARR_PF_YTD := p_ANN_ARR_PF_YTD;
3422 bal_ANN_ARR_RA_CMTD := p_ANN_ARR_RA_CMTD;
3423 bal_ANN_ARR_RA_CYTD := p_ANN_ARR_RA_CYTD;
3424 bal_ANN_ARR_RA_RUN := p_ANN_ARR_RA_RUN;
3425 bal_ANN_ARR_RA_PTD := p_ANN_ARR_RA_PTD;
3426 bal_ANN_ARR_RA_YTD := p_ANN_ARR_RA_YTD;
3427 bal_ANN_EE_INC_PRO_POL_CMTD := p_ANN_EE_INC_PRO_POL_CMTD;
3428 bal_ANN_EE_INC_PRO_POL_CYTD := p_ANN_EE_INC_PRO_POL_CYTD;
3429 bal_ANN_EE_INC_PRO_POL_RUN := p_ANN_EE_INC_PRO_POL_RUN;
3430 bal_ANN_EE_INC_PRO_POL_PTD := p_ANN_EE_INC_PRO_POL_PTD;
3431 bal_ANN_EE_INC_PRO_POL_YTD := p_ANN_EE_INC_PRO_POL_YTD;
3432 bal_ANN_PF_CMTD := p_ANN_PF_CMTD;
3433 bal_ANN_PF_CYTD := p_ANN_PF_CYTD;
3434 bal_ANN_PF_RUN := p_ANN_PF_RUN;
3435 bal_ANN_PF_PTD := p_ANN_PF_PTD;
3436 bal_ANN_PF_YTD := p_ANN_PF_YTD;
3437 bal_ANN_RA_CMTD := p_ANN_RA_CMTD;
3438 bal_ANN_RA_CYTD := p_ANN_RA_CYTD;
3439 bal_ANN_RA_RUN := p_ANN_RA_RUN;
3440 bal_ANN_RA_PTD := p_ANN_RA_PTD;
3441 bal_ANN_RA_YTD := p_ANN_RA_YTD;
3442
3443 RETURN l_Dum;
3444 EXCEPTION
3445 WHEN OTHERS THEN
3446 hr_utility.set_message(801, 'ZaTxBal1_01032005: '||TO_CHAR(SQLCODE));
3447 hr_utility.raise_error;
3448 END ZaTxBal1_01032005;
3449 -------------------------------------------------------------------------------
3450 -- ZaTxBal2_01032005 --
3451 -- Tax module supporting function --
3452 -------------------------------------------------------------------------------
3453 FUNCTION ZaTxBal2_01032005(
3454 -- Balances
3455 p_ARR_PF_CMTD IN NUMBER
3456 ,p_ARR_PF_CYTD IN NUMBER
3457 ,p_ARR_PF_PTD IN NUMBER
3458 ,p_ARR_PF_YTD IN NUMBER
3459 ,p_ARR_RA_CMTD IN NUMBER
3460 ,p_ARR_RA_CYTD IN NUMBER
3461 ,p_ARR_RA_PTD IN NUMBER
3462 ,p_ARR_RA_YTD IN NUMBER
3463 ,p_BP_CMTD IN NUMBER
3464 ,p_BP_PTD IN NUMBER
3465 ,p_BP_YTD IN NUMBER
3466 ,p_CUR_PF_CMTD IN NUMBER
3467 ,p_CUR_PF_CYTD IN NUMBER
3468 ,p_CUR_PF_RUN IN NUMBER
3469 ,p_CUR_PF_PTD IN NUMBER
3470 ,p_CUR_PF_YTD IN NUMBER
3471 ,p_CUR_RA_CMTD IN NUMBER
3472 ,p_CUR_RA_CYTD IN NUMBER
3473 ,p_CUR_RA_RUN IN NUMBER
3474 ,p_CUR_RA_PTD IN NUMBER
3475 ,p_CUR_RA_YTD IN NUMBER
3476 ,p_DIR_DMD_RMN_ITD IN NUMBER
3477 ) RETURN NUMBER
3478 AS
3479 l_Dum NUMBER := 1;
3480
3481 BEGIN
3482 -- Balances
3483 bal_ARR_PF_CMTD := p_ARR_PF_CMTD;
3484 bal_ARR_PF_CYTD := p_ARR_PF_CYTD;
3485 bal_ARR_PF_PTD := p_ARR_PF_PTD;
3486 bal_ARR_PF_YTD := p_ARR_PF_YTD;
3487 bal_ARR_RA_CMTD := p_ARR_RA_CMTD;
3488 bal_ARR_RA_CYTD := p_ARR_RA_CYTD;
3489 bal_ARR_RA_PTD := p_ARR_RA_PTD;
3490 bal_ARR_RA_YTD := p_ARR_RA_YTD;
3491 bal_BP_CMTD := p_BP_CMTD;
3492 bal_BP_PTD := p_BP_PTD;
3493 bal_BP_YTD := p_BP_YTD;
3494 bal_CUR_PF_CMTD := p_CUR_PF_CMTD;
3495 bal_CUR_PF_CYTD := p_CUR_PF_CYTD;
3496 bal_CUR_PF_RUN := p_CUR_PF_RUN;
3497 bal_CUR_PF_PTD := p_CUR_PF_PTD;
3498 bal_CUR_PF_YTD := p_CUR_PF_YTD;
3499 bal_CUR_RA_CMTD := p_CUR_RA_CMTD;
3500 bal_CUR_RA_CYTD := p_CUR_RA_CYTD;
3501 bal_CUR_RA_RUN := p_CUR_RA_RUN;
3502 bal_CUR_RA_PTD := p_CUR_RA_PTD;
3503 bal_CUR_RA_YTD := p_CUR_RA_YTD;
3504 bal_DIR_DMD_RMN_ITD := p_DIR_DMD_RMN_ITD;
3505
3506 RETURN l_Dum;
3507 EXCEPTION
3508 WHEN OTHERS THEN
3509 hr_utility.set_message(801, 'ZaTxBal2_01032005: '||TO_CHAR(SQLCODE));
3510 hr_utility.raise_error;
3511 END ZaTxBal2_01032005;
3512 -------------------------------------------------------------------------------
3513 -- ZaTxBal3_01032005 --
3514 -- Tax module supporting function --
3515 -------------------------------------------------------------------------------
3516 FUNCTION ZaTxBal3_01032005(
3517 -- Balances
3518 p_EE_INC_PRO_POL_CMTD IN NUMBER
3519 ,p_EE_INC_PRO_POL_CYTD IN NUMBER
3520 ,p_EE_INC_PRO_POL_RUN IN NUMBER
3521 ,p_EE_INC_PRO_POL_PTD IN NUMBER
3522 ,p_EE_INC_PRO_POL_YTD IN NUMBER
3523 ,p_EXC_ARR_PEN_ITD IN NUMBER
3524 ,p_EXC_ARR_PEN_PTD IN NUMBER
3525 ,p_EXC_ARR_PEN_YTD IN NUMBER
3526 ,p_EXC_ARR_RA_ITD IN NUMBER
3527 ,p_EXC_ARR_RA_PTD IN NUMBER
3528 ,p_EXC_ARR_RA_YTD IN NUMBER
3529 ,p_MED_CONTR_CMTD IN NUMBER
3530 ,p_MED_CONTR_CYTD IN NUMBER
3531 ,p_MED_CONTR_RUN IN NUMBER
3532 ,p_MED_CONTR_PTD IN NUMBER
3533 ,p_MED_CONTR_YTD IN NUMBER
3534 ,p_NET_PAY_RUN IN NUMBER
3535 ,p_NET_TXB_INC_CMTD IN NUMBER
3536 ) RETURN NUMBER
3537 AS
3538 l_Dum NUMBER := 1;
3539
3540 BEGIN
3541 -- Balances
3542 bal_EE_INC_PRO_POL_CMTD := p_EE_INC_PRO_POL_CMTD;
3543 bal_EE_INC_PRO_POL_CYTD := p_EE_INC_PRO_POL_CYTD;
3544 bal_EE_INC_PRO_POL_RUN := p_EE_INC_PRO_POL_RUN;
3545 bal_EE_INC_PRO_POL_PTD := p_EE_INC_PRO_POL_PTD;
3546 bal_EE_INC_PRO_POL_YTD := p_EE_INC_PRO_POL_YTD;
3547 bal_EXC_ARR_PEN_ITD := p_EXC_ARR_PEN_ITD;
3548 bal_EXC_ARR_PEN_PTD := p_EXC_ARR_PEN_PTD;
3549 bal_EXC_ARR_PEN_YTD := p_EXC_ARR_PEN_YTD;
3550 bal_EXC_ARR_RA_ITD := p_EXC_ARR_RA_ITD;
3551 bal_EXC_ARR_RA_PTD := p_EXC_ARR_RA_PTD;
3552 bal_EXC_ARR_RA_YTD := p_EXC_ARR_RA_YTD;
3553 bal_MED_CONTR_CMTD := p_MED_CONTR_CMTD;
3554 bal_MED_CONTR_CYTD := p_MED_CONTR_CYTD;
3555 bal_MED_CONTR_RUN := p_MED_CONTR_RUN;
3556 bal_MED_CONTR_PTD := p_MED_CONTR_PTD;
3557 bal_MED_CONTR_YTD := p_MED_CONTR_YTD;
3558 bal_NET_PAY_RUN := p_NET_PAY_RUN;
3559 bal_NET_TXB_INC_CMTD := p_NET_TXB_INC_CMTD;
3560
3561 RETURN l_Dum;
3562 EXCEPTION
3563 WHEN OTHERS THEN
3564 hr_utility.set_message(801, 'ZaTxBal3_01032005: '||TO_CHAR(SQLCODE));
3565 hr_utility.raise_error;
3566 END ZaTxBal3_01032005;
3567 -------------------------------------------------------------------------------
3568 -- ZaTxBal4_01032005 --
3569 -- Tax module supporting function --
3570 -------------------------------------------------------------------------------
3571 FUNCTION ZaTxBal4_01032005(
3572 -- Balances
3573 p_PAYE_YTD IN NUMBER
3574 ,p_SITE_YTD IN NUMBER
3575 ,p_TAX_YTD IN NUMBER
3576 ,p_TX_ON_AB_PTD IN NUMBER
3577 ,p_TX_ON_AB_YTD IN NUMBER
3578 ,p_TX_ON_AP_PTD IN NUMBER
3579 ,p_TX_ON_AP_YTD IN NUMBER
3580 ,p_TX_ON_BP_PTD IN NUMBER
3581 ,p_TX_ON_BP_YTD IN NUMBER
3582 ,p_TX_ON_TA_PTD IN NUMBER
3583 ,p_TX_ON_TA_YTD IN NUMBER
3584 ,p_TX_ON_DR_PTD IN NUMBER
3585 ,p_TX_ON_DR_YTD IN NUMBER
3586 ,p_TX_ON_FB_PTD IN NUMBER
3587 ,p_TX_ON_FB_YTD IN NUMBER
3588 ,p_TX_ON_NI_PTD IN NUMBER
3589 ,p_TX_ON_NI_YTD IN NUMBER
3590 ,p_TX_ON_PO_PTD IN NUMBER
3591 ,p_TX_ON_PO_YTD IN NUMBER
3592 ) RETURN NUMBER
3593 AS
3594 l_Dum NUMBER := 1;
3595
3596 BEGIN
3597 -- Balances
3598 bal_PAYE_YTD := p_PAYE_YTD;
3599 bal_SITE_YTD := p_SITE_YTD;
3600 bal_TAX_YTD := p_TAX_YTD;
3601 bal_TX_ON_AB_PTD := p_TX_ON_AB_PTD;
3602 bal_TX_ON_AB_YTD := p_TX_ON_AB_YTD;
3603 bal_TX_ON_AP_PTD := p_TX_ON_AP_PTD;
3604 bal_TX_ON_AP_YTD := p_TX_ON_AP_YTD;
3605 bal_TX_ON_BP_PTD := p_TX_ON_BP_PTD;
3606 bal_TX_ON_BP_YTD := p_TX_ON_BP_YTD;
3607 bal_TX_ON_TA_PTD := p_TX_ON_TA_PTD;
3608 bal_TX_ON_TA_YTD := p_TX_ON_TA_YTD;
3609 bal_TX_ON_DR_PTD := p_TX_ON_DR_PTD;
3610 bal_TX_ON_DR_YTD := p_TX_ON_DR_YTD;
3611 bal_TX_ON_FB_PTD := p_TX_ON_FB_PTD;
3612 bal_TX_ON_FB_YTD := p_TX_ON_FB_YTD;
3613 bal_TX_ON_NI_PTD := p_TX_ON_NI_PTD;
3614 bal_TX_ON_NI_YTD := p_TX_ON_NI_YTD;
3615 bal_TX_ON_PO_PTD := p_TX_ON_PO_PTD;
3616 bal_TX_ON_PO_YTD := p_TX_ON_PO_YTD;
3617
3618 RETURN l_Dum;
3619 EXCEPTION
3620 WHEN OTHERS THEN
3621 hr_utility.set_message(801, 'ZaTxBal4_01032005: '||TO_CHAR(SQLCODE));
3622 hr_utility.raise_error;
3623 END ZaTxBal4_01032005;
3624 -------------------------------------------------------------------------------
3625 -- ZaTxBal5_01032005 --
3626 -- Tax module supporting function --
3627 -------------------------------------------------------------------------------
3628 FUNCTION ZaTxBal5_01032005(
3629 -- Balances
3630 p_TOT_INC_PTD IN NUMBER
3631 ,p_TOT_INC_YTD IN NUMBER
3632 ,p_TOT_NRFI_AN_INC_CMTD IN NUMBER
3633 ,p_TOT_NRFI_AN_INC_CYTD IN NUMBER
3634 ,p_TOT_NRFI_AN_INC_RUN IN NUMBER
3635 ,p_TOT_NRFI_AN_INC_PTD IN NUMBER
3636 ,p_TOT_NRFI_AN_INC_YTD IN NUMBER
3637 ,p_TOT_NRFI_INC_CMTD IN NUMBER
3638 ,p_TOT_NRFI_INC_CYTD IN NUMBER
3639 ,p_TOT_NRFI_INC_RUN IN NUMBER
3640 ,p_TOT_NRFI_INC_PTD IN NUMBER
3641 ,p_TOT_NRFI_INC_YTD IN NUMBER
3642 ,p_TOT_RFI_AN_INC_CMTD IN NUMBER
3643 ,p_TOT_RFI_AN_INC_CYTD IN NUMBER
3644 ,p_TOT_RFI_AN_INC_RUN IN NUMBER
3645 ,p_TOT_RFI_AN_INC_PTD IN NUMBER
3646 ,p_TOT_RFI_AN_INC_YTD IN NUMBER
3647 ,p_TOT_RFI_INC_CMTD IN NUMBER
3648 ,p_TOT_RFI_INC_CYTD IN NUMBER
3649 ,p_TOT_RFI_INC_RUN IN NUMBER
3650 ,p_TOT_RFI_INC_PTD IN NUMBER
3651 ,p_TOT_RFI_INC_YTD IN NUMBER
3652 ,p_TOT_SEA_WRK_DYS_WRK_YTD IN NUMBER
3653 ,p_TOT_SKL_ANN_INC_CMTD IN NUMBER
3654 ,p_TOT_SKL_INC_CMTD IN NUMBER
3655 ,p_TOT_TXB_INC_ITD IN NUMBER
3656 ) RETURN NUMBER
3657 AS
3658 l_Dum NUMBER := 1;
3659
3660 BEGIN
3661 -- Balances
3662 bal_TOT_INC_PTD := p_TOT_INC_PTD;
3663 bal_TOT_INC_YTD := p_TOT_INC_YTD;
3664 bal_TOT_NRFI_AN_INC_CMTD := p_TOT_NRFI_AN_INC_CMTD;
3665 bal_TOT_NRFI_AN_INC_CYTD := p_TOT_NRFI_AN_INC_CYTD;
3666 bal_TOT_NRFI_AN_INC_RUN := p_TOT_NRFI_AN_INC_RUN;
3667 bal_TOT_NRFI_AN_INC_PTD := p_TOT_NRFI_AN_INC_PTD;
3668 bal_TOT_NRFI_AN_INC_YTD := p_TOT_NRFI_AN_INC_YTD;
3669 bal_TOT_NRFI_INC_CMTD := p_TOT_NRFI_INC_CMTD;
3670 bal_TOT_NRFI_INC_CYTD := p_TOT_NRFI_INC_CYTD;
3671 bal_TOT_NRFI_INC_RUN := p_TOT_NRFI_INC_RUN;
3672 bal_TOT_NRFI_INC_PTD := p_TOT_NRFI_INC_PTD;
3673 bal_TOT_NRFI_INC_YTD := p_TOT_NRFI_INC_YTD;
3674 bal_TOT_RFI_AN_INC_CMTD := p_TOT_RFI_AN_INC_CMTD;
3675 bal_TOT_RFI_AN_INC_CYTD := p_TOT_RFI_AN_INC_CYTD;
3676 bal_TOT_RFI_AN_INC_RUN := p_TOT_RFI_AN_INC_RUN;
3677 bal_TOT_RFI_AN_INC_PTD := p_TOT_RFI_AN_INC_PTD;
3678 bal_TOT_RFI_AN_INC_YTD := p_TOT_RFI_AN_INC_YTD;
3679 bal_TOT_RFI_INC_CMTD := p_TOT_RFI_INC_CMTD;
3680 bal_TOT_RFI_INC_CYTD := p_TOT_RFI_INC_CYTD;
3681 bal_TOT_RFI_INC_RUN := p_TOT_RFI_INC_RUN;
3682 bal_TOT_RFI_INC_PTD := p_TOT_RFI_INC_PTD;
3683 bal_TOT_RFI_INC_YTD := p_TOT_RFI_INC_YTD;
3684 bal_TOT_SEA_WRK_DYS_WRK_YTD := p_TOT_SEA_WRK_DYS_WRK_YTD;
3685 bal_TOT_SKL_ANN_INC_CMTD := p_TOT_SKL_ANN_INC_CMTD;
3686 bal_TOT_SKL_INC_CMTD := p_TOT_SKL_INC_CMTD;
3687 bal_TOT_TXB_INC_ITD := p_TOT_TXB_INC_ITD;
3688
3689 RETURN l_Dum;
3690 EXCEPTION
3691 WHEN OTHERS THEN
3692 hr_utility.set_message(801, 'ZaTxBal5_01032005: '||TO_CHAR(SQLCODE));
3693 hr_utility.raise_error;
3694 END ZaTxBal5_01032005;
3695
3696 -------------------------------------------------------------------------------
3697 -- ZaTxBal6_01032005 --
3698 -- Tax module supporting function --
3699 -------------------------------------------------------------------------------
3700 FUNCTION ZaTxBal6_01032005(
3701 -- Balances
3702 p_TOT_TXB_AB_CMTD IN NUMBER
3703 ,p_TOT_TXB_AB_RUN IN NUMBER
3704 ,p_TOT_TXB_AB_PTD IN NUMBER
3705 ,p_TOT_TXB_AB_YTD IN NUMBER
3706 ,p_TOT_TXB_AP_CMTD IN NUMBER
3707 ,p_TOT_TXB_AP_RUN IN NUMBER
3708 ,p_TOT_TXB_AP_PTD IN NUMBER
3709 ,p_TOT_TXB_AP_YTD IN NUMBER
3710 ,p_TOT_TXB_FB_CMTD IN NUMBER
3711 ,p_TOT_TXB_FB_CYTD IN NUMBER
3712 ,p_TOT_TXB_FB_RUN IN NUMBER
3713 ,p_TOT_TXB_FB_PTD IN NUMBER
3714 ,p_TOT_TXB_FB_YTD IN NUMBER
3715 ,p_TOT_TXB_NI_CMTD IN NUMBER
3716 ,p_TOT_TXB_NI_CYTD IN NUMBER
3717 ,p_TOT_TXB_NI_RUN IN NUMBER
3718 ,p_TOT_TXB_NI_PTD IN NUMBER
3719 ,p_TOT_TXB_NI_YTD IN NUMBER
3720 ,p_TOT_TXB_PO_CMTD IN NUMBER
3721 ,p_TOT_TXB_PO_PTD IN NUMBER
3722 ,p_TOT_TXB_PO_YTD IN NUMBER
3723 ,p_TOT_TXB_TA_CMTD IN NUMBER
3724 ,p_TOT_TXB_TA_CYTD IN NUMBER
3725 ,p_TOT_TXB_TA_PTD IN NUMBER
3726 ,p_TOT_TXB_TA_YTD IN NUMBER
3727 ) RETURN NUMBER
3728 AS
3729 l_Dum NUMBER := 1;
3730
3731 BEGIN
3732 -- Balances
3733 bal_TOT_TXB_AB_CMTD := p_TOT_TXB_AB_CMTD;
3734 bal_TOT_TXB_AB_RUN := p_TOT_TXB_AB_RUN;
3735 bal_TOT_TXB_AB_PTD := p_TOT_TXB_AB_PTD;
3736 bal_TOT_TXB_AB_YTD := p_TOT_TXB_AB_YTD;
3737 bal_TOT_TXB_AP_CMTD := p_TOT_TXB_AP_CMTD;
3738 bal_TOT_TXB_AP_RUN := p_TOT_TXB_AP_RUN;
3739 bal_TOT_TXB_AP_PTD := p_TOT_TXB_AP_PTD;
3740 bal_TOT_TXB_AP_YTD := p_TOT_TXB_AP_YTD;
3741 bal_TOT_TXB_FB_CMTD := p_TOT_TXB_FB_CMTD;
3742 bal_TOT_TXB_FB_CYTD := p_TOT_TXB_FB_CYTD;
3743 bal_TOT_TXB_FB_RUN := p_TOT_TXB_FB_RUN;
3744 bal_TOT_TXB_FB_PTD := p_TOT_TXB_FB_PTD;
3745 bal_TOT_TXB_FB_YTD := p_TOT_TXB_FB_YTD;
3746 bal_TOT_TXB_NI_CMTD := p_TOT_TXB_NI_CMTD;
3747 bal_TOT_TXB_NI_CYTD := p_TOT_TXB_NI_CYTD;
3748 bal_TOT_TXB_NI_RUN := p_TOT_TXB_NI_RUN;
3749 bal_TOT_TXB_NI_PTD := p_TOT_TXB_NI_PTD;
3750 bal_TOT_TXB_NI_YTD := p_TOT_TXB_NI_YTD;
3751 bal_TOT_TXB_PO_CMTD := p_TOT_TXB_PO_CMTD;
3752 bal_TOT_TXB_PO_PTD := p_TOT_TXB_PO_PTD;
3753 bal_TOT_TXB_PO_YTD := p_TOT_TXB_PO_YTD;
3754 bal_TOT_TXB_TA_CMTD := p_TOT_TXB_TA_CMTD;
3755 bal_TOT_TXB_TA_CYTD := p_TOT_TXB_TA_CYTD;
3756 bal_TOT_TXB_TA_PTD := p_TOT_TXB_TA_PTD;
3757 bal_TOT_TXB_TA_YTD := p_TOT_TXB_TA_YTD;
3758
3759 RETURN l_Dum;
3760 EXCEPTION
3761 WHEN OTHERS THEN
3762 hr_utility.set_message(801, 'ZaTxBal6_01032005: '||TO_CHAR(SQLCODE));
3763 hr_utility.raise_error;
3764 END ZaTxBal6_01032005;
3765
3766 -------------------------------------------------------------------------------
3767 -- ZaTx_01032005 --
3768 -- Main Tax module function --
3769 -------------------------------------------------------------------------------
3770 FUNCTION ZaTx_01032005(
3771 /* PARAMETERS */
3772 -- Contexts
3773 ASSIGNMENT_ACTION_ID IN NUMBER
3774 , ASSIGNMENT_ID IN NUMBER
3775 , PAYROLL_ACTION_ID IN NUMBER
3776 , PAYROLL_ID IN NUMBER
3777 -- Out Parameters
3778 , p_LibWrn OUT NOCOPY VARCHAR2
3779 , p_LibFpDR OUT NOCOPY NUMBER
3780 , p_LibFpNI OUT NOCOPY NUMBER
3781 , p_LibFpFB OUT NOCOPY NUMBER
3782 , p_LibFpTA OUT NOCOPY NUMBER
3783 , p_LibFpBP OUT NOCOPY NUMBER
3784 , p_LibFpAB OUT NOCOPY NUMBER
3785 , p_LibFpAP OUT NOCOPY NUMBER
3786 , p_LibFpPO OUT NOCOPY NUMBER
3787 , p_PayValSD OUT NOCOPY NUMBER
3788 , p_PayValEC OUT NOCOPY NUMBER
3789 , p_PayeVal OUT NOCOPY NUMBER
3790 , p_SiteVal OUT NOCOPY NUMBER
3791 , p_It3Ind OUT NOCOPY NUMBER
3792 , p_PfUpdFig OUT NOCOPY NUMBER
3793 , p_RaUpdFig OUT NOCOPY NUMBER
3794 , p_OUpdFig OUT NOCOPY NUMBER
3795 , p_NtiUpdFig OUT NOCOPY NUMBER
3796 , p_OvrWrn OUT NOCOPY VARCHAR2
3797 , p_LSDirNum OUT NOCOPY VARCHAR2
3798 , p_LSDirVal OUT NOCOPY NUMBER
3799 )RETURN NUMBER
3800 AS
3801 -- Variables
3802 --
3803 l_Dum NUMBER := 1;
3804
3805 xpt_FxdPrc EXCEPTION;
3806
3807 -------------------------------------------------------------------------------
3808 BEGIN-- MAIN --
3809 -------------------------------------------------------------------------------
3810 -- Set hr_utility globals if debugging
3811 --
3812 -- py_za_tx_utl_01032005.g_HrTraceEnabled := TRUE;
3813 -- py_za_tx_utl_01032005.g_HrTracePipeName := 'ZATAX';
3814
3815 -- Call hr_utility start procedure
3816 py_za_tx_utl_01032005.StartHrTrace;
3817
3818 -- Setup Trace Header Info
3819 WrtHrTrc(' ');
3820 WrtHrTrc(' ');
3821 WrtHrTrc(' ');
3822 WrtHrTrc('------------------------------------------------------------');
3823 WrtHrTrc('-- Start of Tax Trace File');
3824 WrtHrTrc('------------------------------------------------------------');
3825 WrtHrTrc(' ');
3826 WrtHrTrc(' Processing Assignment ID : '||to_char(ASSIGNMENT_ID ));
3827 WrtHrTrc(' Assignment Action ID : '||to_char(ASSIGNMENT_ACTION_ID));
3828 WrtHrTrc(' Payroll Action ID : '||to_char(PAYROLL_ACTION_ID ));
3829 WrtHrTrc(' Payroll ID : '||to_char(PAYROLL_ID ));
3830 WrtHrTrc(' ');
3831 WrtHrTrc('------------------------------------------------------------');
3832 WrtHrTrc(' ');
3833 WrtHrTrc('-------------------------------------------------------------------------------');
3834 WrtHrTrc('-- Application Global Values');
3835 WrtHrTrc('-------------------------------------------------------------------------------');
3836 WrtHrTrc(' glb_ZA_ADL_TX_RBT: '||to_char(glb_ZA_ADL_TX_RBT ));
3837 WrtHrTrc(' glb_ZA_ARR_PF_AN_MX_ABT: '||to_char(glb_ZA_ARR_PF_AN_MX_ABT ));
3838 WrtHrTrc(' glb_ZA_ARR_RA_AN_MX_ABT: '||to_char(glb_ZA_ARR_RA_AN_MX_ABT ));
3839 WrtHrTrc(' glb_ZA_TRV_ALL_TX_PRC: '||to_char(glb_ZA_TRV_ALL_TX_PRC ));
3840 WrtHrTrc(' glb_ZA_CC_TX_PRC: '||to_char(glb_ZA_CC_TX_PRC ));
3841 WrtHrTrc(' glb_ZA_PF_AN_MX_ABT: '||to_char(glb_ZA_PF_AN_MX_ABT ));
3842 WrtHrTrc(' glb_ZA_PF_MX_PRC: '||to_char(glb_ZA_PF_MX_PRC ));
3843 WrtHrTrc(' glb_ZA_PER_SERV_COMP_PERC: '||to_char(glb_ZA_PER_SERV_COMP_PERC));
3844 WrtHrTrc(' glb_ZA_PER_SERV_TRST_PERC: '||to_char(glb_ZA_PER_SERV_TRST_PERC));
3845 WrtHrTrc(' glb_ZA_PRI_TX_RBT: '||to_char(glb_ZA_PRI_TX_RBT ));
3846 WrtHrTrc(' glb_ZA_PRI_TX_THRSHLD: '||to_char(glb_ZA_PRI_TX_THRSHLD ));
3847 WrtHrTrc(' glb_ZA_PBL_TX_PRC: '||to_char(glb_ZA_PBL_TX_PRC ));
3848 WrtHrTrc(' glb_ZA_PBL_TX_RTE: '||to_char(glb_ZA_PBL_TX_RTE ));
3849 WrtHrTrc(' glb_ZA_RA_AN_MX_ABT: '||to_char(glb_ZA_RA_AN_MX_ABT ));
3850 WrtHrTrc(' glb_ZA_RA_MX_PRC: '||to_char(glb_ZA_RA_MX_PRC ));
3851 WrtHrTrc(' glb_ZA_SC_TX_THRSHLD: '||to_char(glb_ZA_SC_TX_THRSHLD ));
3852 WrtHrTrc(' glb_ZA_SIT_LIM: '||to_char(glb_ZA_SIT_LIM ));
3853 WrtHrTrc(' glb_ZA_TMP_TX_RTE: '||to_char(glb_ZA_TMP_TX_RTE ));
3854 WrtHrTrc(' glb_ZA_WRK_DYS_PR_YR: '||to_char(glb_ZA_WRK_DYS_PR_YR ));
3855 WrtHrTrc('-------------------------------------------------------------------------------');
3856 WrtHrTrc('-- Application Database Items');
3857 WrtHrTrc('-------------------------------------------------------------------------------');
3858 WrtHrTrc(' dbi_BP_TX_RCV: '|| dbi_BP_TX_RCV );
3859 WrtHrTrc(' dbi_PAY_PROC_PRD_DTE_PD: '||to_char(dbi_PAY_PROC_PRD_DTE_PD,'DD/MM/YYYY'));
3860 WrtHrTrc(' dbi_PER_AGE: '||to_char(dbi_PER_AGE ));
3861 WrtHrTrc(' dbi_PER_DTE_OF_BRTH: '||to_char(dbi_PER_DTE_OF_BRTH ,'DD/MM/YYYY'));
3862 WrtHrTrc(' dbi_SEA_WRK_DYS_WRK: '||to_char(dbi_SEA_WRK_DYS_WRK ));
3863 WrtHrTrc(' dbi_SES_DTE: '||to_char(dbi_SES_DTE ,'DD/MM/YYYY'));
3864 WrtHrTrc(' dbi_TX_DIR_NUM: '|| dbi_TX_DIR_NUM );
3865 WrtHrTrc(' dbi_TX_DIR_VAL: '||to_char(dbi_TX_DIR_VAL ));
3866 WrtHrTrc(' dbi_TX_STA: '|| dbi_TX_STA );
3867 WrtHrTrc(' dbi_ZA_ACT_END_DTE: '||to_char(dbi_ZA_ACT_END_DTE ,'DD/MM/YYYY'));
3868 WrtHrTrc(' dbi_ZA_ACT_STRT_DTE: '||to_char(dbi_ZA_ACT_STRT_DTE ,'DD/MM/YYYY'));
3869 WrtHrTrc(' dbi_ZA_ASG_TX_RTR_PRD: '|| dbi_ZA_ASG_TX_RTR_PRD );
3870 WrtHrTrc(' dbi_ZA_ASG_TAX_RTR_RSLTS: '|| dbi_ZA_ASG_TAX_RTR_RSLTS );
3871 WrtHrTrc(' dbi_ZA_ASG_TX_YR: '||to_char(dbi_ZA_ASG_TX_YR ));
3872 WrtHrTrc(' dbi_ZA_ASG_TX_YR_END: '||to_char(dbi_ZA_ASG_TX_YR_END ,'DD/MM/YYYY'));
3873 WrtHrTrc(' dbi_ZA_ASG_TX_YR_STRT: '||to_char(dbi_ZA_ASG_TX_YR_STRT ,'DD/MM/YYYY'));
3874 WrtHrTrc(' dbi_ZA_CUR_PRD_END_DTE: '||to_char(dbi_ZA_CUR_PRD_END_DTE ,'DD/MM/YYYY'));
3875 WrtHrTrc(' dbi_ZA_CUR_PRD_STRT_DTE: '||to_char(dbi_ZA_CUR_PRD_STRT_DTE,'DD/MM/YYYY'));
3876 WrtHrTrc(' dbi_ZA_DYS_IN_YR: '||to_char(dbi_ZA_DYS_IN_YR ));
3877 WrtHrTrc(' dbi_ZA_PAY_PRDS_LFT: '||to_char(dbi_ZA_PAY_PRDS_LFT ));
3878 WrtHrTrc(' dbi_ZA_PAY_PRDS_PER_YR: '||to_char(dbi_ZA_PAY_PRDS_PER_YR ));
3879 WrtHrTrc(' dbi_ZA_TX_YR_END: '||to_char(dbi_ZA_TX_YR_END ,'DD/MM/YYYY'));
3880 WrtHrTrc(' dbi_ZA_TX_YR_STRT: '||to_char(dbi_ZA_TX_YR_STRT ,'DD/MM/YYYY'));
3881 WrtHrTrc(' dbi_ZA_LS_DIR_NUM: '|| dbi_ZA_LS_DIR_NUM );
3882 WrtHrTrc(' dbi_ZA_LS_DIR_VAL: '||to_char(dbi_ZA_LS_DIR_VAL ));
3883 WrtHrTrc('-------------------------------------------------------------------------------');
3884 WrtHrTrc('-- Balances');
3885 WrtHrTrc('-------------------------------------------------------------------------------');
3886 WrtHrTrc(' bal_ANN_ARR_PF_CMTD: '||to_char(bal_ANN_ARR_PF_CMTD ));
3887 WrtHrTrc(' bal_ANN_ARR_PF_CYTD: '||to_char(bal_ANN_ARR_PF_CYTD ));
3888 WrtHrTrc(' bal_ANN_ARR_PF_RUN: '||to_char(bal_ANN_ARR_PF_RUN ));
3889 WrtHrTrc(' bal_ANN_ARR_PF_PTD: '||to_char(bal_ANN_ARR_PF_PTD ));
3890 WrtHrTrc(' bal_ANN_ARR_PF_YTD: '||to_char(bal_ANN_ARR_PF_YTD ));
3891 WrtHrTrc(' bal_ANN_ARR_RA_CMTD: '||to_char(bal_ANN_ARR_RA_CMTD ));
3892 WrtHrTrc(' bal_ANN_ARR_RA_CYTD: '||to_char(bal_ANN_ARR_RA_CYTD ));
3893 WrtHrTrc(' bal_ANN_ARR_RA_RUN: '||to_char(bal_ANN_ARR_RA_RUN ));
3894 WrtHrTrc(' bal_ANN_ARR_RA_PTD: '||to_char(bal_ANN_ARR_RA_PTD ));
3895 WrtHrTrc(' bal_ANN_ARR_RA_YTD: '||to_char(bal_ANN_ARR_RA_YTD ));
3896 WrtHrTrc(' bal_ANN_EE_INC_PRO_POL_CMTD: '||to_char(bal_ANN_EE_INC_PRO_POL_CMTD ));
3897 WrtHrTrc(' bal_ANN_EE_INC_PRO_POL_CYTD: '||to_char(bal_ANN_EE_INC_PRO_POL_CYTD ));
3898 WrtHrTrc(' bal_ANN_EE_INC_PRO_POL_RUN: '||to_char(bal_ANN_EE_INC_PRO_POL_RUN ));
3899 WrtHrTrc(' bal_ANN_EE_INC_PRO_POL_PTD: '||to_char(bal_ANN_EE_INC_PRO_POL_PTD ));
3900 WrtHrTrc(' bal_ANN_EE_INC_PRO_POL_YTD: '||to_char(bal_ANN_EE_INC_PRO_POL_YTD ));
3901 WrtHrTrc(' bal_ANN_PF_CMTD: '||to_char(bal_ANN_PF_CMTD ));
3902 WrtHrTrc(' bal_ANN_PF_CYTD: '||to_char(bal_ANN_PF_CYTD ));
3903 WrtHrTrc(' bal_ANN_PF_RUN: '||to_char(bal_ANN_PF_RUN ));
3904 WrtHrTrc(' bal_ANN_PF_PTD: '||to_char(bal_ANN_PF_PTD ));
3905 WrtHrTrc(' bal_ANN_PF_YTD: '||to_char(bal_ANN_PF_YTD ));
3906 WrtHrTrc(' bal_ANN_RA_CMTD: '||to_char(bal_ANN_RA_CMTD ));
3907 WrtHrTrc(' bal_ANN_RA_CYTD: '||to_char(bal_ANN_RA_CYTD ));
3908 WrtHrTrc(' bal_ANN_RA_RUN: '||to_char(bal_ANN_RA_RUN ));
3909 WrtHrTrc(' bal_ANN_RA_PTD: '||to_char(bal_ANN_RA_PTD ));
3910 WrtHrTrc(' bal_ANN_RA_YTD: '||to_char(bal_ANN_RA_YTD ));
3911 WrtHrTrc(' bal_ARR_PF_CMTD: '||to_char(bal_ARR_PF_CMTD ));
3912 WrtHrTrc(' bal_ARR_PF_CYTD: '||to_char(bal_ARR_PF_CYTD ));
3913 WrtHrTrc(' bal_ARR_PF_PTD: '||to_char(bal_ARR_PF_PTD ));
3914 WrtHrTrc(' bal_ARR_PF_YTD: '||to_char(bal_ARR_PF_YTD ));
3915 WrtHrTrc(' bal_ARR_RA_CMTD: '||to_char(bal_ARR_RA_CMTD ));
3916 WrtHrTrc(' bal_ARR_RA_CYTD: '||to_char(bal_ARR_RA_CYTD ));
3917 WrtHrTrc(' bal_ARR_RA_PTD: '||to_char(bal_ARR_RA_PTD ));
3918 WrtHrTrc(' bal_ARR_RA_YTD: '||to_char(bal_ARR_RA_YTD ));
3919 WrtHrTrc(' bal_BP_CMTD: '||to_char(bal_BP_CMTD ));
3920 WrtHrTrc(' bal_BP_PTD: '||to_char(bal_BP_PTD ));
3921 WrtHrTrc(' bal_BP_YTD: '||to_char(bal_BP_YTD ));
3922 WrtHrTrc(' bal_CUR_PF_CMTD: '||to_char(bal_CUR_PF_CMTD ));
3923 WrtHrTrc(' bal_CUR_PF_CYTD: '||to_char(bal_CUR_PF_CYTD ));
3924 WrtHrTrc(' bal_CUR_PF_RUN: '||to_char(bal_CUR_PF_RUN ));
3925 WrtHrTrc(' bal_CUR_PF_PTD: '||to_char(bal_CUR_PF_PTD ));
3926 WrtHrTrc(' bal_CUR_PF_YTD: '||to_char(bal_CUR_PF_YTD ));
3927 WrtHrTrc(' bal_CUR_RA_CMTD: '||to_char(bal_CUR_RA_CMTD ));
3928 WrtHrTrc(' bal_CUR_RA_CYTD: '||to_char(bal_CUR_RA_CYTD ));
3929 WrtHrTrc(' bal_CUR_RA_RUN: '||to_char(bal_CUR_RA_RUN ));
3930 WrtHrTrc(' bal_CUR_RA_PTD: '||to_char(bal_CUR_RA_PTD ));
3931 WrtHrTrc(' bal_CUR_RA_YTD: '||to_char(bal_CUR_RA_YTD ));
3932 WrtHrTrc(' bal_DIR_DMD_RMN_ITD: '||to_char(bal_DIR_DMD_RMN_ITD ));
3933 WrtHrTrc(' bal_EE_INC_PRO_POL_CMTD: '||to_char(bal_EE_INC_PRO_POL_CMTD ));
3934 WrtHrTrc(' bal_EE_INC_PRO_POL_CYTD: '||to_char(bal_EE_INC_PRO_POL_CYTD ));
3935 WrtHrTrc(' bal_EE_INC_PRO_POL_RUN: '||to_char(bal_EE_INC_PRO_POL_RUN ));
3936 WrtHrTrc(' bal_EE_INC_PRO_POL_PTD: '||to_char(bal_EE_INC_PRO_POL_PTD ));
3937 WrtHrTrc(' bal_EE_INC_PRO_POL_YTD: '||to_char(bal_EE_INC_PRO_POL_YTD ));
3938 WrtHrTrc(' bal_EXC_ARR_PEN_ITD: '||to_char(bal_EXC_ARR_PEN_ITD ));
3939 WrtHrTrc(' bal_EXC_ARR_PEN_PTD: '||to_char(bal_EXC_ARR_PEN_PTD ));
3940 WrtHrTrc(' bal_EXC_ARR_PEN_YTD: '||to_char(bal_EXC_ARR_PEN_YTD ));
3941 WrtHrTrc(' bal_EXC_ARR_RA_ITD: '||to_char(bal_EXC_ARR_RA_ITD ));
3942 WrtHrTrc(' bal_EXC_ARR_RA_PTD: '||to_char(bal_EXC_ARR_RA_PTD ));
3943 WrtHrTrc(' bal_EXC_ARR_RA_YTD: '||to_char(bal_EXC_ARR_RA_YTD ));
3944 WrtHrTrc(' bal_MED_CONTR_CMTD: '||to_char(bal_MED_CONTR_CMTD ));
3945 WrtHrTrc(' bal_MED_CONTR_CYTD: '||to_char(bal_MED_CONTR_CYTD ));
3946 WrtHrTrc(' bal_MED_CONTR_RUN: '||to_char(bal_MED_CONTR_RUN ));
3947 WrtHrTrc(' bal_MED_CONTR_PTD: '||to_char(bal_MED_CONTR_PTD ));
3948 WrtHrTrc(' bal_MED_CONTR_YTD: '||to_char(bal_MED_CONTR_YTD ));
3949 WrtHrTrc(' bal_NET_PAY_RUN: '||to_char(bal_NET_PAY_RUN ));
3950 WrtHrTrc(' bal_NET_TXB_INC_CMTD: '||to_char(bal_NET_TXB_INC_CMTD ));
3951 WrtHrTrc(' bal_PAYE_YTD: '||to_char(bal_PAYE_YTD ));
3952 WrtHrTrc(' bal_SITE_YTD: '||to_char(bal_SITE_YTD ));
3953 WrtHrTrc(' bal_TAX_YTD: '||to_char(bal_TAX_YTD ));
3954 WrtHrTrc(' bal_TX_ON_AB_PTD: '||to_char(bal_TX_ON_AB_PTD ));
3955 WrtHrTrc(' bal_TX_ON_AB_YTD: '||to_char(bal_TX_ON_AB_YTD ));
3956 WrtHrTrc(' bal_TX_ON_AP_PTD: '||to_char(bal_TX_ON_AP_PTD ));
3957 WrtHrTrc(' bal_TX_ON_AP_YTD: '||to_char(bal_TX_ON_AP_YTD ));
3958 WrtHrTrc(' bal_TX_ON_BP_PTD: '||to_char(bal_TX_ON_BP_PTD ));
3959 WrtHrTrc(' bal_TX_ON_BP_YTD: '||to_char(bal_TX_ON_BP_YTD ));
3960 WrtHrTrc(' bal_TX_ON_TA_PTD: '||to_char(bal_TX_ON_TA_PTD ));
3961 WrtHrTrc(' bal_TX_ON_TA_YTD: '||to_char(bal_TX_ON_TA_YTD ));
3962 WrtHrTrc(' bal_TX_ON_DR_PTD: '||to_char(bal_TX_ON_DR_PTD ));
3963 WrtHrTrc(' bal_TX_ON_DR_YTD: '||to_char(bal_TX_ON_DR_YTD ));
3964 WrtHrTrc(' bal_TX_ON_FB_PTD: '||to_char(bal_TX_ON_FB_PTD ));
3965 WrtHrTrc(' bal_TX_ON_FB_YTD: '||to_char(bal_TX_ON_FB_YTD ));
3966 WrtHrTrc(' bal_TX_ON_NI_PTD: '||to_char(bal_TX_ON_NI_PTD ));
3967 WrtHrTrc(' bal_TX_ON_NI_YTD: '||to_char(bal_TX_ON_NI_YTD ));
3968 WrtHrTrc(' bal_TX_ON_PO_PTD: '||to_char(bal_TX_ON_PO_PTD ));
3969 WrtHrTrc(' bal_TX_ON_PO_YTD: '||to_char(bal_TX_ON_PO_YTD ));
3970 WrtHrTrc(' bal_TOT_INC_PTD: '||to_char(bal_TOT_INC_PTD ));
3971 WrtHrTrc(' bal_TOT_INC_YTD: '||to_char(bal_TOT_INC_YTD ));
3972 WrtHrTrc(' bal_TOT_NRFI_AN_INC_CMTD: '||to_char(bal_TOT_NRFI_AN_INC_CMTD ));
3973 WrtHrTrc(' bal_TOT_NRFI_AN_INC_CYTD: '||to_char(bal_TOT_NRFI_AN_INC_CYTD ));
3974 WrtHrTrc(' bal_TOT_NRFI_AN_INC_RUN: '||to_char(bal_TOT_NRFI_AN_INC_RUN ));
3975 WrtHrTrc(' bal_TOT_NRFI_AN_INC_PTD: '||to_char(bal_TOT_NRFI_AN_INC_PTD ));
3976 WrtHrTrc(' bal_TOT_NRFI_AN_INC_YTD: '||to_char(bal_TOT_NRFI_AN_INC_YTD ));
3977 WrtHrTrc(' bal_TOT_NRFI_INC_CMTD: '||to_char(bal_TOT_NRFI_INC_CMTD ));
3978 WrtHrTrc(' bal_TOT_NRFI_INC_CYTD: '||to_char(bal_TOT_NRFI_INC_CYTD ));
3979 WrtHrTrc(' bal_TOT_NRFI_INC_RUN: '||to_char(bal_TOT_NRFI_INC_RUN ));
3980 WrtHrTrc(' bal_TOT_NRFI_INC_PTD: '||to_char(bal_TOT_NRFI_INC_PTD ));
3981 WrtHrTrc(' bal_TOT_NRFI_INC_YTD: '||to_char(bal_TOT_NRFI_INC_YTD ));
3982 WrtHrTrc(' bal_TOT_RFI_AN_INC_CMTD: '||to_char(bal_TOT_RFI_AN_INC_CMTD ));
3983 WrtHrTrc(' bal_TOT_RFI_AN_INC_CYTD: '||to_char(bal_TOT_RFI_AN_INC_CYTD ));
3984 WrtHrTrc(' bal_TOT_RFI_AN_INC_RUN: '||to_char(bal_TOT_RFI_AN_INC_RUN ));
3985 WrtHrTrc(' bal_TOT_RFI_AN_INC_PTD: '||to_char(bal_TOT_RFI_AN_INC_PTD ));
3986 WrtHrTrc(' bal_TOT_RFI_AN_INC_YTD: '||to_char(bal_TOT_RFI_AN_INC_YTD ));
3987 WrtHrTrc(' bal_TOT_RFI_INC_CMTD: '||to_char(bal_TOT_RFI_INC_CMTD ));
3988 WrtHrTrc(' bal_TOT_RFI_INC_CYTD: '||to_char(bal_TOT_RFI_INC_CYTD ));
3989 WrtHrTrc(' bal_TOT_RFI_INC_RUN: '||to_char(bal_TOT_RFI_INC_RUN ));
3990 WrtHrTrc(' bal_TOT_RFI_INC_PTD: '||to_char(bal_TOT_RFI_INC_PTD ));
3991 WrtHrTrc(' bal_TOT_RFI_INC_YTD: '||to_char(bal_TOT_RFI_INC_YTD ));
3992 WrtHrTrc(' bal_TOT_SEA_WRK_DYS_WRK_YTD: '||to_char(bal_TOT_SEA_WRK_DYS_WRK_YTD ));
3993 WrtHrTrc(' bal_TOT_SKL_ANN_INC_CMTD: '||to_char(bal_TOT_SKL_ANN_INC_CMTD ));
3994 WrtHrTrc(' bal_TOT_SKL_INC_CMTD: '||to_char(bal_TOT_SKL_INC_CMTD ));
3995 WrtHrTrc(' bal_TOT_TXB_INC_ITD: '||to_char(bal_TOT_TXB_INC_ITD ));
3996 WrtHrTrc(' bal_TOT_TXB_AB_CMTD: '||to_char(bal_TOT_TXB_AB_CMTD ));
3997 WrtHrTrc(' bal_TOT_TXB_AB_RUN: '||to_char(bal_TOT_TXB_AB_RUN ));
3998 WrtHrTrc(' bal_TOT_TXB_AB_PTD: '||to_char(bal_TOT_TXB_AB_PTD ));
3999 WrtHrTrc(' bal_TOT_TXB_AB_YTD: '||to_char(bal_TOT_TXB_AB_YTD ));
4000 WrtHrTrc(' bal_TOT_TXB_AP_CMTD: '||to_char(bal_TOT_TXB_AP_CMTD ));
4001 WrtHrTrc(' bal_TOT_TXB_AP_RUN: '||to_char(bal_TOT_TXB_AP_RUN ));
4002 WrtHrTrc(' bal_TOT_TXB_AP_PTD: '||to_char(bal_TOT_TXB_AP_PTD ));
4003 WrtHrTrc(' bal_TOT_TXB_AP_YTD: '||to_char(bal_TOT_TXB_AP_YTD ));
4004 WrtHrTrc(' bal_TOT_TXB_FB_CMTD: '||to_char(bal_TOT_TXB_FB_CMTD ));
4005 WrtHrTrc(' bal_TOT_TXB_FB_CYTD: '||to_char(bal_TOT_TXB_FB_CYTD ));
4006 WrtHrTrc(' bal_TOT_TXB_FB_RUN: '||to_char(bal_TOT_TXB_FB_RUN ));
4007 WrtHrTrc(' bal_TOT_TXB_FB_PTD: '||to_char(bal_TOT_TXB_FB_PTD ));
4008 WrtHrTrc(' bal_TOT_TXB_FB_YTD: '||to_char(bal_TOT_TXB_FB_YTD ));
4009 WrtHrTrc(' bal_TOT_TXB_NI_CMTD: '||to_char(bal_TOT_TXB_NI_CMTD ));
4010 WrtHrTrc(' bal_TOT_TXB_NI_CYTD: '||to_char(bal_TOT_TXB_NI_CYTD ));
4011 WrtHrTrc(' bal_TOT_TXB_NI_RUN: '||to_char(bal_TOT_TXB_NI_RUN ));
4012 WrtHrTrc(' bal_TOT_TXB_NI_PTD: '||to_char(bal_TOT_TXB_NI_PTD ));
4013 WrtHrTrc(' bal_TOT_TXB_NI_YTD: '||to_char(bal_TOT_TXB_NI_YTD ));
4014 WrtHrTrc(' bal_TOT_TXB_PO_CMTD: '||to_char(bal_TOT_TXB_PO_CMTD ));
4015 WrtHrTrc(' bal_TOT_TXB_PO_PTD: '||to_char(bal_TOT_TXB_PO_PTD ));
4016 WrtHrTrc(' bal_TOT_TXB_PO_YTD: '||to_char(bal_TOT_TXB_PO_YTD ));
4017 WrtHrTrc(' bal_TOT_TXB_TA_CMTD: '||to_char(bal_TOT_TXB_TA_CMTD ));
4018 WrtHrTrc(' bal_TOT_TXB_TA_CYTD: '||to_char(bal_TOT_TXB_TA_CYTD ));
4019 WrtHrTrc(' bal_TOT_TXB_TA_PTD: '||to_char(bal_TOT_TXB_TA_PTD ));
4020 WrtHrTrc(' bal_TOT_TXB_TA_YTD: '||to_char(bal_TOT_TXB_TA_YTD ));
4021
4022 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',1);
4023
4024 -- Initialise Package Globals
4025 -- Contexts
4026 con_ASG_ACT_ID := ASSIGNMENT_ACTION_ID;
4027 con_ASG_ID := ASSIGNMENT_ID;
4028 con_PRL_ACT_ID := PAYROLL_ACTION_ID;
4029 con_PRL_ID := PAYROLL_ID;
4030
4031 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',2);
4032
4033 -- Tax Override Validation
4034 --
4035 /*
4036 V = Amount
4037 P = Percentage
4038 S = Force Site Calculation
4039 */
4040
4041 -- Tax Status Validation
4042 --
4043 /*
4044 A = Normal
4045 B = Provisional
4046 C = Directive Amount
4047 D = Directive Percentage
4048 E = Close Corporation
4049 F = Temporary Worker/Student
4050 G = Seasonal Worker
4051 H = Zero Tax
4052 J = Personal Service Company
4053 K = Personal Service Trust
4054 L = Labour Broker
4055 M = Private Director
4056 N = Private Director with Directive Amount
4057 P = Private Director with Directive Percentage
4058 Q = Private Director Zero Tax
4059 */
4060 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',3);
4061
4062 -- C = Directive Amount
4063 -- N = Private Director with Directive Amount
4064 --
4065 IF dbi_TX_STA IN ('C','N') THEN
4066 IF trc_OvrTxCalc AND (trc_OvrTyp = 'S' OR trc_OvrTyp = 'P') THEN
4067 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',4);
4068 IF xpt_Msg = 'No Error' THEN
4069 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',5);
4070 xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_C';
4071 END IF;
4072 RAISE xpt_E;
4073 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',6);
4074 ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4075 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',7);
4076 trc_CalTyp := 'OvrCalc';
4077 trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4078 -- Check Directive Number First
4079 ELSIF dbi_TX_DIR_NUM = 'NULL' THEN
4080 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',8);
4081 IF xpt_Msg = 'No Error' THEN
4082 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',9);
4083 xpt_Msg := 'PY_ZA_TX_DIR_NUM';
4084 END IF;
4085 RAISE xpt_E;
4086 -- Check that directive value is filled in
4087 ELSIF dbi_TX_DIR_VAL = -1 THEN
4088 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',10);
4089 IF xpt_Msg = 'No Error' THEN
4090 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',11);
4091 xpt_Msg := 'PY_ZA_TX_DIR_MONT';
4092 END IF;
4093 RAISE xpt_E;
4094 ELSE
4095 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',12);
4096 trc_CalTyp := 'NoCalc';
4097 -- Liability = entered value
4098 trc_LibFpNI := dbi_TX_DIR_VAL;
4099 -- Standard NetPay Validation
4100 py_za_tx_utl_01032005.ValidateTaxOns;
4101 END IF;
4102 -- D = Directive Percentage
4103 -- P = Private Director wth Directive Percentage
4104 --
4105 ELSIF dbi_TX_STA IN ('D','P') THEN
4106 IF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
4107 IF xpt_Msg = 'No Error' THEN
4108 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',13);
4109 xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_DEF';
4110 END IF;
4111 RAISE xpt_E;
4112 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',14);
4113 ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4114 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',15);
4115 trc_CalTyp := 'OvrCalc';
4116 trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4117 ELSE
4118 IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
4119 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',16);
4120 trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
4121 -- Percentage taken into account in py_za_tx_utl_01032005.TaxLiability
4122 END IF;
4123 -- Check Directive Number First
4124 IF dbi_TX_DIR_NUM = 'NULL' THEN
4125 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',17);
4126 IF xpt_Msg = 'No Error' THEN
4127 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',18);
4128 xpt_Msg := 'PY_ZA_TX_DIR_NUM';
4129 END IF;
4130 RAISE xpt_E;
4131 -- Check that directive value is filled in
4132 ELSIF dbi_TX_DIR_VAL = -1 THEN
4133 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',19);
4134 IF xpt_Msg = 'No Error' THEN
4135 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',20);
4136 xpt_Msg := 'PY_ZA_TX_DIR_PERC';
4137 END IF;
4138 RAISE xpt_E;
4139 ELSE
4140 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',21);
4141 DirCalc;
4142 END IF;
4143 END IF;
4144 -- E = Close Corporation
4145 -- F = Temporary Worker/Student
4146 -- J = Personal Service Company
4147 -- K = Personal Service Trust
4148 -- L = Labour Broker
4149 --
4150 ELSIF dbi_TX_STA IN ('E','F','J','K','L') THEN
4151 IF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
4152 IF xpt_Msg = 'No Error' THEN
4153 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',22);
4154 xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_DEF';
4155 END IF;
4156 RAISE xpt_E;
4157 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',23);
4158 ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4159 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',24);
4160 trc_CalTyp := 'OvrCalc';
4161 trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4162 ELSE
4163 IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
4164 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',25);
4165 trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
4166 -- Percentage taken into account in py_za_tx_utl_01032005.TaxLiability
4167 END IF;
4168 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',26);
4169 -- Simply Execute the Directive Calculation
4170 DirCalc;
4171 END IF;
4172 -- G = Seasonal Worker
4173 --
4174 ELSIF dbi_TX_STA = 'G' THEN
4175 IF trc_OvrTxCalc AND (trc_OvrTyp = 'S' OR trc_OvrTyp = 'P') THEN
4176 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',27);
4177 IF xpt_Msg = 'No Error' THEN
4178 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',28);
4179 xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_G';
4180 END IF;
4181 RAISE xpt_E;
4182 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',29);
4183 -- Check that seasonal worker days worked is filled in
4184 ELSIF dbi_SEA_WRK_DYS_WRK = 0 THEN
4185 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',30);
4186 IF xpt_Msg = 'No Error' THEN
4187 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',31);
4188 xpt_Msg := 'PY_ZA_TX_SEA_WRK_DYS';
4189 END IF;
4190 RAISE xpt_E;
4191 ELSE
4192 IF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4193 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',32);
4194 trc_CalTyp := 'OvrCalc';
4195 trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4196 py_za_tx_utl_01032005.SetRebates;
4197 ELSE
4198 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',33);
4199 SeaCalc;
4200 END IF;
4201 END IF;
4202 -- A = Normal
4203 -- B = Provisional
4204 -- M = Private Director
4205 --
4206 ELSIF dbi_TX_STA IN ('A','B','M') THEN
4207 IF dbi_TX_STA <> 'M' THEN
4208 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',34);
4209 -- Deemed Remuneration only applicable to 'M'
4210 bal_DIR_DMD_RMN_ITD := 0;
4211 END IF;
4212
4213 IF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4214 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',35);
4215 trc_CalTyp := 'OvrCalc';
4216 trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4217 py_za_tx_utl_01032005.SetRebates;
4218 trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032005.DaysWorked;
4219 ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
4220 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',36);
4221 trc_CalTyp := 'OvrCalc';
4222 trc_OvrWrn := 'WARNING: Tax Override - Forced Site Calculation';
4223 -- Force the Site Calculation
4224 SitCalc;
4225 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',37);
4226 ELSE
4227 IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
4228 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',38);
4229 trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
4230 -- Percentage taken into account in py_za_tx_utl_01032005.TaxLiability
4231 END IF;
4232
4233 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',39);
4234 IF py_za_tx_utl_01032005.LatePayPeriod THEN
4235 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',40);
4236 LteCalc;
4237 -- Is this a SITE Period?
4238 ELSIF py_za_tx_utl_01032005.EmpTermPrePeriod THEN
4239 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',41);
4240 SitCalc;
4241 ELSIF py_za_tx_utl_01032005.LstPeriod OR py_za_tx_utl_01032005.EmpTermInPeriod THEN
4242 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',42);
4243 IF py_za_tx_utl_01032005.PreErnPeriod THEN
4244 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',43);
4245 YtdCalc;
4246 ELSE
4247 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',44);
4248 SitCalc;
4249 END IF;
4250 ElSE
4251 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',45);
4252 -- The employee has NOT been terminated!
4253 IF py_za_tx_utl_01032005.PreErnPeriod THEN
4254 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',46);
4255 YtdCalc;
4256 -- Bug 4346955
4257 /* ELSIF dbi_ZA_ASG_TX_RTR_PRD = 'Y' THEN
4258 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',47);
4259 IF dbi_ZA_ASG_TAX_RTR_RSLTS = 'Y' THEN
4260 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',48);
4261 SitCalc;
4262 ELSIF py_za_tx_utl_01032005.NegPtd THEN
4263 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',49);
4264 SitCalc;
4265 ELSE
4266 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',50);
4267 NorCalc;
4268 END IF; */
4269 ELSIF py_za_tx_utl_01032005.NegPtd THEN
4270 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',51);
4271 SitCalc;
4272 ELSE
4273 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',52);
4274 NorCalc;
4275 END IF;
4276 END IF;
4277 END IF;
4278 -- H = Zero Tax
4279 -- Q = Private Director Zero Tax
4280 --
4281 ELSIF dbi_TX_STA IN ('H','Q') THEN
4282 IF trc_OvrTxCalc THEN
4283 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',53);
4284 IF xpt_Msg = 'No Error' THEN
4285 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',54);
4286 xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_H';
4287 END IF;
4288 RAISE xpt_E;
4289 ELSE
4290 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',55);
4291 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
4292 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
4293 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
4294 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
4295 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
4296 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
4297 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
4298 END IF;
4299 ELSE
4300 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',56);
4301 hr_utility.set_message(801, 'ERROR: Invalid Tax Status');
4302 hr_utility.raise_error;
4303 END IF;
4304
4305 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',57);
4306
4307 -- Post Calculation Steps
4308 --
4309 py_za_tx_utl_01032005.SitPaySplit;
4310
4311 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',58);
4312
4313 -- Execute the Arrear Processing
4314 --
4315 IF py_za_tx_utl_01032005.SitePeriod THEN
4316 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',59);
4317 py_za_tx_utl_01032005.ArrearExcess;
4318 END IF;
4319
4320 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',60);
4321
4322 -- Calculate Net Taxable Income
4323 --
4324 NetTxbIncCalc;
4325
4326 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',61);
4327
4328 -- Setup the Out Parameters
4329 --
4330 -- Messages
4331 p_LibWrn := trc_LibWrn; -- Liability Warning
4332 p_OvrWrn := trc_OvrWrn; -- Override Warning
4333
4334 -- Pay Values
4335 trc_PayValSD := ( trc_LibFpNI
4336 + trc_LibFpFB
4337 + trc_LibFpTA
4338 + trc_LibFpBP
4339 + trc_LibFpAB
4340 + trc_LibFpAP
4341 + trc_LibFpPO
4342 );
4343 trc_PayValEC := trc_LibFpDR;
4344
4345 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',62);
4346
4347 -- Tax On's
4348 p_LibFpDR := trc_LibFpDR;
4349 p_LibFpNI := trc_LibFpNI;
4350 p_LibFpFB := trc_LibFpFB;
4351 p_LibFpTA := trc_LibFpTA;
4352 p_LibFpBP := trc_LibFpBP;
4353 p_LibFpAB := trc_LibFpAB;
4354 p_LibFpAP := trc_LibFpAP;
4355 p_LibFpPO := trc_LibFpPO;
4356 p_PayValSD := trc_PayValSD;
4357 p_PayValEC := trc_PayValEC;
4358
4359 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',63);
4360
4361 -- Indicators, Splits and Updates
4362 p_PayeVal := trc_PayeVal;
4363 p_SiteVal := trc_SiteVal;
4364 p_It3Ind := trc_It3Ind;
4365 p_PfUpdFig := trc_PfUpdFig;
4366 p_RaUpdFig := trc_RaUpdFig;
4367 p_OUpdFig := trc_OUpdFig;
4368 p_NtiUpdFig := trc_NtiUpdFig;
4369
4370 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',64);
4371
4372 p_LSDirNum := dbi_ZA_LS_DIR_NUM;
4373 p_LSDirVal := dbi_ZA_LS_DIR_VAL;
4374
4375 -- Execute The Tax Trace
4376 --
4377 py_za_tx_utl_01032005.Trace;
4378
4379 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',65);
4380
4381 -- Clear Globals
4382 --
4383 py_za_tx_utl_01032005.ClearGlobals;
4384
4385 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',66);
4386
4387 -- End off Trace File
4388 WrtHrTrc('------------------------------------------------------------');
4389 WrtHrTrc('-- End of Tax Trace File --');
4390 WrtHrTrc('------------------------------------------------------------');
4391 WrtHrTrc(' -- ');
4392
4393 -- Call hr_utility stop procedure
4394 py_za_tx_utl_01032005.StopHrTrace;
4395
4396 --dbms_debug.debug_off;
4397
4398 RETURN l_Dum;
4399
4400 EXCEPTION
4401 WHEN xpt_FxdPrc THEN
4402 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',67);
4403 WrtHrTrc('Sql error msg: Fixed Percentage was not entered');
4404 py_za_tx_utl_01032005.StopHrTrace;
4405 hr_utility.set_message(801, 'Fixed Percentage not entered');
4406 py_za_tx_utl_01032005.ClearGlobals;
4407 hr_utility.raise_error;
4408 WHEN xpt_E THEN
4409 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',68);
4410 WrtHrTrc('xpt_Msg: '||xpt_Msg);
4411 py_za_tx_utl_01032005.StopHrTrace;
4412 hr_utility.set_message(801, xpt_Msg);
4413 py_za_tx_utl_01032005.ClearGlobals;
4414 hr_utility.raise_error;
4415 WHEN OTHERS THEN
4416 hr_utility.set_location('py_za_tx_01032005.ZaTx_01032005',69);
4417 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
4418 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
4419 py_za_tx_utl_01032005.StopHrTrace;
4420 hr_utility.set_message(801, 'ZaTx_01032005: '||TO_CHAR(SQLCODE));
4421 py_za_tx_utl_01032005.ClearGlobals;
4422 hr_utility.raise_error;
4423 END ZaTx_01032005;
4424
4425 END PY_ZA_TX_01032005;
4426