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