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