[Home] [Help]
PACKAGE BODY: APPS.PY_ZA_TX_01032000
Source
1 PACKAGE BODY py_za_tx_01032000 AS
2 /* $Header: pyzat002.pkb 120.2 2005/06/28 00:10:09 kapalani noship $ */
3 /* Copyright (c) Oracle Corporation 1999. All rights reserved. */
4 /*
5 PRODUCT
6 Oracle Payroll - ZA Localisation Tax Module
7
8 NAME
9 py_za_tx_01032000.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_01032000
19 ZaTxGlb_01032000
20 ZaTxDbi_01032000
21 ZaTxBal1_01032000
22 ZaTxBal2_01032000
23 ZaTxBal3_01032000
24 ZaTx_01032000
25
26 PRIVATE FUNCTIONS
27 <none>
28
29
30 PRIVATE PROCEDURES
31 NetTxbIncCalc
32 Procedure to calculate a Net Taxable Income figure used
33 to properly calculate the Skills Development Levy
34 LteCalc
35 A main tax calculation.
36 For a complete description see the tax module design document.
37 SeaCalc
38 A main tax calculation.
39 For a complete description see the tax module design document.
40 SitCalc
41 A main tax calculation.
42 For a complete description see the tax module design document.
43 DirCalc
44 A main tax calculation.
45 For a complete description see the tax module design document.
46 BasCalc
47 A main tax calculation.
48 For a complete description see the tax module design document.
49 CalCalc
50 A main tax calculation.
51 For a complete description see the tax module design document.
52 YtdCalc
53 A main tax calculation.
54 For a complete description see the tax module design document.
55 NorCalc
56 A main tax calculation.
57 For a complete description see the tax module design document.
58
59 NOTES
60 .
61
62 MODIFICATION HISTORY
63 Person Date(DD-MM-YYYY) Version Comments
64 --------- ---------------- ------- ---------------------------------------------
65 A. Mahanty 14/04/2005 115.4 Bug 3491357 :BRA Enhancement
66 Balance Value retrieval modified.
67 J.N. Louw 17/01/2001 110.13 Added Negative Check Category
68 Calculation Logic - AB/AP
69 J.N. Louw 13/12/2000 110.12 Upped Header Ver for Patch
70 J.N. Louw 06/12/2000 110.11 Added SetRebates procedure call
71 Modified ZaTx_01032000 with new
72 logic
73 L.J. Kloppers 22-11-2000 115.1 Changed per_time_periods.attribute1
74 to per_time_periods.prd_information1
75 J.N. Louw 28/09/2000 110.10 Check for negative dbi_TX_DIR_VAL
76 dbi_ZA_TX_YR_STRT - 1 for CalCalc
77 Updated SeaCalc
78 Removed Tax on Public Office
79 Fixed Cascading Bug
80 Override Functionality
81 Added hr_utility trace
82 Moved private functions and
83 procedures to utility package
84 J.N. Louw 12/04/2000 110.9 Added Calendar Month to Date
85 Balances to cater for the
86 calculation of Net Taxable Income
87 Used in the calculation of the
88 Skills Development Levy
89 J.N. Louw 16-03-2000 110.8 bal_TXB_SUBS* deleted:
90 Subsistence Allowance change
91 J.N. Louw 06-03-2000 110.7 SitePayeSplit for 'G'
92 Added balance:
93 Total Seasonal Workers Days
94 Worked:
95 bal_TOT_SEA_WRK_DYS_WRK
96 trc_MsgTxStatus Now Error State:
97 FATAL error level
98 trc_MsgTxStatus removed -
99 replaced by utility msg
100 in FND_NEW_MESSAGES -
101 Fatal message - error state
102 J.N. Louw 17-02-2000 110.6 Added LteCalc - Late Payments
103 Merged and Expanded
104 py_za_tx_utl_01032000.TrvAllYtd
105 and py_za_tx_utl_01032000.TrvAllCal into
106 py_za_tx_utl_01032000.TrvAll
107 Created py_za_tx_utl_01032000.GlbVal function
108 Created py_za_tx_utl_01032000.LatePayPeriod function
109 Updated ZaTx_01032000 with
110 Late Payments checks
111 Updated py_za_tx_utl_01032000.Abatements with
112 Late Payments checks
113 trc_SitFactor now defaults
114 to 1(One)
115 Updated Balance Functions
116 with new balances and
117 re-ordered
118 Fixed Excess Arrear Carryover
119 Fixed 'G' py_za_tx_utl_01032000.SitPaySplit
120 c/p_PAYE_PTD,p_SITE_PTD,
121 bal_PAYE_PTD,bal_SITE_PTD
122 /p_PAYE_YTD,p_SITE_YTD,
123 bal_PAYE_YTD,bal_SITE_YTD
124 Updated py_za_tx_utl_01032000.SitPaySplit:
125 Reset SITE in case of
126 directive status(C,D,E,F)
127 J.N. Louw 09-02-2000 110.5 Fixed 65 Rebate and Threshold
128 Check
129 Altered Threshold Validation:
130 NorCalc, SitCalc
131 Tax on ... Refund
132 Altered Ytd Income Validation:
133 DirCalc, NorCalc, SitCalc
134 Tax on ... Refund
135 Altered ZaTx_01032000:
136 Tax Status Validation
137 Altered py_za_tx_utl_01032000.NpVal:
138 Override of Liability
139 J.N. Louw 02-02-2000 110.4 Added
140 py_za_tx_utl_01032000.PreErnPeriod Function
141 Addded Balance Feed Functionality
142 for the Total Taxable Income
143 balance
144 bal_PRCH_ANU_TXB_RFI_RUN
145 Added bal_PAYE_PTD,bal_SITE_PTD
146 Fixed BasCalc
147 Added py_za_tx_utl_01032000.LstPeriod
148 ,py_za_tx_utl_01032000.EmpTermInPeriod,
149 py_za_tx_utl_01032000.EmpTermPrePeriod Functions
150 Removed TxbIncYtd check in
151 SitCalc
152 Fixed De-annualisation of Public
153 Office Allowance - SitCalc,
154 SeaCalc
155 J.N. Louw 20-01-2000 110.3 Fixed bug on py_za_tx_utl_01032000.NpVal
156 when Net Pay
157 is zero
158 J.N. Louw 14-01-2000 110.2 Removed Tot RFI vs
159 Taxable Income Check from
160 abatements calculation
161 J.N. Louw 09-12-1999 110.1 Arrear Excess Processing
162 J.N. Louw 13-09-1999 110.0 First Created
163 */
164
165
166
167
168 /* PACKAGE BODY */
169
170 PROCEDURE NetTxbIncCalc AS
171
172 -- Variable Declaration
173 nti_CurMthStrtDte DATE;
174 nti_CurMthEndDte DATE;
175 nti_SitFactor NUMBER;
176 nti_PerTypInc NUMBER(15,2) DEFAULT 0;
177 nti_PerTypErn NUMBER(15,2) DEFAULT 0;
178 nti_AnnTypErn NUMBER(15,2) DEFAULT 0;
179 nti_PerPenFnd NUMBER(15,2) DEFAULT 0;
180 nti_PerRfiCon NUMBER(15,2) DEFAULT 0;
181 nti_PerPenFndMax NUMBER(15,2) DEFAULT 0;
182 nti_PerPenFndAbm NUMBER(15,2) DEFAULT 0;
183 nti_AnnPenFnd NUMBER(15,2) DEFAULT 0;
184 nti_AnnRfiCon NUMBER(15,2) DEFAULT 0;
185 nti_AnnPenFndMax NUMBER(15,2) DEFAULT 0;
186 nti_AnnPenFndAbm NUMBER(15,2) DEFAULT 0;
187 nti_ArrPenFnd NUMBER(15,2) DEFAULT 0;
188 nti_ArrPenFndAbm NUMBER(15,2) DEFAULT 0;
189 nti_RetAnu NUMBER(15,2) DEFAULT 0;
190 nti_NrfiCon NUMBER(15,2) DEFAULT 0;
191 nti_RetAnuMax NUMBER(15,2) DEFAULT 0;
192 nti_RetAnuAbm NUMBER(15,2) DEFAULT 0;
193 nti_ArrRetAnu NUMBER(15,2) DEFAULT 0;
194 nti_ArrRetAnuAbm NUMBER(15,2) DEFAULT 0;
195 nti_MedAidAbm NUMBER(15,2) DEFAULT 0;
196 nti_PerTotAbm NUMBER(15,2) DEFAULT 0;
197 nti_AnnTotAbm NUMBER(15,2) DEFAULT 0;
198 nti_TxbPerTypInc NUMBER(15,2) DEFAULT 0;
199 nti_TxbAnnTypInc NUMBER(15,2) DEFAULT 0;
200 nti_NetPerTxbInc NUMBER(15,2) DEFAULT 0;
201 nti_NetAnnTxbInc NUMBER(15,2) DEFAULT 0;
202 l_65Year DATE;
203
204 BEGIN
205 hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',1);
206 -- Calculate the Current Effective Calendar Month to Date Start Date
207 --
208 SELECT trunc(dbi_SES_DTE,'Month')
209 INTO nti_CurMthStrtDte
210 FROM dual;
211
212 hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',2);
213
214 -- Calculate the Current Effective Calendar Month to Date End Date
215 --
216 SELECT last_day(dbi_SES_DTE)
217 INTO nti_CurMthEndDte
218 FROM dual;
219
220 hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',3);
221
222 -- Calculate Site Factor
223 --
224 -- Based on the number of days in the calendar year over days in the calendar month
225 nti_SitFactor := dbi_ZA_DYS_IN_YR / (nti_CurMthEndDte - nti_CurMthStrtDte + 1);
226 hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',4);
227 py_za_tx_utl_01032000.WriteHrTrace('nti_CurMthEndDte: '||to_char(nti_CurMthEndDte,'DD/MM/YYYY'));
228 py_za_tx_utl_01032000.WriteHrTrace('nti_CurMthStrtDte: '||to_char(nti_CurMthStrtDte,'DD/MM/YYYY'));
229
230 -- Calculate the Taxable Portion of the Not-Fully Taxable Income Balances
231 --
232 bal_TA_RFI_CMTD := bal_TA_RFI_CMTD * glb_ZA_TRV_ALL_TX_PRC / 100;
233 bal_TA_NRFI_CMTD := bal_TA_NRFI_CMTD * glb_ZA_TRV_ALL_TX_PRC / 100;
234
235 bal_PO_RFI_CMTD := bal_PO_RFI_CMTD * glb_ZA_PBL_TX_PRC / 100;
236 bal_PO_NRFI_CMTD := bal_PO_NRFI_CMTD * glb_ZA_PBL_TX_PRC / 100;
237
238 -- Sum Period Type Income Calendar Month to Date Balances
239 --
240 nti_PerTypInc :=
241 ( bal_AST_PRCHD_RVAL_NRFI_CMTD
242 + bal_AST_PRCHD_RVAL_RFI_CMTD
243 + bal_BP_CMTD
244 + bal_BUR_AND_SCH_NRFI_CMTD
245 + bal_BUR_AND_SCH_RFI_CMTD
246 + bal_COMM_NRFI_CMTD
247 + bal_COMM_RFI_CMTD
248 + bal_COMP_ALL_NRFI_CMTD
249 + bal_COMP_ALL_RFI_CMTD
250 + bal_ENT_ALL_NRFI_CMTD
251 + bal_ENT_ALL_RFI_CMTD
252 + bal_FREE_ACCOM_NRFI_CMTD
253 + bal_FREE_ACCOM_RFI_CMTD
254 + bal_FREE_SERV_NRFI_CMTD
255 + bal_FREE_SERV_RFI_CMTD
256 + bal_LOW_LOANS_NRFI_CMTD
257 + bal_LOW_LOANS_RFI_CMTD
258 + bal_MED_PAID_NRFI_CMTD
259 + bal_MED_PAID_RFI_CMTD
260 + bal_MLS_AND_VOUCH_NRFI_CMTD
261 + bal_MLS_AND_VOUCH_RFI_CMTD
262 + bal_OTHER_TXB_ALL_NRFI_CMTD
263 + bal_OTHER_TXB_ALL_RFI_CMTD
264 + bal_OVTM_NRFI_CMTD
265 + bal_OVTM_RFI_CMTD
266 + bal_PO_NRFI_CMTD
267 + bal_PO_RFI_CMTD
268 + bal_PYM_DBT_NRFI_CMTD
269 + bal_PYM_DBT_RFI_CMTD
270 + bal_RGT_AST_NRFI_CMTD
271 + bal_RGT_AST_RFI_CMTD
272 + bal_TA_NRFI_CMTD
273 + bal_TA_RFI_CMTD
274 + bal_TEL_ALL_NRFI_CMTD
275 + bal_TEL_ALL_RFI_CMTD
276 + bal_TOOL_ALL_NRFI_CMTD
277 + bal_TOOL_ALL_RFI_CMTD
278 + bal_TXB_INC_NRFI_CMTD
279 + bal_TXB_INC_RFI_CMTD
280 + bal_TXB_PEN_NRFI_CMTD
281 + bal_TXB_PEN_RFI_CMTD
282 + bal_USE_VEH_NRFI_CMTD
283 + bal_USE_VEH_RFI_CMTD
284 );
285
286 -- Annualise by the Site Factor the Period Type Income
287 --
288 nti_PerTypErn := nti_PerTypInc * nti_SitFactor;
289
290 -- Sum Annual Type Income Calendar Month to Date Balances
291 --
292 nti_AnnTypErn :=
293 nti_PerTypErn + ( bal_AB_NRFI_CMTD
294 + bal_AB_RFI_CMTD
295 + bal_ANU_FRM_RET_FND_NRFI_CMTD
296 + bal_ANU_FRM_RET_FND_RFI_CMTD
297 + bal_PRCH_ANU_TXB_NRFI_CMTD
298 + bal_PRCH_ANU_TXB_RFI_CMTD
299 + bal_TXB_AP_NRFI_CMTD
300 + bal_TXB_AP_RFI_CMTD
301 );
302
303 -- Calculate Abatement Values
304 --
305 -- Pension Fund Abatement
306 --
307 -- Period Calculation
308 --
309 -- Annualise Period Pension Fund Contribution
310 nti_PerPenFnd := bal_CUR_PF_CMTD * nti_SitFactor;
311 -- Annualise Period Rfiable Contributions
312 nti_PerRfiCon := bal_TOT_RFI_INC_CMTD * nti_SitFactor;
313 -- Calculate the Pension Fund Maximum
314 nti_PerPenFndMax := GREATEST(glb_ZA_PF_AN_MX_ABT
315 ,(glb_ZA_PF_MX_PRC / 100 * nti_PerRfiCon)
316 );
317 -- Calculate Period Pension Fund Abatement
318 nti_PerPenFndAbm := LEAST(nti_PerPenFnd, nti_PerPenFndMax);
319
320 -- Annual Calculation
321 --
322 -- Annual Pension Fund Contribution
323 nti_AnnPenFnd := nti_PerPenFnd + bal_ANN_PF_CMTD;
324 -- Annual Rfi Contribution
325 nti_AnnRfiCon := nti_PerRfiCon + bal_TOT_RFI_AN_INC_CMTD;
326 -- Calculate the Pension Fund Maximum
327 nti_AnnPenFndMax := GREATEST(glb_ZA_PF_AN_MX_ABT
328 ,glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiCon
329 );
330 -- Calculate Annual Pension Fund Abatement
331 nti_AnnPenFndAbm := LEAST(nti_AnnPenFnd,nti_AnnPenFndMax);
332
333 -- Arrear Pension Fund Abatement
334 --
335 -- Check Arrear Pension Fund Frequency
336 IF dbi_ARR_PF_FRQ = 'M' THEN
337 hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',5);
338 nti_ArrPenFnd := (bal_ARR_PF_CMTD * nti_SitFactor) + bal_EXC_ARR_PEN_ITD;
339 ELSE
340 hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',6);
341 nti_ArrPenFnd := bal_ARR_PF_CMTD + bal_EXC_ARR_PEN_ITD;
342 END IF;
343 -- Calculate the Abatement
344 nti_ArrPenFndAbm := LEAST(nti_ArrPenFnd, glb_ZA_ARR_PF_AN_MX_ABT);
345
346 -- Retirement Annuity Abatement
347 --
348 -- Calculate RA Contribution
349 IF dbi_RA_FRQ = 'M' THEN
350 hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',7);
351 nti_RetAnu := bal_CUR_RA_CMTD * nti_SitFactor;
352 ELSE
353 hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',8);
354 nti_RetAnu := bal_CUR_RA_CMTD;
355 END IF;
356 -- Calculate Nrfi Contribution based on Pension Fund
357 -- Contributions
358 IF bal_CUR_PF_CMTD = 0 THEN
359 hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',9);
360 nti_NrfiCon :=
361 (( bal_TOT_RFI_INC_CMTD
362 + bal_TOT_NRFI_INC_CMTD)* nti_SitFactor)
363 + bal_TOT_NRFI_AN_INC_CMTD
364 + bal_TOT_RFI_AN_INC_CMTD;
365 ELSE
366 hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',10);
367 nti_NrfiCon := (bal_TOT_NRFI_INC_CMTD * nti_SitFactor) + bal_TOT_NRFI_AN_INC_CMTD;
368 END IF;
369 -- Calculate the Retirement Annuity Maximum
370 nti_RetAnuMax := GREATEST(glb_ZA_PF_AN_MX_ABT
371 ,glb_ZA_RA_AN_MX_ABT - nti_AnnPenFndAbm
372 ,glb_ZA_RA_MX_PRC / 100 * nti_NrfiCon
373 );
374 -- Calculate Retirement Annuity Abatement
375 nti_RetAnuAbm := LEAST(nti_RetAnu, nti_RetAnuMax);
376
377 -- Arrear Retirement Annuity Abatement
378 --
379 -- Check Arrear Retirement Annuity Frequency
380 IF dbi_ARR_RA_FRQ = 'M' THEN
381 hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',11);
382 nti_ArrRetAnu := (bal_ARR_RA_CMTD * nti_SitFactor) + bal_EXC_ARR_RA_ITD;
383 ELSE
384 hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',12);
385 nti_ArrRetAnu := bal_ARR_RA_CMTD + bal_EXC_ARR_RA_ITD;
386 END IF;
387 -- Calculate the Abatement
388 nti_ArrRetAnuAbm := LEAST(nti_ArrRetAnu, glb_ZA_ARR_RA_AN_MX_ABT);
389
390 -- Medical Aid Abatement
391 --
392 -- Calculate the assignments 65 Year Date
393 l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
394 -- Calculate the Abatement
395 IF l_65Year <= dbi_ZA_TX_YR_END THEN
396 hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',13);
397 nti_MedAidAbm := bal_MED_CONTR_CMTD * nti_SitFactor;
398 ELSE
399 hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',14);
400 nti_MedAidAbm := 0;
401 END IF;
402
403 hr_utility.set_location('py_za_tx_01032000.NetTxbIncCalc',15);
404
405 -- Total Abatements
406 --
407 -- Period Total Abatement
408 nti_PerTotAbm := ( nti_PerPenFndAbm
409 + nti_ArrPenFndAbm
410 + nti_RetAnuAbm
411 + nti_ArrRetAnuAbm
412 + nti_MedAidAbm
413 );
414 -- Annual Total Abatements
415 nti_AnnTotAbm := ( nti_AnnPenFndAbm
416 + nti_ArrPenFndAbm
417 + nti_RetAnuAbm
418 + nti_ArrRetAnuAbm
419 + nti_MedAidAbm
420 );
421
422 -- Calculate New O Figures
423 --
424 nti_TxbPerTypInc := nti_PerTypErn - nti_PerTotAbm;
425 nti_TxbAnnTypInc := nti_AnnTypErn - nti_AnnTotAbm;
426
427 -- Deannualise Period O Figure
428 --
429 nti_NetPerTxbInc := nti_TxbPerTypInc / nti_SitFactor;
430 -- Calculate the Net Taxable Annual Type Income
431 --
432 nti_NetAnnTxbInc := nti_TxbAnnTypInc - nti_TxbPerTypInc;
433
434 -- Calculate New Net Taxable Income Balance
435 --
436 trc_NtiUpdFig := (nti_NetPerTxbInc + nti_NetAnnTxbInc) - bal_NET_TXB_INC_CMTD;
437
438 py_za_tx_utl_01032000.WriteHrTrace('nti_SitFactor: '||to_char(nti_SitFactor));
439 py_za_tx_utl_01032000.WriteHrTrace('nti_PerPenFndAbm: '||to_char(nti_PerPenFndAbm));
440 py_za_tx_utl_01032000.WriteHrTrace('nti_AnnPenFndAbm: '||to_char(nti_AnnPenFndAbm));
441 py_za_tx_utl_01032000.WriteHrTrace('nti_ArrPenFndAbm: '||to_char(nti_ArrPenFndAbm));
442 py_za_tx_utl_01032000.WriteHrTrace('nti_RetAnuAbm: '||to_char(nti_RetAnuAbm));
443 py_za_tx_utl_01032000.WriteHrTrace('nti_ArrRetAnuAbm: '||to_char(nti_ArrRetAnuAbm));
444 py_za_tx_utl_01032000.WriteHrTrace('nti_MedAidAbm: '||to_char(nti_MedAidAbm));
445 py_za_tx_utl_01032000.WriteHrTrace('nti_PerTotAbm: '||to_char(nti_PerTotAbm));
446 py_za_tx_utl_01032000.WriteHrTrace('nti_AnnTotAbm: '||to_char(nti_AnnTotAbm));
447 py_za_tx_utl_01032000.WriteHrTrace('nti_PerTypErn: '||to_char(nti_PerTypErn));
448 py_za_tx_utl_01032000.WriteHrTrace('nti_AnnTypErn: '||to_char(nti_AnnTypErn));
449 py_za_tx_utl_01032000.WriteHrTrace('nti_NetPerTxbInc: '||to_char(nti_NetPerTxbInc));
450 py_za_tx_utl_01032000.WriteHrTrace('nti_NetAnnTxbInc: '||to_char(nti_NetAnnTxbInc));
451 py_za_tx_utl_01032000.WriteHrTrace('bal_NET_TXB_INC_CMTD: '||to_char(bal_NET_TXB_INC_CMTD));
452 py_za_tx_utl_01032000.WriteHrTrace('trc_NtiUpdFig: '||to_char(trc_NtiUpdFig));
453
454 EXCEPTION
455 WHEN OTHERS THEN
456 IF xpt_Msg = 'No Error' THEN
457 xpt_Msg := 'NetTxbIncCalc: '||TO_CHAR(SQLCODE);
458 END IF;
459 RAISE xpt_E;
460 END NetTxbIncCalc;
461
462
463 FUNCTION ZaTxOvr_01032000(
464 p_OvrTyp IN VARCHAR2
465 ,p_TxOnNI IN NUMBER DEFAULT 0
466 ,p_TxOnAP IN NUMBER DEFAULT 0
467 ,p_TxPrc IN NUMBER DEFAULT 0
468 )RETURN NUMBER
469 AS
470 l_Dum NUMBER := 1;
471 BEGIN
472 -- Set the Override Global
473 trc_OvrTxCalc := TRUE;
474
475 -- Set Override Values
476 trc_OvrTyp := p_OvrTyp;
477
478 IF p_OvrTyp = 'V' THEN
479 trc_LibFpNI := p_TxOnNI;
480 trc_LibFpAP := p_TxOnAP;
481 ELSIF p_OvrTyp = 'P' THEN
482 trc_OvrPrc := p_TxPrc;
483 END IF;
484 RETURN l_Dum;
485
486 EXCEPTION
487 WHEN OTHERS THEN
488 hr_utility.set_message(801, 'ZaTxOvr_01032000: '||TO_CHAR(SQLCODE));
489 hr_utility.raise_error;
490 END ZaTxOvr_01032000;
491
492 -- Main Tax Calculations
493 --
494 --
495 --
496 --
497 --
498 --
499
500 PROCEDURE LteCalc AS
501
502 -- Variables
503 l_EndDate DATE;
504 l_StrtDte DATE;
505 l_65Year DATE;
506 l_ZA_TX_YR_END DATE;
507 l_ZA_ADL_TX_RBT NUMBER;
508 l_ZA_PRI_TX_RBT NUMBER;
509 l_ZA_PRI_TX_THRSHLD NUMBER;
510 l_ZA_SC_TX_THRSHLD NUMBER;
511
512 l_Sl BOOLEAN;
513 l_Np NUMBER(15,2) DEFAULT 0;
514
515
516 -- Private Functions
517 --
518 FUNCTION getBalVal
519 (p_BalNme IN pay_balance_types.balance_name%TYPE
520 ,p_EffDte IN DATE
521 ) RETURN NUMBER
522 AS
523 -- Variables
524 l_BalVal NUMBER(15,2);
525 l_BalTypId pay_balance_types.balance_type_id%TYPE;
526 l_dimension pay_balance_dimensions.dimension_name%TYPE ;
527
528 BEGIN
529 hr_utility.set_location('py_za_tx_01032000.LteCalc',1);
530 -- Get the Balance Type ID
531 SELECT pbt.balance_type_id
532 INTO l_BalTypId
533 FROM pay_balance_types pbt
534 WHERE pbt.balance_name = p_BalNme;
535
536 hr_utility.set_location('py_za_tx_01032000.LteCalc',2);
537
538 -- Get the Balance Value
539 -- 3491357
540 /*l_BalVal := py_za_bal.calc_asg_tax_ytd_date
541 ( con_ASG_ID
542 , l_BalTypId
543 , p_EffDte
544 );*/
545 l_dimension := '_ASG_TAX_YTD';
546 l_BalVal := py_za_bal.get_balance_value
547 ( con_ASG_ID
548 , l_BalTypId
549 , l_dimension
550 , p_EffDte
551 );
552 RETURN l_BalVal;
553 END getBalVal;
554
555 FUNCTION getBalVal2
556 (p_BalNme IN pay_balance_types.balance_name%TYPE
557 ,p_EffDte IN DATE
558 ) RETURN NUMBER
559 AS
560 -- Variables
561 l_BalVal NUMBER(15,2);
562 l_BalTypId pay_balance_types.balance_type_id%TYPE;
563 l_dimension pay_balance_dimensions.dimension_name%TYPE ;
564 BEGIN
565 hr_utility.set_location('py_za_tx_01032000.LteCalc',3);
566 -- Get the Balance Type ID
567 SELECT pbt.balance_type_id
568 INTO l_BalTypId
569 FROM pay_balance_types pbt
570 WHERE pbt.balance_name = p_BalNme;
571
572 hr_utility.set_location('py_za_tx_01032000.LteCalc',4);
573
574 -- Get the Balance Value
575 -- 3491357
576 /*l_BalVal := py_za_bal.calc_asg_itd_date
577 ( con_ASG_ID
578 , l_BalTypId
579 , p_EffDte
580 );*/
581 l_dimension := '_ASG_ITD';
582 l_BalVal := py_za_bal.get_balance_value
583 ( con_ASG_ID
584 , l_BalTypId
585 , l_dimension
586 , p_EffDte
587 );
588 RETURN l_BalVal;
589 END getBalVal2;
590
591 BEGIN
592 hr_utility.set_location('py_za_tx_01032000.LteCalc',5);
593 -- Does the Assignment have an OFigure?
594 --
595 IF bal_TOT_TXB_INC_ITD <= 0 THEN
596 hr_utility.set_location('py_za_tx_01032000.LteCalc',6);
597 -- Calculate the 'O' Figure
598 -- Set the Global
599 trc_CalTyp := 'PstCalc';
600 -- Set the Site Factor to the value of the previous tax year
601 -- Get the tax year start date
602 SELECT min(ptp.start_date)
603 INTO l_StrtDte
604 FROM per_time_periods ptp
605 WHERE ptp.prd_information1 = trc_AsgTxYear
606 AND ptp.payroll_id = con_PRL_ID;
607
608 hr_utility.set_location('py_za_tx_01032000.LteCalc',7);
609
610 -- Get the tax year end date
611 SELECT max(ptp.end_date)
612 INTO l_EndDate
613 FROM per_time_periods ptp
614 WHERE ptp.prd_information1 = trc_AsgTxYear
615 AND ptp.payroll_id = con_PRL_ID;
616
617 hr_utility.set_location('py_za_tx_01032000.LteCalc',8);
618
619 trc_SitFactor := (l_EndDate - l_StrtDte + 1) / py_za_tx_utl_01032000.DaysWorked;
620
621 -- Get the assignment's previous tax year end date
622 SELECT MAX(ptp.end_date) "EndDate"
623 INTO l_EndDate
624 FROM per_time_periods ptp
625 WHERE ptp.payroll_id = con_PRL_ID
626 AND ptp.prd_information1 = trc_AsgTxYear
627 GROUP BY ptp.prd_information1;
628
629 hr_utility.set_location('py_za_tx_01032000.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_AB_NRFI_PTD := getBalVal('Annual Bonus NRFI',l_EndDate);
636 bal_AB_RFI_PTD := getBalVal('Annual Bonus RFI',l_EndDate);
637 bal_AC_NRFI_PTD := getBalVal('Annual Commission NRFI',l_EndDate);
638 bal_AC_RFI_PTD := getBalVal('Annual Commission RFI',l_EndDate);
639 bal_ANN_PF_PTD := getBalVal('Annual Pension Fund',l_EndDate);
640 bal_ANU_FRM_RET_FND_NRFI_PTD := getBalVal('Annuity from Retirement Fund NRFI',l_EndDate);
641 bal_ANU_FRM_RET_FND_RFI_PTD := getBalVal('Annuity from Retirement Fund RFI',l_EndDate);
642 bal_ARR_PF_PTD := getBalVal('Arrear Pension Fund',l_EndDate);
643 bal_ARR_RA_PTD := getBalVal('Arrear Retirement Annuity',l_EndDate);
644 bal_AST_PRCHD_RVAL_NRFI_PTD := getBalVal('Asset Purchased at Reduced Value NRFI',l_EndDate);
645 bal_AST_PRCHD_RVAL_RFI_PTD := getBalVal('Asset Purchased at Reduced Value RFI',l_EndDate);
646 bal_BP_PTD := getBalVal('Bonus Provision',l_EndDate);
647 bal_BUR_AND_SCH_NRFI_PTD := getBalVal('Bursaries and Scholarships NRFI',l_EndDate);
648 bal_BUR_AND_SCH_RFI_PTD := getBalVal('Bursaries and Scholarships RFI',l_EndDate);
649 bal_COMM_NRFI_PTD := getBalVal('Commission NRFI',l_EndDate);
650 bal_COMM_RFI_PTD := getBalVal('Commission RFI',l_EndDate);
651 bal_COMP_ALL_NRFI_PTD := getBalVal('Computer Allowance NRFI',l_EndDate);
652 bal_COMP_ALL_RFI_PTD := getBalVal('Computer Allowance RFI',l_EndDate);
653 bal_CUR_PF_PTD := getBalVal('Current Pension Fund',l_EndDate);
654 bal_CUR_RA_PTD := getBalVal('Current Retirement Annuity',l_EndDate);
655 bal_ENT_ALL_NRFI_PTD := getBalVal('Entertainment Allowance NRFI',l_EndDate);
656 bal_ENT_ALL_RFI_PTD := getBalVal('Entertainment Allowance RFI',l_EndDate);
657 bal_EXC_ARR_PEN_PTD := getBalVal2('Excess Arrear Pension',l_EndDate);
658 bal_EXC_ARR_RA_PTD := getBalVal2('Excess Arrear Retirement Annuity',l_EndDate);
659 bal_FREE_ACCOM_NRFI_PTD := getBalVal('Free or Cheap Accommodation NRFI',l_EndDate);
660 bal_FREE_ACCOM_RFI_PTD := getBalVal('Free or Cheap Accommodation RFI',l_EndDate);
661 bal_FREE_SERV_NRFI_PTD := getBalVal('Free or Cheap Services NRFI',l_EndDate);
662 bal_FREE_SERV_RFI_PTD := getBalVal('Free or Cheap Services RFI',l_EndDate);
663 bal_LOW_LOANS_NRFI_PTD := getBalVal('Low or Interest Free Loans NRFI',l_EndDate);
664 bal_LOW_LOANS_RFI_PTD := getBalVal('Low or Interest Free Loans RFI',l_EndDate);
665 bal_MLS_AND_VOUCH_NRFI_PTD := getBalVal('Meals Refreshments and Vouchers NRFI',l_EndDate);
666 bal_MLS_AND_VOUCH_RFI_PTD := getBalVal('Meals Refreshments and Vouchers RFI',l_EndDate);
667 bal_MED_CONTR_PTD := getBalVal('Medical Aid Contribution',l_EndDate);
668 bal_MED_PAID_NRFI_PTD := getBalVal('Medical Aid Paid on Behalf of Employee NRFI',l_EndDate);
669 bal_MED_PAID_RFI_PTD := getBalVal('Medical Aid Paid on Behalf of Employee RFI',l_EndDate);
670 bal_OTHER_TXB_ALL_NRFI_PTD := getBalVal('Other Taxable Allowance NRFI',l_EndDate);
671 bal_OTHER_TXB_ALL_RFI_PTD := getBalVal('Other Taxable Allowance RFI',l_EndDate);
672 bal_OVTM_NRFI_PTD := getBalVal('Overtime NRFI',l_EndDate);
673 bal_OVTM_RFI_PTD := getBalVal('Overtime RFI',l_EndDate);
674 bal_PYM_DBT_NRFI_PTD := getBalVal('Payment of Employee Debt NRFI',l_EndDate);
675 bal_PYM_DBT_RFI_PTD := getBalVal('Payment of Employee Debt RFI',l_EndDate);
676 bal_PO_NRFI_PTD := getBalVal('Public Office Allowance NRFI',l_EndDate);
677 bal_PO_RFI_PTD := getBalVal('Public Office Allowance RFI',l_EndDate);
678 bal_PRCH_ANU_TXB_NRFI_PTD := getBalVal('Purchased Annuity Taxable NRFI',l_EndDate);
679 bal_PRCH_ANU_TXB_RFI_PTD := getBalVal('Purchased Annuity Taxable RFI',l_EndDate);
680 bal_RGT_AST_NRFI_PTD := getBalVal('Right of Use of Asset NRFI',l_EndDate);
681 bal_RGT_AST_RFI_PTD := getBalVal('Right of Use of Asset RFI',l_EndDate);
682 bal_TXB_AP_NRFI_PTD := getBalVal('Taxable Annual Payment NRFI',l_EndDate);
683 bal_TXB_AP_RFI_PTD := getBalVal('Taxable Annual Payment RFI',l_EndDate);
684 bal_TXB_INC_NRFI_PTD := getBalVal('Taxable Income NRFI',l_EndDate);
685 bal_TXB_INC_RFI_PTD := getBalVal('Taxable Income RFI',l_EndDate);
686 bal_TXB_PEN_NRFI_PTD := getBalVal('Taxable Pension NRFI',l_EndDate);
687 bal_TXB_PEN_RFI_PTD := getBalVal('Taxable Pension RFI',l_EndDate);
688 bal_TEL_ALL_NRFI_PTD := getBalVal('Telephone Allowance NRFI',l_EndDate);
689 bal_TEL_ALL_RFI_PTD := getBalVal('Telephone Allowance RFI',l_EndDate);
690 bal_TOOL_ALL_NRFI_PTD := getBalVal('Tool Allowance NRFI',l_EndDate);
691 bal_TOOL_ALL_RFI_PTD := getBalVal('Tool Allowance RFI',l_EndDate);
692 bal_TOT_INC_PTD := getBalVal('Total Income',l_EndDate);
693 bal_TOT_NRFI_AN_INC_PTD := getBalVal('Total NRFIable Annual Income',l_EndDate);
694 bal_TOT_NRFI_INC_PTD := getBalVal('Total NRFIable Income',l_EndDate);
695 bal_TOT_RFI_AN_INC_PTD := getBalVal('Total RFIable Annual Income',l_EndDate);
696 bal_TOT_RFI_INC_PTD := getBalVal('Total RFIable Income',l_EndDate);
697 bal_TA_NRFI_PTD := getBalVal('Travel Allowance NRFI',l_EndDate);
698 bal_TA_RFI_PTD := getBalVal('Travel Allowance RFI',l_EndDate);
699 bal_USE_VEH_NRFI_PTD := getBalVal('Use of Motor Vehicle NRFI',l_EndDate);
700 bal_USE_VEH_RFI_PTD := getBalVal('Use of Motor Vehicle RFI',l_EndDate);
701
702 hr_utility.set_location('py_za_tx_01032000.LteCalc',10);
703
704 -- Update Globals with Correct Taxable Values
705 py_za_tx_utl_01032000.TrvAll;
706
707 bal_PO_NRFI_PTD := bal_PO_NRFI_PTD * py_za_tx_utl_01032000.GlbVal('ZA_PUBL_TAX_PERC',l_EndDate) / 100;
708 bal_PO_RFI_PTD := bal_PO_RFI_PTD * py_za_tx_utl_01032000.GlbVal('ZA_PUBL_TAX_PERC',l_EndDate) / 100;
709
710 hr_utility.set_location('py_za_tx_01032000.LteCalc',11);
711
712 -- Rebates
713 py_za_tx_utl_01032000.SetRebates;
714 -- Abatements
715 py_za_tx_utl_01032000.Abatements;
716
717 hr_utility.set_location('py_za_tx_01032000.LteCalc',12);
718
719 -- Base Earnings
720 --
721 trc_BseErn :=
722 (( bal_AST_PRCHD_RVAL_NRFI_PTD
723 + bal_AST_PRCHD_RVAL_RFI_PTD
724 + bal_BP_PTD
725 + bal_BUR_AND_SCH_NRFI_PTD
726 + bal_BUR_AND_SCH_RFI_PTD
727 + bal_COMM_NRFI_PTD
728 + bal_COMM_RFI_PTD
729 + bal_COMP_ALL_NRFI_PTD
730 + bal_COMP_ALL_RFI_PTD
731 + bal_ENT_ALL_NRFI_PTD
732 + bal_ENT_ALL_RFI_PTD
733 + bal_FREE_ACCOM_NRFI_PTD
734 + bal_FREE_ACCOM_RFI_PTD
735 + bal_FREE_SERV_NRFI_PTD
736 + bal_FREE_SERV_RFI_PTD
737 + bal_LOW_LOANS_NRFI_PTD
738 + bal_LOW_LOANS_RFI_PTD
739 + bal_MED_PAID_NRFI_PTD
740 + bal_MED_PAID_RFI_PTD
741 + bal_MLS_AND_VOUCH_NRFI_PTD
742 + bal_MLS_AND_VOUCH_RFI_PTD
743 + bal_OTHER_TXB_ALL_NRFI_PTD
744 + bal_OTHER_TXB_ALL_RFI_PTD
745 + bal_OVTM_NRFI_PTD
746 + bal_OVTM_RFI_PTD
747 + bal_PO_NRFI_PTD
748 + bal_PO_RFI_PTD
749 + bal_PYM_DBT_NRFI_PTD
750 + bal_PYM_DBT_RFI_PTD
751 + bal_RGT_AST_NRFI_PTD
752 + bal_RGT_AST_RFI_PTD
753 + bal_TA_NRFI_PTD
754 + bal_TA_RFI_PTD
755 + bal_TEL_ALL_NRFI_PTD
756 + bal_TEL_ALL_RFI_PTD
757 + bal_TOOL_ALL_NRFI_PTD
758 + bal_TOOL_ALL_RFI_PTD
759 + bal_TXB_INC_NRFI_PTD
760 + bal_TXB_INC_RFI_PTD
761 + bal_TXB_PEN_NRFI_PTD
762 + bal_TXB_PEN_RFI_PTD
763 + bal_USE_VEH_NRFI_PTD
764 + bal_USE_VEH_RFI_PTD)* trc_SitFactor)
765 + bal_AB_NRFI_PTD
766 + bal_AB_RFI_PTD
767 + bal_AC_NRFI_PTD
768 + bal_AC_RFI_PTD
769 + bal_ANU_FRM_RET_FND_NRFI_PTD
770 + bal_ANU_FRM_RET_FND_RFI_PTD
771 + bal_PRCH_ANU_TXB_NRFI_PTD
772 + bal_PRCH_ANU_TXB_RFI_PTD
773 + bal_TXB_AP_NRFI_PTD
774 + bal_TXB_AP_RFI_PTD;
775
776 -- Taxable Base Income
777 trc_TxbBseInc := trc_BseErn - trc_AnnTotAbm;
778 -- Threshold Check
779 IF trc_TxbBseInc >= trc_Threshold THEN
780 hr_utility.set_location('py_za_tx_01032000.LteCalc',13);
781 -- Tax Liability
782 trc_TotLibBse := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbBseInc);
783 ELSE
784 hr_utility.set_location('py_za_tx_01032000.LteCalc',14);
785 trc_TotLibBse := 0;
786 END IF;
787
788 -- Populate the O Figure
789 trc_OUpdFig := trc_TxbBseInc - bal_TOT_TXB_INC_ITD;
790
791 -- Base Income
792 py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
793 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
794 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
795
796 ELSE
797 hr_utility.set_location('py_za_tx_01032000.LteCalc',15);
798 -- Use the 'O' Figure as Base
799 -- Set the Global
800 trc_CalTyp := 'LteCalc';
801
802 -- Get the assignment's previous tax year's
803 -- threshold and rebate figures
804 -- Employee Tax Year Start and End Dates
805 SELECT MAX(ptp.end_date) "EndDate"
806 INTO l_EndDate
807 FROM per_time_periods ptp
808 WHERE ptp.payroll_id = con_PRL_ID
809 AND ptp.prd_information1 = trc_AsgTxYear
810 GROUP BY ptp.prd_information1;
811
812 hr_utility.set_location('py_za_tx_01032000.LteCalc',16);
813
814 -- Global Values
815 l_ZA_TX_YR_END := l_EndDate;
816 l_ZA_ADL_TX_RBT := py_za_tx_utl_01032000.GlbVal('ZA_ADDITIONAL_TAX_REBATE',l_EndDate);
817 l_ZA_PRI_TX_RBT := py_za_tx_utl_01032000.GlbVal('ZA_PRIMARY_TAX_REBATE',l_EndDate);
818 l_ZA_PRI_TX_THRSHLD := py_za_tx_utl_01032000.GlbVal('ZA_PRIM_TAX_THRESHOLD',l_EndDate);
819 l_ZA_SC_TX_THRSHLD := py_za_tx_utl_01032000.GlbVal('ZA_SEC_TAX_THRESHOLD',l_EndDate);
820
821 -- Calculate the assignments 65 Year Date
822 l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
823
824 IF l_65Year <= l_ZA_TX_YR_END THEN
825 hr_utility.set_location('py_za_tx_01032000.LteCalc',17);
826 -- give the extra abatement
827 trc_Rebate := l_ZA_PRI_TX_RBT + l_ZA_ADL_TX_RBT;
828 trc_Threshold := l_ZA_SC_TX_THRSHLD;
829 ELSE
830 hr_utility.set_location('py_za_tx_01032000.LteCalc',18);
831 -- not eligable for extra abatement
832 trc_Rebate := l_ZA_PRI_TX_RBT;
833 trc_Threshold := l_ZA_PRI_TX_THRSHLD;
834 END IF;
835
836
837 -- Base Earnings
838 --
839 -- Take the OFigure as Taxable Base Income
840 trc_TxbBseInc := bal_TOT_TXB_INC_ITD;
841 -- Threshold Check
842 IF trc_TxbBseInc >= trc_Threshold THEN
843 hr_utility.set_location('py_za_tx_01032000.LteCalc',19);
844 -- Tax Liability
845 trc_TotLibBse := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbBseInc);
846 ELSE
847 hr_utility.set_location('py_za_tx_01032000.LteCalc',20);
848 trc_TotLibBse := 0;
849 END IF;
850
851 -- Base Income
852 py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
853 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
854 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
855 END IF;
856
857 -- Override the Global
858 trc_CalTyp := 'LteCalc';
859 -- Set the SitFactor back to 1
860 trc_SitFactor := 1;
861
862 hr_utility.set_location('py_za_tx_01032000.LteCalc',21);
863
864 -- Rebates
865 py_za_tx_utl_01032000.SetRebates;
866 -- Abatements
867 py_za_tx_utl_01032000.Abatements;
868
869 hr_utility.set_location('py_za_tx_01032000.LteCalc',22);
870
871 -- Update Global Balance Values with correct TAXABLE values
872 py_za_tx_utl_01032000.TrvAll;
873
874 bal_PO_RFI_YTD := bal_PO_RFI_YTD * glb_ZA_PBL_TX_PRC / 100;
875 bal_PO_NRFI_YTD := bal_PO_NRFI_YTD * glb_ZA_PBL_TX_PRC / 100;
876
877 -- Normal Income
878 --
879 -- Ytd Normal Income
880 trc_NorIncYtd :=
881 ( bal_COMM_NRFI_YTD
882 + bal_COMM_RFI_YTD
883 + bal_COMP_ALL_NRFI_YTD
884 + bal_COMP_ALL_RFI_YTD
885 + bal_ENT_ALL_NRFI_YTD
886 + bal_ENT_ALL_RFI_YTD
887 + bal_OTHER_TXB_ALL_NRFI_YTD
888 + bal_OTHER_TXB_ALL_RFI_YTD
889 + bal_OVTM_NRFI_YTD
890 + bal_OVTM_RFI_YTD
891 + bal_TXB_INC_NRFI_YTD
892 + bal_TXB_INC_RFI_YTD
893 + bal_TXB_PEN_NRFI_YTD
894 + bal_TXB_PEN_RFI_YTD
895 + bal_TEL_ALL_NRFI_YTD
896 + bal_TEL_ALL_RFI_YTD
897 + bal_TOOL_ALL_NRFI_YTD
898 + bal_TOOL_ALL_RFI_YTD
899 );
900 -- Skip the calculation if there is No Income
901 IF trc_NorIncYtd <> 0 THEN
902 hr_utility.set_location('py_za_tx_01032000.LteCalc',23);
903 -- Normal Earnings
904 trc_NorErn := trc_NorIncYtd + trc_TxbBseInc;
905 -- Taxable Normal Income
906 trc_TxbNorInc := trc_NorErn - trc_PerTotAbm;
907 -- Threshold Check
908 IF trc_TxbNorInc >= trc_Threshold THEN
909 hr_utility.set_location('py_za_tx_01032000.LteCalc',24);
910 -- Tax Liability
911 trc_TotLibNI := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbNorInc);
912 trc_LibFyNI := trc_TotLibNI - least(trc_TotLibNI,trc_TotLibBse);
913 trc_LibFpNI := trc_LibFyNI - bal_TX_ON_NI_YTD;
914 ELSE
915 hr_utility.set_location('py_za_tx_01032000.LteCalc',25);
916 trc_TotLibNI := 0;
917 -- Refund any tax paid
918 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
919 trc_NpValNIOvr := TRUE;
920 END IF;
921 ELSE
922 hr_utility.set_location('py_za_tx_01032000.LteCalc',26);
923 trc_NorErn := trc_TxbBseInc;
924 trc_TxbNorInc := 0;
925 trc_TotLibNI := trc_TotLibBse;
926 -- Refund any tax paid
927 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
928 trc_NpValNIOvr := TRUE;
929 END IF;
930
931 -- Fringe Benefits
932 --
933 -- Ytd Fringe Benefits
934 trc_FrnBenYtd :=
935 ( bal_AST_PRCHD_RVAL_NRFI_YTD
936 + bal_AST_PRCHD_RVAL_RFI_YTD
937 + bal_BUR_AND_SCH_NRFI_YTD
938 + bal_BUR_AND_SCH_RFI_YTD
939 + bal_FREE_ACCOM_NRFI_YTD
940 + bal_FREE_ACCOM_RFI_YTD
941 + bal_FREE_SERV_NRFI_YTD
942 + bal_FREE_SERV_RFI_YTD
943 + bal_LOW_LOANS_NRFI_YTD
944 + bal_LOW_LOANS_RFI_YTD
945 + bal_MLS_AND_VOUCH_NRFI_YTD
946 + bal_MLS_AND_VOUCH_RFI_YTD
947 + bal_MED_PAID_NRFI_YTD
948 + bal_MED_PAID_RFI_YTD
949 + bal_PYM_DBT_NRFI_YTD
950 + bal_PYM_DBT_RFI_YTD
951 + bal_RGT_AST_NRFI_YTD
952 + bal_RGT_AST_RFI_YTD
953 + bal_USE_VEH_NRFI_YTD
954 + bal_USE_VEH_RFI_YTD
955 );
956 -- Skip the calculation if there is No Income
957 IF trc_FrnBenYtd <> 0 THEN
958 hr_utility.set_location('py_za_tx_01032000.LteCalc',27);
959 -- Fringe Benefit Earnings
960 trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
961 -- Taxable Fringe Income
962 trc_TxbFrnInc := trc_FrnBenErn - trc_PerTotAbm;
963 -- Threshold Check
964 IF trc_TxbFrnInc >= trc_Threshold THEN
965 hr_utility.set_location('py_za_tx_01032000.LteCalc',28);
966 -- Tax Liability
967 trc_TotLibFB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbFrnInc);
968 trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
969 trc_LibFpFB := trc_LibFyFB - bal_TX_ON_FB_YTD;
970 ElSE
971 hr_utility.set_location('py_za_tx_01032000.LteCalc',29);
972 trc_TotLibFB := trc_TotLibNI;
973 -- Refund any tax paid
974 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
975 trc_NpValFBOvr := TRUE;
976 END IF;
977 ELSE
978 hr_utility.set_location('py_za_tx_01032000.LteCalc',30);
979 trc_FrnBenErn := trc_NorErn;
980 trc_TxbFrnInc := trc_TxbNorInc;
981 trc_TotLibFB := trc_TotLibNI;
982 -- Refund any tax paid
983 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
984 trc_NpValFBOvr := TRUE;
985 END IF;
986
987 -- Travel allowance
988 --
989 -- Ytd Travel Allowance
990 trc_TrvAllYtd :=
991 ( bal_TA_NRFI_YTD
992 + bal_TA_RFI_YTD
993 );
994 -- Skip the calculation if there is No Income
995 IF trc_TrvAllYtd <> 0 THEN
996 hr_utility.set_location('py_za_tx_01032000.LteCalc',31);
997 -- Travel Earnings
998 trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
999 -- Taxable Travel Income
1000 trc_TxbTrvInc := trc_TrvAllErn - trc_PerTotAbm;
1001 -- Threshold Check
1002 IF trc_TxbTrvInc >= trc_Threshold THEN
1003 hr_utility.set_location('py_za_tx_01032000.LteCalc',32);
1004 -- Tax Liability
1005 trc_TotLibTA := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbTrvInc);
1006 trc_LibFyTA := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
1007 trc_LibFpTA := trc_LibFyTA - bal_TX_ON_TA_YTD;
1008 ELSE
1009 hr_utility.set_location('py_za_tx_01032000.LteCalc',33);
1010 trc_TotLibTA := trc_TotLibFB;
1011 -- Refund any tax paid
1012 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
1013 trc_NpValTAOvr := TRUE;
1014 END IF;
1015 ELSE
1016 hr_utility.set_location('py_za_tx_01032000.LteCalc',34);
1017 trc_TrvAllErn := trc_FrnBenErn;
1018 trc_TxbTrvInc := trc_TxbFrnInc;
1019 trc_TotLibTA := trc_TotLibFB;
1020 -- Refund any tax paid
1021 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
1022 trc_NpValTAOvr := TRUE;
1023 END IF;
1024
1025 -- Annual Bonus
1026 --
1027 -- Ytd Annual Bonus
1028 trc_AnnBonYtd :=
1029 ( bal_AB_NRFI_YTD
1030 + bal_AB_RFI_YTD
1031 );
1032 -- Skip the calculation if there is No Income
1033 IF trc_AnnBonYtd <> 0 THEN
1034 hr_utility.set_location('py_za_tx_01032000.LteCalc',35);
1035 -- Annual Bonus Earnings
1036 trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
1037 -- Taxable Annual Bonus Income
1038 trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
1039 -- Threshold Check
1040 IF trc_TxbAnnBonInc >= trc_Threshold THEN
1041 hr_utility.set_location('py_za_tx_01032000.LteCalc',36);
1042 -- Tax Liability
1043 trc_TotLibAB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnBonInc);
1044 trc_LibFyAB := trc_TotLibAB - trc_TotLibTA;
1045 -- Negative Check
1046 IF trc_LibFyAB < 0 THEN
1047 hr_utility.set_location('py_za_tx_01032000.LteCalc',37);
1048 trc_TotLibAB := trc_TotLibTA;
1049 -- Refund any tax paid
1050 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1051 trc_NpValABOvr := TRUE;
1052 ELSE
1053 hr_utility.set_location('py_za_tx_01032000.LteCalc',38);
1054 trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
1055 END IF;
1056 ELSE
1057 hr_utility.set_location('py_za_tx_01032000.LteCalc',39);
1058 trc_TotLibAB := trc_TotLibTA;
1059 -- Refund any tax paid
1060 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1061 trc_NpValABOvr := TRUE;
1062 END IF;
1063 ELSE
1064 hr_utility.set_location('py_za_tx_01032000.LteCalc',40);
1065 trc_AnnBonErn := trc_TrvAllErn;
1066 trc_TxbAnnBonInc := trc_TxbTrvInc;
1067 trc_TotLibAB := trc_TotLibTA;
1068 -- Refund any tax paid
1069 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1070 trc_NpValABOvr := TRUE;
1071 END IF;
1072
1073 -- Annual Payments
1074 --
1075 -- Ytd Annual Payments
1076 trc_AnnPymYtd :=
1077 ( bal_AC_NRFI_YTD
1078 + bal_AC_RFI_YTD
1079 + bal_ANU_FRM_RET_FND_NRFI_YTD
1080 + bal_ANU_FRM_RET_FND_RFI_YTD
1081 + bal_PRCH_ANU_TXB_NRFI_YTD
1082 + bal_PRCH_ANU_TXB_RFI_YTD
1083 + bal_TXB_AP_NRFI_YTD
1084 + bal_TXB_AP_RFI_YTD
1085 );
1086 -- Skip the calculation if there is No Income
1087 IF trc_AnnPymYtd <> 0 THEN
1088 hr_utility.set_location('py_za_tx_01032000.LteCalc',41);
1089 -- Annual Payments Earnings
1090 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
1091 -- Taxable Annual Payments Income
1092 trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
1093 -- Threshold Check
1094 IF trc_TxbAnnPymInc >= trc_Threshold THEN
1095 hr_utility.set_location('py_za_tx_01032000.LteCalc',42);
1096 -- Tax Liability
1097 trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1098 trc_LibFyAP := trc_TotLibAP - trc_TotLibAB;
1099 -- Negative Check
1100 IF trc_LibFyAP < 0 THEN
1101 hr_utility.set_location('py_za_tx_01032000.LteCalc',43);
1102 trc_TotLibAP := trc_TotLibAB;
1103 -- Refund any tax paid
1104 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
1105 trc_NpValAPOvr := TRUE;
1106 ELSE
1107 hr_utility.set_location('py_za_tx_01032000.LteCalc',44);
1108 trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
1109 END IF;
1110 ELSE
1111 hr_utility.set_location('py_za_tx_01032000.LteCalc',45);
1112 trc_TotLibAP := trc_TotLibAB;
1113 -- Refund any tax paid
1114 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
1115 trc_NpValAPOvr := TRUE;
1116 END IF;
1117 ELSE
1118 hr_utility.set_location('py_za_tx_01032000.LteCalc',46);
1119 trc_AnnPymErn := trc_AnnBonErn;
1120 trc_TxbAnnPymInc := trc_TxbAnnBonInc;
1121 trc_TotLibAP := trc_TotLibAB;
1122 -- Refund any tax paid
1123 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
1124 trc_NpValAPOvr := TRUE;
1125 END IF;
1126
1127 -- Public Office Allowance
1128 --
1129 -- Ytd Public Office Allowance
1130 trc_PblOffYtd :=
1131 ( bal_PO_NRFI_YTD
1132 + bal_PO_RFI_YTD
1133 );
1134 -- Skip the calculation if there is No Income
1135 IF trc_PblOffYtd <> 0 THEN
1136 hr_utility.set_location('py_za_tx_01032000.LteCalc',47);
1137 -- Public Office Earnings
1138 trc_PblOffErn := trc_PblOffYtd;
1139 -- Tax Liability
1140 trc_LibFyPO := trc_PblOffErn * glb_ZA_PBL_TX_RTE / 100;
1141 trc_LibFpPO := trc_LibFyPO - bal_TX_ON_PO_YTD;
1142 ELSE
1143 hr_utility.set_location('py_za_tx_01032000.LteCalc',48);
1144 trc_LibFyPO := 0;
1145 -- Refund any tax paid
1146 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
1147 trc_NpValPOOvr := TRUE;
1148 END IF;
1149
1150 -- Net Pay Validation
1151 --
1152 -- Net Pay of the Employee
1153 l_Np := bal_NET_PAY_RUN;
1154 -- Site Limit Check
1155 IF trc_TxbAnnPymInc + trc_PblOffErn < glb_ZA_SIT_LIM THEN
1156 hr_utility.set_location('py_za_tx_01032000.LteCalc',49);
1157 l_Sl := TRUE;
1158 ELSE
1159 hr_utility.set_location('py_za_tx_01032000.LteCalc',50);
1160 l_Sl := FALSE;
1161 END IF;
1162
1163 py_za_tx_utl_01032000.NpVal(p_Rf => l_Sl);
1164
1165 -- Set IT3A Indicator
1166 --
1167 IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
1168 hr_utility.set_location('py_za_tx_01032000.LteCalc',51);
1169 trc_It3Ind := 0; -- Over Lim
1170 ELSE
1171 hr_utility.set_location('py_za_tx_01032000.LteCalc',52);
1172 trc_It3Ind := 1; -- Under Lim
1173 END IF;
1174
1175 -- Normal Income
1176 py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
1177 py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
1178 py_za_tx_utl_01032000.WriteHrTrace('trc_NorErn: '||to_char(trc_NorErn));
1179 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
1180 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibNI: '||to_char(trc_TotLibNI));
1181 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyNI: '||to_char(trc_LibFyNI));
1182 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpNI: '||to_char(trc_LibFpNI));
1183 -- Fringe Benefits
1184 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
1185 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
1186 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
1187 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
1188 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibFB: '||to_char(trc_TotLibFB));
1189 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyFB: '||to_char(trc_LibFyFB));
1190 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpFB: '||to_char(trc_LibFpFB));
1191 -- Travel Allowance
1192 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
1193 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
1194 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
1195 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
1196 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibTA: '||to_char(trc_TotLibTA));
1197 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyTA: '||to_char(trc_LibFyTA));
1198 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpTA: '||to_char(trc_LibFpTA));
1199 -- Annual Bonus
1200 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
1201 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
1202 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
1203 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
1204 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAB: '||to_char(trc_TotLibAB));
1205 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAB: '||to_char(trc_LibFyAB));
1206 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAB: '||to_char(trc_LibFpAB));
1207 -- Annual Payments
1208 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
1209 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
1210 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
1211 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
1212 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
1213 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
1214 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
1215 -- Pubilc Office Allowance
1216 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
1217 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
1218 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffErn: '||to_char(trc_PblOffErn));
1219 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyPO: '||to_char(trc_LibFyPO));
1220 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpPO: '||to_char(trc_LibFpPO));
1221
1222 EXCEPTION
1223 WHEN OTHERS THEN
1224 IF xpt_Msg = 'No Error' THEN
1225 xpt_Msg := 'LteCalc: '||TO_CHAR(SQLCODE);
1226 END IF;
1227 RAISE xpt_E;
1228 END LteCalc;
1229
1230
1231 PROCEDURE SeaCalc AS
1232 -- Variables
1233 --
1234 l_Np NUMBER(15,2) DEFAULT 0;
1235 l_65Year DATE;
1236
1237 BEGIN
1238 hr_utility.set_location('py_za_tx_01032000.SeaCalc',1);
1239 -- Identify the calculation
1240 --
1241 trc_CalTyp := 'SeaCalc';
1242
1243 -- Period Type Income
1244 --
1245 trc_TxbIncPtd :=
1246 ( bal_AST_PRCHD_RVAL_NRFI_RUN
1247 + bal_AST_PRCHD_RVAL_RFI_RUN
1248 + bal_BUR_AND_SCH_NRFI_RUN
1249 + bal_BUR_AND_SCH_RFI_RUN
1250 + bal_COMM_NRFI_RUN
1251 + bal_COMM_RFI_RUN
1252 + bal_COMP_ALL_NRFI_RUN
1253 + bal_COMP_ALL_RFI_RUN
1254 + bal_ENT_ALL_NRFI_RUN
1255 + bal_ENT_ALL_RFI_RUN
1256 + bal_FREE_ACCOM_NRFI_RUN
1257 + bal_FREE_ACCOM_RFI_RUN
1258 + bal_FREE_SERV_NRFI_RUN
1259 + bal_FREE_SERV_RFI_RUN
1260 + bal_LOW_LOANS_NRFI_RUN
1261 + bal_LOW_LOANS_RFI_RUN
1262 + bal_MLS_AND_VOUCH_NRFI_RUN
1263 + bal_MLS_AND_VOUCH_RFI_RUN
1264 + bal_MED_PAID_NRFI_RUN
1265 + bal_MED_PAID_RFI_RUN
1266 + bal_OTHER_TXB_ALL_NRFI_RUN
1267 + bal_OTHER_TXB_ALL_RFI_RUN
1268 + bal_OVTM_NRFI_RUN
1269 + bal_OVTM_RFI_RUN
1270 + bal_PYM_DBT_NRFI_RUN
1271 + bal_PYM_DBT_RFI_RUN
1272 + bal_RGT_AST_NRFI_RUN
1273 + bal_RGT_AST_RFI_RUN
1274 + bal_TXB_INC_NRFI_RUN
1275 + bal_TXB_INC_RFI_RUN
1276 + bal_TXB_PEN_NRFI_RUN
1277 + bal_TXB_PEN_RFI_RUN
1278 + bal_TEL_ALL_NRFI_RUN
1279 + bal_TEL_ALL_RFI_RUN
1280 + bal_TOOL_ALL_NRFI_RUN
1281 + bal_TOOL_ALL_RFI_RUN
1282 + bal_USE_VEH_NRFI_RUN
1283 + bal_USE_VEH_RFI_RUN
1284 );
1285
1286 -- Check if any Period Income Exists
1287 --
1288 hr_utility.set_location('py_za_tx_01032000.SeaCalc',2);
1289 IF trc_TxbIncPtd = 0 THEN -- Pre-Earnings Calc
1290 hr_utility.set_location('py_za_tx_01032000.SeaCalc',3);
1291 -- Site Factor
1292 --
1293 trc_SitFactor := glb_ZA_WRK_DYS_PR_YR / dbi_SEA_WRK_DYS_WRK;
1294
1295 -- Tax Rebates, Threshold Figure and Medical Aid
1296 -- Abatements
1297 -- Calculate the assignments 65 Year Date
1298 l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
1299
1300 IF l_65Year BETWEEN dbi_ZA_TX_YR_STRT AND dbi_ZA_TX_YR_END THEN
1301 hr_utility.set_location('py_za_tx_01032000.SeaCalc',4);
1302 -- give the extra abatement
1303 trc_Rebate := glb_ZA_PRI_TX_RBT + glb_ZA_ADL_TX_RBT;
1304 trc_Threshold := glb_ZA_SC_TX_THRSHLD;
1305 ELSE
1306 hr_utility.set_location('py_za_tx_01032000.SeaCalc',5);
1307 -- not eligable for extra abatement
1308 trc_Rebate := glb_ZA_PRI_TX_RBT;
1309 trc_Threshold := glb_ZA_PRI_TX_THRSHLD;
1310 END IF;
1311
1312 -- Base Income
1313 --
1314 -- Base Income
1315 trc_BseErn :=
1316 ( bal_AC_NRFI_RUN
1317 + bal_AC_RFI_RUN
1318 + bal_ANU_FRM_RET_FND_NRFI_RUN
1319 + bal_ANU_FRM_RET_FND_RFI_RUN
1320 + bal_PRCH_ANU_TXB_NRFI_RUN
1321 + bal_PRCH_ANU_TXB_RFI_RUN
1322 + bal_TXB_AP_NRFI_RUN
1323 + bal_TXB_AP_RFI_RUN
1324 );
1325 -- Taxable Base Income
1326 trc_TxbBseInc := trc_BseErn * trc_SitFactor;
1327 -- Threshold Check
1328 IF trc_TxbBseInc >= trc_Threshold THEN
1329 hr_utility.set_location('py_za_tx_01032000.SeaCalc',6);
1330 -- Tax Liability
1331 trc_TotLibBse := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbBseInc);
1332 ELSE
1333 hr_utility.set_location('py_za_tx_01032000.SeaCalc',7);
1334 trc_TotLibBse := 0;
1335 END IF;
1336
1337 -- Annual Payments
1338 --
1339 -- Taxable Annual Payments Income
1340 trc_TxbAnnPymInc := trc_BseErn + trc_TxbBseInc;-- AP was taken as base!
1341 -- Threshold Check
1342 IF trc_TxbAnnPymInc >= trc_Threshold THEN
1343 hr_utility.set_location('py_za_tx_01032000.SeaCalc',8);
1344 -- Tax Liability
1345 trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1346 trc_LibFpAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibBse);
1347 ElSE
1348 hr_utility.set_location('py_za_tx_01032000.SeaCalc',9);
1349 trc_LibFpAP := 0;
1350 END IF;
1351
1352 -- Base Income
1353 py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
1354 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
1355 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
1356
1357 -- Annual Payments
1358 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
1359 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
1360 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
1361 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
1362 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
1363 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
1364 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
1365
1366
1367 ELSE
1368 hr_utility.set_location('py_za_tx_01032000.SeaCalc',10);
1369 -- Site Factor
1370 --
1371 trc_SitFactor := glb_ZA_WRK_DYS_PR_YR / dbi_SEA_WRK_DYS_WRK;
1372
1373 -- Rebates
1374 py_za_tx_utl_01032000.SetRebates;
1375
1376 -- Abatements
1377 py_za_tx_utl_01032000.Abatements;
1378
1379 hr_utility.set_location('py_za_tx_01032000.SeaCalc',11);
1380
1381 -- Normal Income
1382 --
1383 -- Run Normal Income
1384 trc_NorIncPtd :=
1385 (bal_COMM_NRFI_RUN
1386 + bal_COMM_RFI_RUN
1387 + bal_COMP_ALL_NRFI_RUN
1388 + bal_COMP_ALL_RFI_RUN
1389 + bal_ENT_ALL_NRFI_RUN
1390 + bal_ENT_ALL_RFI_RUN
1391 + bal_OTHER_TXB_ALL_NRFI_RUN
1392 + bal_OTHER_TXB_ALL_RFI_RUN
1393 + bal_OVTM_NRFI_RUN
1394 + bal_OVTM_RFI_RUN
1395 + bal_TXB_INC_NRFI_RUN
1396 + bal_TXB_INC_RFI_RUN
1397 + bal_TXB_PEN_NRFI_RUN
1398 + bal_TXB_PEN_RFI_RUN
1399 + bal_TEL_ALL_NRFI_RUN
1400 + bal_TEL_ALL_RFI_RUN
1401 + bal_TOOL_ALL_NRFI_RUN
1402 + bal_TOOL_ALL_RFI_RUN
1403 );
1404 -- Skip the calculation if there is No Income
1405 IF trc_NorIncPtd <> 0 THEN
1406 hr_utility.set_location('py_za_tx_01032000.SeaCalc',12);
1407 -- Normal Earnings
1408 trc_NorErn := trc_NorIncPtd * trc_SitFactor;
1409 -- Taxable Normal Income
1410 trc_TxbNorInc := trc_NorErn - trc_PerTotAbm;
1411 -- Threshold Check
1412 IF trc_TxbNorInc >= trc_Threshold THEN
1413 hr_utility.set_location('py_za_tx_01032000.SeaCalc',13);
1414 -- Tax Liability
1415 trc_TotLibNI := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbNorInc);
1416 trc_LibFyNI := trc_TotLibNI - 0;
1417 trc_LibFpNI := trc_LibFyNI / trc_SitFactor;
1418 ELSE
1419 hr_utility.set_location('py_za_tx_01032000.SeaCalc',14);
1420 trc_TotLibNI := 0;
1421 END IF;
1422 ELSE
1423 hr_utility.set_location('py_za_tx_01032000.SeaCalc',15);
1424 trc_NorErn := 0;
1425 trc_TxbNorInc := 0;
1426 trc_TotLibNI := 0;
1427 END IF;
1428
1429 -- Fringe Benefits
1430 --
1431 -- Run Fringe Benefits
1432 trc_FrnBenPtd :=
1433 ( bal_AST_PRCHD_RVAL_NRFI_RUN
1434 + bal_AST_PRCHD_RVAL_RFI_RUN
1435 + bal_BUR_AND_SCH_NRFI_RUN
1436 + bal_BUR_AND_SCH_RFI_RUN
1437 + bal_FREE_ACCOM_NRFI_RUN
1438 + bal_FREE_ACCOM_RFI_RUN
1439 + bal_FREE_SERV_NRFI_RUN
1440 + bal_FREE_SERV_RFI_RUN
1441 + bal_LOW_LOANS_NRFI_RUN
1442 + bal_LOW_LOANS_RFI_RUN
1443 + bal_MLS_AND_VOUCH_NRFI_RUN
1444 + bal_MLS_AND_VOUCH_RFI_RUN
1445 + bal_MED_PAID_NRFI_RUN
1446 + bal_MED_PAID_RFI_RUN
1447 + bal_PYM_DBT_NRFI_RUN
1448 + bal_PYM_DBT_RFI_RUN
1449 + bal_RGT_AST_NRFI_RUN
1450 + bal_RGT_AST_RFI_RUN
1451 + bal_USE_VEH_NRFI_RUN
1452 + bal_USE_VEH_RFI_RUN
1453 );
1454
1455 -- Skip the calculation if there is No Income
1456 IF trc_FrnBenPtd <> 0 THEN
1457 hr_utility.set_location('py_za_tx_01032000.SeaCalc',16);
1458 -- Fringe Benefit Earnings
1459 trc_FrnBenErn := trc_FrnBenPtd * trc_SitFactor + trc_NorErn;
1460 -- Taxable Fringe Income
1461 trc_TxbFrnInc := trc_FrnBenErn - trc_PerTotAbm;
1462 -- Threshold Check
1463 IF trc_TxbFrnInc >= trc_Threshold THEN
1464 hr_utility.set_location('py_za_tx_01032000.SeaCalc',17);
1465 -- Tax Liability
1466 trc_TotLibFB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbFrnInc);
1467 trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
1468 trc_LibFpFB := trc_LibFyFB / trc_SitFactor;
1469 ELSE
1470 hr_utility.set_location('py_za_tx_01032000.SeaCalc',18);
1471 trc_TotLibFB := trc_TotLibNI;
1472 END IF;
1473 ELSE
1474 hr_utility.set_location('py_za_tx_01032000.SeaCalc',19);
1475 trc_FrnBenErn := trc_NorErn;
1476 trc_TxbFrnInc := trc_TxbNorInc;
1477 trc_TotLibFB := trc_TotLibNI;
1478 END IF;
1479
1480 -- Annual Payments
1481 --
1482 -- Run Annual Payments
1483 trc_AnnPymPtd :=
1484 ( bal_AC_NRFI_RUN
1485 + bal_AC_RFI_RUN
1486 + bal_ANU_FRM_RET_FND_NRFI_RUN
1487 + bal_ANU_FRM_RET_FND_RFI_RUN
1488 + bal_PRCH_ANU_TXB_NRFI_RUN
1489 + bal_PRCH_ANU_TXB_RFI_RUN
1490 + bal_TXB_AP_NRFI_RUN
1491 + bal_TXB_AP_RFI_RUN
1492 );
1493 -- Skip the calculation if there is No Income
1494 IF trc_AnnPymPtd <> 0 THEN
1495 hr_utility.set_location('py_za_tx_01032000.SeaCalc',20);
1496 -- Annual Payments Earnings
1497 trc_AnnPymErn := trc_AnnPymPtd + trc_FrnBenErn;
1498 -- Taxable Annual Payments Income
1499 trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
1500 -- Threshold Check
1501 IF trc_TxbAnnPymInc >= trc_Threshold THEN
1502 hr_utility.set_location('py_za_tx_01032000.SeaCalc',21);
1503 -- Tax Liability
1504 trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1505 trc_LibFyAP := trc_TotLibAP - trc_TotLibFB;
1506 -- Negative Check
1507 IF trc_LibFyAP < 0 THEN
1508 hr_utility.set_location('py_za_tx_01032000.SeaCalc',22);
1509 trc_TotLibAP := trc_TotLibFB;
1510 -- Refund any tax paid
1511 trc_LibFpAP := 0;
1512 ELSE
1513 hr_utility.set_location('py_za_tx_01032000.SeaCalc',23);
1514 trc_LibFpAP := trc_LibFyAP;
1515 END IF;
1516 ELSE
1517 hr_utility.set_location('py_za_tx_01032000.SeaCalc',24);
1518 trc_TotLibAP := trc_TotLibFB;
1519 END IF;
1520 ELSE
1521 hr_utility.set_location('py_za_tx_01032000.SeaCalc',25);
1522 trc_AnnPymErn := trc_FrnBenErn;
1523 trc_TxbAnnPymInc := trc_TxbFrnInc;
1524 trc_TotLibAP := trc_TotLibFB;
1525 END IF;
1526
1527
1528 -- Net Pay Validation
1529 --
1530 py_za_tx_utl_01032000.NpVal;
1531
1532 hr_utility.set_location('py_za_tx_01032000.SeaCalc',26);
1533
1534 -- Set IT3A Indicator
1535 --
1536 IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
1537 hr_utility.set_location('py_za_tx_01032000.SeaCalc',27);
1538 trc_It3Ind := 0; -- Over Lim
1539 ELSE
1540 hr_utility.set_location('py_za_tx_01032000.SeaCalc',28);
1541 trc_It3Ind := 1; -- Under Lim
1542 END IF;
1543 END IF;
1544
1545 -- Normal Income
1546 py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
1547 py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
1548 py_za_tx_utl_01032000.WriteHrTrace('trc_NorErn: '||to_char(trc_NorErn));
1549 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
1550 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibNI: '||to_char(trc_TotLibNI));
1551 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyNI: '||to_char(trc_LibFyNI));
1552 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpNI: '||to_char(trc_LibFpNI));
1553 -- Fringe Benefits
1554 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
1555 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
1556 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
1557 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
1558 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibFB: '||to_char(trc_TotLibFB));
1559 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyFB: '||to_char(trc_LibFyFB));
1560 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpFB: '||to_char(trc_LibFpFB));
1561 -- Annual Payments
1562 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
1563 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
1564 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
1565 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
1566 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
1567 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
1568 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
1569
1570 EXCEPTION
1571 WHEN OTHERS THEN
1572 IF xpt_Msg = 'No Error' THEN
1573 xpt_Msg := 'SeaCalc: '||TO_CHAR(SQLCODE);
1574 END IF;
1575 RAISE xpt_E;
1576 END SeaCalc;
1577
1578
1579 PROCEDURE SitCalc AS
1580 -- Variables
1581 --
1582 l_Sl BOOLEAN;
1583 l_Np NUMBER(15,2);
1584
1585 BEGIN
1586 hr_utility.set_location('py_za_tx_01032000.SitCalc',1);
1587 -- Identify the calculation
1588 --
1589 trc_CalTyp := 'SitCalc';
1590
1591 -- Update Global Balance Values with correct TAXABLE values
1592 --
1593 py_za_tx_utl_01032000.TrvAll;
1594
1595 hr_utility.set_location('py_za_tx_01032000.SitCalc',2);
1596
1597 bal_PO_RFI_YTD :=
1598 bal_PO_RFI_YTD * glb_ZA_PBL_TX_PRC / 100;
1599
1600 bal_PO_NRFI_YTD :=
1601 bal_PO_NRFI_YTD * glb_ZA_PBL_TX_PRC / 100;
1602
1603 -- Ytd Taxable Income
1604 --
1605 trc_TxbIncYtd :=
1606 ( bal_AST_PRCHD_RVAL_NRFI_YTD
1607 + bal_AST_PRCHD_RVAL_RFI_YTD
1608 + bal_BP_YTD
1609 + bal_BUR_AND_SCH_NRFI_YTD
1610 + bal_BUR_AND_SCH_RFI_YTD
1611 + bal_COMM_NRFI_YTD
1612 + bal_COMM_RFI_YTD
1613 + bal_COMP_ALL_NRFI_YTD
1614 + bal_COMP_ALL_RFI_YTD
1615 + bal_ENT_ALL_NRFI_YTD
1616 + bal_ENT_ALL_RFI_YTD
1617 + bal_FREE_ACCOM_NRFI_YTD
1618 + bal_FREE_ACCOM_RFI_YTD
1619 + bal_FREE_SERV_NRFI_YTD
1620 + bal_FREE_SERV_RFI_YTD
1621 + bal_LOW_LOANS_NRFI_YTD
1622 + bal_LOW_LOANS_RFI_YTD
1623 + bal_MLS_AND_VOUCH_NRFI_YTD
1624 + bal_MLS_AND_VOUCH_RFI_YTD
1625 + bal_MED_PAID_NRFI_YTD
1626 + bal_MED_PAID_RFI_YTD
1627 + bal_OTHER_TXB_ALL_NRFI_YTD
1628 + bal_OTHER_TXB_ALL_RFI_YTD
1629 + bal_OVTM_NRFI_YTD
1630 + bal_OVTM_RFI_YTD
1631 + bal_PYM_DBT_NRFI_YTD
1632 + bal_PYM_DBT_RFI_YTD
1633 + bal_RGT_AST_NRFI_YTD
1634 + bal_RGT_AST_RFI_YTD
1635 + bal_TXB_INC_NRFI_YTD
1636 + bal_TXB_INC_RFI_YTD
1637 + bal_TXB_PEN_NRFI_YTD
1638 + bal_TXB_PEN_RFI_YTD
1639 + bal_TEL_ALL_NRFI_YTD
1640 + bal_TEL_ALL_RFI_YTD
1641 + bal_TOOL_ALL_NRFI_YTD
1642 + bal_TOOL_ALL_RFI_YTD
1643 + bal_TA_NRFI_YTD
1644 + bal_TA_RFI_YTD
1645 + bal_USE_VEH_NRFI_YTD
1646 + bal_USE_VEH_RFI_YTD
1647 );
1648
1649 hr_utility.set_location('py_za_tx_01032000.SitCalc',3);
1650
1651 -- Site Factor
1652 --
1653 trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032000.DaysWorked;
1654
1655 hr_utility.set_location('py_za_tx_01032000.SitCalc',4);
1656
1657 -- Rebates
1658 py_za_tx_utl_01032000.SetRebates;
1659
1660 -- Abatements
1661 py_za_tx_utl_01032000.Abatements;
1662
1663 hr_utility.set_location('py_za_tx_01032000.SitCalc',5);
1664
1665 -- Normal Income
1666 --
1667 -- Ytd Normal Income
1668 trc_NorIncYtd :=
1669 ( bal_COMM_NRFI_YTD
1670 + bal_COMM_RFI_YTD
1671 + bal_COMP_ALL_NRFI_YTD
1672 + bal_COMP_ALL_RFI_YTD
1673 + bal_ENT_ALL_NRFI_YTD
1674 + bal_ENT_ALL_RFI_YTD
1675 + bal_OTHER_TXB_ALL_NRFI_YTD
1676 + bal_OTHER_TXB_ALL_RFI_YTD
1677 + bal_OVTM_NRFI_YTD
1678 + bal_OVTM_RFI_YTD
1679 + bal_TXB_INC_NRFI_YTD
1680 + bal_TXB_INC_RFI_YTD
1681 + bal_TXB_PEN_NRFI_YTD
1682 + bal_TXB_PEN_RFI_YTD
1683 + bal_TEL_ALL_NRFI_YTD
1684 + bal_TEL_ALL_RFI_YTD
1685 + bal_TOOL_ALL_NRFI_YTD
1686 + bal_TOOL_ALL_RFI_YTD
1687 );
1688 -- Skip the calculation if there is No Income
1689 IF trc_NorIncYtd <> 0 THEN
1690 hr_utility.set_location('py_za_tx_01032000.SitCalc',6);
1691 -- Normal Earnings
1692 trc_NorErn := trc_NorIncYtd * trc_SitFactor;
1693 -- Taxable Normal Income
1694 trc_TxbNorInc := trc_NorErn - trc_PerTotAbm;
1695 -- Threshold Check
1696 IF trc_TxbNorInc >= trc_Threshold THEN
1697 hr_utility.set_location('py_za_tx_01032000.SitCalc',7);
1698 -- Tax Liability
1699 trc_TotLibNI := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbNorInc);
1700 trc_LibFyNI := (trc_TotLibNI - 0) / trc_SitFactor;
1701 trc_LibFpNI := trc_LibFyNI - bal_TX_ON_NI_YTD;
1702 ELSE
1703 hr_utility.set_location('py_za_tx_01032000.SitCalc',8);
1704 trc_TotLibNI := 0;
1705 -- Refund any tax paid
1706 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
1707 trc_NpValNIOvr := TRUE;
1708 END IF;
1709 ELSE
1710 hr_utility.set_location('py_za_tx_01032000.SitCalc',9);
1711 trc_NorErn := 0;
1712 trc_TxbNorInc := 0;
1713 trc_TotLibNI := 0;
1714 -- Refund any tax paid
1715 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
1716 trc_NpValNIOvr := TRUE;
1717 END IF;
1718
1719 -- Fringe Benefits
1720 --
1721 -- Ytd Fringe Benefits
1722 trc_FrnBenYtd :=
1723 ( bal_AST_PRCHD_RVAL_NRFI_YTD
1724 + bal_AST_PRCHD_RVAL_RFI_YTD
1725 + bal_BUR_AND_SCH_NRFI_YTD
1726 + bal_BUR_AND_SCH_RFI_YTD
1727 + bal_FREE_ACCOM_NRFI_YTD
1728 + bal_FREE_ACCOM_RFI_YTD
1729 + bal_FREE_SERV_NRFI_YTD
1730 + bal_FREE_SERV_RFI_YTD
1731 + bal_LOW_LOANS_NRFI_YTD
1732 + bal_LOW_LOANS_RFI_YTD
1733 + bal_MLS_AND_VOUCH_NRFI_YTD
1734 + bal_MLS_AND_VOUCH_RFI_YTD
1735 + bal_MED_PAID_NRFI_YTD
1736 + bal_MED_PAID_RFI_YTD
1737 + bal_PYM_DBT_NRFI_YTD
1738 + bal_PYM_DBT_RFI_YTD
1739 + bal_RGT_AST_NRFI_YTD
1740 + bal_RGT_AST_RFI_YTD
1741 + bal_USE_VEH_NRFI_YTD
1742 + bal_USE_VEH_RFI_YTD
1743 );
1744
1745 -- Skip the calculation if there is No Income
1746 IF trc_FrnBenYtd <> 0 THEN
1747 hr_utility.set_location('py_za_tx_01032000.SitCalc',10);
1748 -- Fringe Benefit Earnings
1749 trc_FrnBenErn := trc_FrnBenYtd * trc_SitFactor + trc_NorErn;
1750 -- Taxable Fringe Income
1751 trc_TxbFrnInc := trc_FrnBenErn - trc_PerTotAbm;
1752 -- Threshold Check
1753 IF trc_TxbFrnInc >= trc_Threshold THEN
1754 hr_utility.set_location('py_za_tx_01032000.SitCalc',11);
1755 -- Tax Liability
1756 trc_TotLibFB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbFrnInc);
1757 trc_LibFyFB := (trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI)) / trc_SitFactor;
1758 trc_LibFpFB := trc_LibFyFB - bal_TX_ON_FB_YTD;
1759 ElSE
1760 hr_utility.set_location('py_za_tx_01032000.SitCalc',12);
1761 trc_TotLibFB := trc_TotLibNI;
1762 -- Refund any tax paid
1763 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
1764 trc_NpValFBOvr := TRUE;
1765 END IF;
1766 ELSE
1767 hr_utility.set_location('py_za_tx_01032000.SitCalc',13);
1768 trc_FrnBenErn := trc_NorErn;
1769 trc_TxbFrnInc := trc_TxbNorInc;
1770 trc_TotLibFB := trc_TotLibNI;
1771 -- Refund any tax paid
1772 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
1773 trc_NpValFBOvr := TRUE;
1774 END IF;
1775
1776 -- Travel allowance
1777 --
1778 -- Ytd Travel Allowance
1779 trc_TrvAllYtd :=
1780 ( bal_TA_NRFI_YTD
1781 + bal_TA_RFI_YTD
1782 );
1783 -- Skip the calculation if there is No Income
1784 IF trc_TrvAllYtd <> 0 THEN
1785 hr_utility.set_location('py_za_tx_01032000.SitCalc',14);
1786 -- Travel Earnings
1787 trc_TrvAllErn := trc_TrvAllYtd * trc_SitFactor + trc_FrnBenErn;
1788 -- Taxable Travel Income
1789 trc_TxbTrvInc := trc_TrvAllErn - trc_PerTotAbm;
1790 -- Threshold Check
1791 IF trc_TxbTrvInc >= trc_Threshold THEN
1792 hr_utility.set_location('py_za_tx_01032000.SitCalc',15);
1793 -- Tax Liability
1794 trc_TotLibTA := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbTrvInc);
1795 trc_LibFyTA := (trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB)) / trc_SitFactor;
1796 trc_LibFpTA := trc_LibFyTA - bal_TX_ON_TA_YTD;
1797 ELSE
1798 hr_utility.set_location('py_za_tx_01032000.SitCalc',16);
1799 trc_TotLibTA := trc_TotLibFB;
1800 -- Refund any tax paid
1801 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
1802 trc_NpValTAOvr := TRUE;
1803 END IF;
1804 ELSE
1805 hr_utility.set_location('py_za_tx_01032000.SitCalc',17);
1806 trc_TrvAllErn := trc_FrnBenErn;
1807 trc_TxbTrvInc := trc_TxbFrnInc;
1808 trc_TotLibTA := trc_TotLibFB;
1809 -- Refund any tax paid
1810 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
1811 trc_NpValTAOvr := TRUE;
1812 END IF;
1813
1814 -- Bonus Provision
1815 --
1816 -- Ytd Bonus Prvision
1817 trc_BonProYtd := bal_BP_YTD;
1818 -- Skip the calculation if there is No Income
1819 IF trc_BonProYtd <> 0 THEN
1820 hr_utility.set_location('py_za_tx_01032000.SitCalc',18);
1821 -- Bonus Provision Earnings
1822 trc_BonProErn := trc_BonProYtd * trc_SitFactor + trc_TrvAllErn;
1823 -- Taxable Bonus Provision Income
1824 trc_TxbBonProInc := trc_BonProErn - trc_PerTotAbm;
1825 -- Threshold Check
1826 IF trc_TxbBonProInc >= trc_Threshold THEN
1827 hr_utility.set_location('py_za_tx_01032000.SitCalc',19);
1828 -- Tax Liability
1829 trc_TotLibBP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbBonProInc);
1830 trc_LibFyBP := (trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA)) / trc_SitFactor;
1831 trc_LibFpBP := trc_LibFyBP - bal_TX_ON_BP_YTD;
1832 ELSE
1833 hr_utility.set_location('py_za_tx_01032000.SitCalc',20);
1834 trc_TotLibBP := trc_TotLibTA;
1835 -- Refund any tax paid
1836 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
1837 trc_NpValBPOvr := TRUE;
1838 END IF;
1839 ELSE
1840 hr_utility.set_location('py_za_tx_01032000.SitCalc',21);
1841 trc_BonProErn := trc_TrvAllErn;
1842 trc_TxbBonProInc := trc_TxbTrvInc;
1843 trc_TotLibBP := trc_TotLibTA;
1844 -- Refund any tax paid
1845 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
1846 trc_NpValBPOvr := TRUE;
1847 END IF;
1848
1849 -- Annual Bonus
1850 --
1851 -- Ytd Annual Bonus
1852 trc_AnnBonYtd :=
1853 ( bal_AB_NRFI_YTD
1854 + bal_AB_RFI_YTD
1855 );
1856 -- Skip the calculation if there is No Income
1857 IF trc_AnnBonYtd <> 0 THEN
1858 hr_utility.set_location('py_za_tx_01032000.SitCalc',22);
1859 -- Annual Bonus Earnings
1860 trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
1861 -- Taxable Annual Bonus Income
1862 trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
1863 -- Threshold Check
1864 IF trc_TxbAnnBonInc >= trc_Threshold THEN
1865 hr_utility.set_location('py_za_tx_01032000.SitCalc',23);
1866 -- Tax Liability
1867 trc_TotLibAB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnBonInc);
1868 trc_LibFyAB := trc_TotLibAB - trc_TotLibTA;
1869 -- Negative Check
1870 IF trc_LibFyAB < 0 THEN
1871 hr_utility.set_location('py_za_tx_01032000.SitCalc',24);
1872 trc_TotLibAB := trc_TotLibTA;
1873 -- Refund any tax paid
1874 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1875 trc_NpValABOvr := TRUE;
1876 ELSE
1877 hr_utility.set_location('py_za_tx_01032000.SitCalc',25);
1878 -- Check Bonus Provision
1879 IF trc_BonProYtd <> 0 THEN
1880 hr_utility.set_location('py_za_tx_01032000.SitCalc',26);
1881 trc_LibFpAB := trc_LibFyAB - (bal_TX_ON_BP_YTD
1882 + trc_LibFpBP
1883 + bal_TX_ON_AB_YTD
1884 );
1885 ELSE
1886 hr_utility.set_location('py_za_tx_01032000.SitCalc',27);
1887 trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
1888 END IF;
1889 END IF;
1890 ELSE
1891 hr_utility.set_location('py_za_tx_01032000.SitCalc',28);
1892 trc_TotLibAB := trc_TotLibTA;
1893 -- Refund any tax paid
1894 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1895 trc_NpValABOvr := TRUE;
1896 END IF;
1897 ELSE
1898 hr_utility.set_location('py_za_tx_01032000.SitCalc',29);
1899 trc_AnnBonErn := trc_TrvAllErn;
1900 trc_TxbAnnBonInc := trc_TxbTrvInc;
1901 trc_TotLibAB := trc_TotLibTA;
1902 -- Refund any tax paid
1903 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1904 trc_NpValABOvr := TRUE;
1905 END IF;
1906
1907 -- Annual Payments
1908 --
1909 -- Ytd Annual Payments
1910 trc_AnnPymYtd :=
1911 ( bal_AC_NRFI_YTD
1912 + bal_AC_RFI_YTD
1913 + bal_ANU_FRM_RET_FND_NRFI_YTD
1914 + bal_ANU_FRM_RET_FND_RFI_YTD
1915 + bal_PRCH_ANU_TXB_NRFI_YTD
1916 + bal_PRCH_ANU_TXB_RFI_YTD
1917 + bal_TXB_AP_NRFI_YTD
1918 + bal_TXB_AP_RFI_YTD
1919 );
1920 -- Skip the calculation if there is No Income
1921 IF trc_AnnPymYtd <> 0 THEN
1922 hr_utility.set_location('py_za_tx_01032000.SitCalc',30);
1923 -- Annual Payments Earnings
1924 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
1925 -- Taxable Annual Payments Income
1926 trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
1927 -- Threshold Check
1928 IF trc_TxbAnnPymInc >= trc_Threshold THEN
1929 hr_utility.set_location('py_za_tx_01032000.SitCalc',31);
1930 -- Tax Liability
1931 trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1932 trc_LibFyAP := trc_TotLibAP - trc_TotLibAB;
1933 -- Negative Check
1934 IF trc_LibFyAP < 0 THEN
1935 hr_utility.set_location('py_za_tx_01032000.SitCalc',32);
1936 trc_TotLibAP := trc_TotLibAB;
1937 -- Refund any tax paid
1938 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
1939 trc_NpValAPOvr := TRUE;
1940 ELSE
1941 hr_utility.set_location('py_za_tx_01032000.SitCalc',33);
1942 trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
1943 END IF;
1944 ELSE
1945 hr_utility.set_location('py_za_tx_01032000.SitCalc',34);
1946 trc_TotLibAP := trc_TotLibAB;
1947 -- Refund any tax paid
1948 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
1949 trc_NpValAPOvr := TRUE;
1950 END IF;
1951 ELSE
1952 hr_utility.set_location('py_za_tx_01032000.SitCalc',35);
1953 trc_AnnPymErn := trc_AnnBonErn;
1954 trc_TxbAnnPymInc := trc_TxbAnnBonInc;
1955 trc_TotLibAP := trc_TotLibAB;
1956 -- Refund any tax paid
1957 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
1958 trc_NpValAPOvr := TRUE;
1959 END IF;
1960
1961 -- Public Office Allowance
1962 --
1963 -- Ytd Public Office Allowance
1964 trc_PblOffYtd :=
1965 ( bal_PO_NRFI_YTD
1966 + bal_PO_RFI_YTD
1967 );
1968 -- Skip the calculation if there is No Income
1969 IF trc_PblOffYtd <> 0 THEN
1970 hr_utility.set_location('py_za_tx_01032000.SitCalc',36);
1971 -- Public Office Earnings
1972 trc_PblOffErn := trc_PblOffYtd * trc_SitFactor;
1973 -- Tax Liability
1974 trc_LibFyPO := (trc_PblOffErn * glb_ZA_PBL_TX_RTE / 100)/trc_SitFactor;
1975 trc_LibFpPO := trc_LibFyPO - bal_TX_ON_PO_YTD;
1976 ELSE
1977 hr_utility.set_location('py_za_tx_01032000.SitCalc',37);
1978 trc_LibFyPO := 0;
1979 -- Refund any tax paid
1980 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
1981 trc_NpValPOOvr := TRUE;
1982 END IF;
1983
1984 -- Net Pay Validation
1985 --
1986 -- Net Pay of the Employee
1987 l_Np := bal_NET_PAY_RUN;
1988 -- Site Limit Check
1989 IF trc_TxbAnnPymInc + trc_PblOffErn < glb_ZA_SIT_LIM THEN
1990 hr_utility.set_location('py_za_tx_01032000.SitCalc',38);
1991 l_Sl := TRUE;
1992 ELSE
1993 hr_utility.set_location('py_za_tx_01032000.SitCalc',39);
1994 l_Sl := FALSE;
1995 END IF;
1996
1997 py_za_tx_utl_01032000.NpVal(p_Rf => l_Sl);
1998
1999 hr_utility.set_location('py_za_tx_01032000.SitCalc',40);
2000
2001 -- Set IT3A Indicator
2002 --
2003 IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
2004 hr_utility.set_location('py_za_tx_01032000.SitCalc',41);
2005 trc_It3Ind := 0; -- Over Lim
2006 ELSE
2007 hr_utility.set_location('py_za_tx_01032000.SitCalc',42);
2008 trc_It3Ind := 1; -- Under Lim
2009 END IF;
2010
2011 -- Calculate Total Taxable Income and pass out
2012 --
2013 trc_OUpdFig := (trc_TxbAnnPymInc + trc_PblOffErn) - bal_TOT_TXB_INC_ITD;
2014
2015 hr_utility.set_location('py_za_tx_01032000.SitCalc',43);
2016
2017 -- Base Income
2018 py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
2019 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
2020 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
2021 -- Normal Income
2022 py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
2023 py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
2024 py_za_tx_utl_01032000.WriteHrTrace('trc_NorErn: '||to_char(trc_NorErn));
2025 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
2026 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibNI: '||to_char(trc_TotLibNI));
2027 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyNI: '||to_char(trc_LibFyNI));
2028 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpNI: '||to_char(trc_LibFpNI));
2029 -- Fringe Benefits
2030 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
2031 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
2032 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
2033 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
2034 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibFB: '||to_char(trc_TotLibFB));
2035 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyFB: '||to_char(trc_LibFyFB));
2036 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpFB: '||to_char(trc_LibFpFB));
2037 -- Travel Allowance
2038 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
2039 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
2040 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
2041 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
2042 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibTA: '||to_char(trc_TotLibTA));
2043 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyTA: '||to_char(trc_LibFyTA));
2044 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpTA: '||to_char(trc_LibFpTA));
2045 -- Bonus Provision
2046 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProYtd: '||to_char(trc_BonProYtd));
2047 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProPtd: '||to_char(trc_BonProPtd));
2048 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProErn: '||to_char(trc_BonProErn));
2049 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
2050 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBP: '||to_char(trc_TotLibBP));
2051 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyBP: '||to_char(trc_LibFyBP));
2052 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpBP: '||to_char(trc_LibFpBP));
2053 -- Annual Bonus
2054 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
2055 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
2056 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
2057 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
2058 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAB: '||to_char(trc_TotLibAB));
2059 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAB: '||to_char(trc_LibFyAB));
2060 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAB: '||to_char(trc_LibFpAB));
2061 -- Annual Payments
2062 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
2063 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
2064 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
2065 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2066 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
2067 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
2068 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
2069
2070 EXCEPTION
2071 WHEN OTHERS THEN
2072 IF xpt_Msg = 'No Error' THEN
2073 xpt_Msg := 'SitCalc: '||TO_CHAR(SQLCODE);
2074 END IF;
2075 RAISE xpt_E;
2076 END SitCalc;
2077
2078
2079 PROCEDURE DirCalc AS
2080 -- Variables
2081 --
2082 l_Np NUMBER(15,2) DEFAULT 0;
2083
2084 BEGIN
2085 hr_utility.set_location('py_za_tx_01032000.DirCalc',1);
2086 -- Identify the calculation
2087 --
2088 trc_CalTyp := 'DirCalc';
2089
2090 -- Update Global Balance Values with correct TAXABLE values
2091 --
2092 py_za_tx_utl_01032000.TrvAll;
2093
2094 hr_utility.set_location('py_za_tx_01032000.DirCalc',2);
2095
2096 bal_PO_RFI_YTD :=
2097 bal_PO_RFI_YTD * glb_ZA_PBL_TX_PRC / 100;
2098
2099 bal_PO_NRFI_YTD :=
2100 bal_PO_NRFI_YTD * glb_ZA_PBL_TX_PRC / 100;
2101
2102 -- Normal Income
2103 --
2104 -- Ytd Normal Income
2105 trc_NorIncYtd :=
2106 ( bal_COMM_NRFI_YTD
2107 + bal_COMM_RFI_YTD
2108 + bal_COMP_ALL_NRFI_YTD
2109 + bal_COMP_ALL_RFI_YTD
2110 + bal_ENT_ALL_NRFI_YTD
2111 + bal_ENT_ALL_RFI_YTD
2112 + bal_OTHER_TXB_ALL_NRFI_YTD
2113 + bal_OTHER_TXB_ALL_RFI_YTD
2114 + bal_OVTM_NRFI_YTD
2115 + bal_OVTM_RFI_YTD
2116 + bal_TXB_INC_NRFI_YTD
2117 + bal_TXB_INC_RFI_YTD
2118 + bal_TXB_PEN_NRFI_YTD
2119 + bal_TXB_PEN_RFI_YTD
2120 + bal_TEL_ALL_NRFI_YTD
2121 + bal_TEL_ALL_RFI_YTD
2122 + bal_TOOL_ALL_NRFI_YTD
2123 + bal_TOOL_ALL_RFI_YTD
2124 );
2125 -- Skip the calculation if there is No Income
2126 IF trc_NorIncYtd <> 0 THEN
2127 hr_utility.set_location('py_za_tx_01032000.DirCalc',3);
2128 -- Normal Earnings
2129 trc_NorErn := trc_NorIncYtd;
2130 -- Tax Liability
2131 trc_TotLibNI := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_NorErn);
2132 trc_LibFyNI := trc_TotLibNI - 0;
2133 trc_LibFpNI := trc_LibFyNI - bal_TX_ON_NI_YTD;
2134 ELSE
2135 hr_utility.set_location('py_za_tx_01032000.DirCalc',4);
2136 trc_NorErn := 0;
2137 trc_TotLibNI := 0;
2138 -- Refund any tax paid
2139 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
2140 trc_NpValNIOvr := TRUE;
2141 END IF;
2142
2143 -- Fringe Benefits
2144 --
2145 -- Ytd Fringe Benefits
2146 trc_FrnBenYtd :=
2147 ( bal_AST_PRCHD_RVAL_NRFI_YTD
2148 + bal_AST_PRCHD_RVAL_RFI_YTD
2149 + bal_BUR_AND_SCH_NRFI_YTD
2150 + bal_BUR_AND_SCH_RFI_YTD
2151 + bal_FREE_ACCOM_NRFI_YTD
2152 + bal_FREE_ACCOM_RFI_YTD
2153 + bal_FREE_SERV_NRFI_YTD
2154 + bal_FREE_SERV_RFI_YTD
2155 + bal_LOW_LOANS_NRFI_YTD
2156 + bal_LOW_LOANS_RFI_YTD
2157 + bal_MLS_AND_VOUCH_NRFI_YTD
2158 + bal_MLS_AND_VOUCH_RFI_YTD
2159 + bal_MED_PAID_NRFI_YTD
2160 + bal_MED_PAID_RFI_YTD
2161 + bal_PYM_DBT_NRFI_YTD
2162 + bal_PYM_DBT_RFI_YTD
2163 + bal_RGT_AST_NRFI_YTD
2164 + bal_RGT_AST_RFI_YTD
2165 + bal_USE_VEH_NRFI_YTD
2166 + bal_USE_VEH_RFI_YTD
2167 );
2168 -- Skip the calculation if there is No Income
2169 IF trc_FrnBenYtd <> 0 THEN
2170 hr_utility.set_location('py_za_tx_01032000.DirCalc',5);
2171 -- Fringe Benefit Earnings
2172 trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
2173 -- Tax Liability
2174 trc_TotLibFB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_FrnBenErn);
2175 trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
2176 trc_LibFpFB := trc_LibFyFB - bal_TX_ON_FB_YTD;
2177 ELSE
2178 hr_utility.set_location('py_za_tx_01032000.DirCalc',6);
2179 trc_FrnBenErn := trc_NorErn;
2180 trc_TotLibFB := trc_TotLibNI;
2181 -- Refund any tax paid
2182 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
2183 trc_NpValFBOvr := TRUE;
2184 END IF;
2185
2186 -- Travel Allowance
2187 --
2188 -- Ytd Travel Allowance
2189 trc_TrvAllYtd :=
2190 ( bal_TA_NRFI_YTD
2191 + bal_TA_RFI_YTD
2192 );
2193 -- Skip the calculation if there is No Income
2194 IF trc_TrvAllYtd <> 0 THEN
2195 hr_utility.set_location('py_za_tx_01032000.DirCalc',7);
2196 -- Travel Allowance Earnings
2197 trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
2198 -- Tax Liability
2199 trc_TotLibTA := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TrvAllErn);
2200 trc_LibFyTA := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
2201 trc_LibFpTA := trc_LibFyTA - bal_TX_ON_TA_YTD;
2202 ELSE
2203 hr_utility.set_location('py_za_tx_01032000.DirCalc',8);
2204 trc_TrvAllErn := trc_FrnBenErn; --Cascade Figure
2205 trc_TotLibTA := trc_TotLibFB;
2206 -- Refund any tax paid
2207 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
2208 trc_NpValTAOvr := TRUE;
2209 END IF;
2210
2211 -- Bonus Provision
2212 --
2213 -- Ytd Bonus Provision
2214 trc_BonProYtd := bal_BP_YTD;
2215 -- Skip the calculation if there is No Income
2216 IF trc_BonProYtd <> 0 THEN
2217 hr_utility.set_location('py_za_tx_01032000.DirCalc',9);
2218 -- Bonus Provision Earnings
2219 trc_BonProErn := trc_BonProYtd + trc_TrvAllErn;
2220 -- Tax Liability
2221 trc_TotLibBP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_BonProErn);
2222 trc_LibFyBP := trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA);
2223 trc_LibFpBP := trc_LibFyBP - bal_TX_ON_BP_YTD;
2224 ELSE
2225 hr_utility.set_location('py_za_tx_01032000.DirCalc',10);
2226 trc_BonProErn := trc_TrvAllErn;
2227 trc_TotLibBP := trc_TotLibTA;
2228 -- Refund any tax paid
2229 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
2230 trc_NpValBPOvr := TRUE;
2231 END IF;
2232
2233 -- Annual Bonus
2234 --
2235 -- Ytd Annual Bonus
2236 trc_AnnBonYtd :=
2237 ( bal_AB_NRFI_YTD
2238 + bal_AB_RFI_YTD
2239 );
2240 -- Skip the calculation if there is No Income
2241 IF trc_AnnBonYtd <> 0 THEN
2242 hr_utility.set_location('py_za_tx_01032000.DirCalc',11);
2243 -- Annual Bonus Earnings
2244 trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
2245 -- Tax Liability
2246 trc_TotLibAB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_AnnBonErn);
2247 trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
2248 -- Check Bonus Provision
2249 IF trc_BonProYtd <> 0 THEN
2250 hr_utility.set_location('py_za_tx_01032000.DirCalc',12);
2251 -- Check Bonus Provision Frequency
2252 IF dbi_BP_TX_RCV = 'A' THEN
2253 hr_utility.set_location('py_za_tx_01032000.DirCalc',13);
2254 trc_LibFpAB := 0;
2255 ELSE
2256 hr_utility.set_location('py_za_tx_01032000.DirCalc',14);
2257 trc_LibFpAB :=
2258 trc_LibFyAB - (bal_TX_ON_BP_YTD
2259 + trc_LibFpBP
2260 + bal_TX_ON_AB_YTD);
2261 END IF;
2262 ELSE
2263 hr_utility.set_location('py_za_tx_01032000.DirCalc',15);
2264 trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
2265 END IF;
2266 ELSE
2267 hr_utility.set_location('py_za_tx_01032000.DirCalc',16);
2268 trc_AnnBonErn := trc_TrvAllErn;
2269 trc_TotLibAB := trc_TotLibTA;
2270 -- Refund any tax paid
2271 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
2272 trc_NpValABOvr := TRUE;
2273 END IF;
2274
2275 -- Annual Payments
2276 --
2277 -- Ytd Annual Payments
2278 trc_AnnPymYtd :=
2279 ( bal_AC_NRFI_YTD
2280 + bal_AC_RFI_YTD
2281 + bal_ANU_FRM_RET_FND_NRFI_YTD
2282 + bal_ANU_FRM_RET_FND_RFI_YTD
2283 + bal_PRCH_ANU_TXB_NRFI_YTD
2284 + bal_PRCH_ANU_TXB_RFI_YTD
2285 + bal_TXB_AP_NRFI_YTD
2286 + bal_TXB_AP_RFI_YTD
2287 );
2288 -- Skip the calculation if there is No Income
2289 IF trc_AnnPymYtd <> 0 THEN
2290 hr_utility.set_location('py_za_tx_01032000.DirCalc',17);
2291 -- Annual Payments Earnings
2292 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
2293 -- Tax Liability
2294 trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_AnnPymErn);
2295 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
2296 trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
2297 ElSE
2298 hr_utility.set_location('py_za_tx_01032000.DirCalc',18);
2299 trc_AnnPymErn := trc_AnnBonErn;
2300 trc_TotLibAP := trc_TotLibAB;
2301 -- Refund any tax paid
2302 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
2303 trc_NpValAPOvr := TRUE;
2304 END IF;
2305
2306 -- Public Office Allowance
2307 --
2308 -- Ytd Public Office Allowance
2309 trc_PblOffYtd :=
2310 ( bal_PO_NRFI_YTD
2311 + bal_PO_RFI_YTD
2312 );
2313 -- Skip the calculation if there is No Income
2314 IF trc_PblOffYtd <> 0 THEN
2315 hr_utility.set_location('py_za_tx_01032000.DirCalc',19);
2316 -- Tax Liability
2317 trc_LibFyPO := trc_PblOffYtd * glb_ZA_PBL_TX_RTE / 100;
2318 trc_LibFpPO := trc_LibFyPO - bal_TX_ON_PO_YTD;
2319 ELSE
2320 hr_utility.set_location('py_za_tx_01032000.DirCalc',20);
2321 trc_LibFyPO := 0;
2322 -- Refund any tax paid
2323 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
2324 trc_NpValPOOvr := TRUE;
2325 END IF;
2326
2327 -- Net Pay Validation
2328 --
2329 py_za_tx_utl_01032000.NpVal(p_Rf => TRUE);
2330
2331 hr_utility.set_location('py_za_tx_01032000.DirCalc',21);
2332
2333 -- Tax Percentage Indicator
2334 --
2335 IF dbi_TX_STA = 'D' THEN
2336 hr_utility.set_location('py_za_tx_01032000.DirCalc',22);
2337 trc_TxPercVal := dbi_TX_DIR_VAL;
2338 ELSIF dbi_TX_STA = 'E' THEN
2339 hr_utility.set_location('py_za_tx_01032000.DirCalc',23);
2340 trc_TxPercVal := glb_ZA_CC_TX_PRC;
2341 ELSIF dbi_TX_STA = 'F' THEN
2342 hr_utility.set_location('py_za_tx_01032000.DirCalc',24);
2343 trc_TxPercVal := glb_ZA_TMP_TX_RTE;
2344 ELSE
2345 hr_utility.set_location('py_za_tx_01032000.DirCalc',25);
2346 trc_TxPercVal := 0;
2347 END IF;
2348
2349 hr_utility.set_location('py_za_tx_01032000.DirCalc',26);
2350
2351 -- Base Income
2352 py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
2353 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
2354 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
2355 -- Normal Income
2356 py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
2357 py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
2358 py_za_tx_utl_01032000.WriteHrTrace('trc_NorErn: '||to_char(trc_NorErn));
2359 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
2360 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibNI: '||to_char(trc_TotLibNI));
2361 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyNI: '||to_char(trc_LibFyNI));
2362 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpNI: '||to_char(trc_LibFpNI));
2363 -- Fringe Benefits
2364 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
2365 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
2366 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
2367 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
2368 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibFB: '||to_char(trc_TotLibFB));
2369 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyFB: '||to_char(trc_LibFyFB));
2370 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpFB: '||to_char(trc_LibFpFB));
2371 -- Travel Allowance
2372 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
2373 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
2374 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
2375 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
2376 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibTA: '||to_char(trc_TotLibTA));
2377 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyTA: '||to_char(trc_LibFyTA));
2378 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpTA: '||to_char(trc_LibFpTA));
2379 -- Bonus Provision
2380 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProYtd: '||to_char(trc_BonProYtd));
2381 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProPtd: '||to_char(trc_BonProPtd));
2382 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProErn: '||to_char(trc_BonProErn));
2383 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
2384 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBP: '||to_char(trc_TotLibBP));
2385 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyBP: '||to_char(trc_LibFyBP));
2386 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpBP: '||to_char(trc_LibFpBP));
2387 -- Annual Bonus
2388 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
2389 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
2390 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
2391 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
2392 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAB: '||to_char(trc_TotLibAB));
2393 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAB: '||to_char(trc_LibFyAB));
2394 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAB: '||to_char(trc_LibFpAB));
2395 -- Annual Payments
2396 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
2397 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
2398 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
2399 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2400 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
2401 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
2402 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
2403 -- Pubilc Office Allowance
2404 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
2405 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
2406 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffErn: '||to_char(trc_PblOffErn));
2407 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyPO: '||to_char(trc_LibFyPO));
2408 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpPO: '||to_char(trc_LibFpPO));
2409
2410 EXCEPTION
2411 WHEN OTHERS THEN
2412 IF xpt_Msg = 'No Error' THEN
2413 xpt_Msg := 'DirCalc: '||TO_CHAR(SQLCODE);
2414 END IF;
2415 RAISE xpt_E;
2416 END DirCalc;
2417
2418
2419 PROCEDURE BasCalc AS
2420 -- Variables
2421 --
2422 l_Np NUMBER(15,2);
2423 l_65Year DATE;
2424
2425 BEGIN
2426 hr_utility.set_location('py_za_tx_01032000.BasCalc',1);
2427 -- Identify the Calculation
2428 --
2429 trc_CalTyp := 'BasCalc';
2430
2431 -- Tax Rebates, Threshold Figure and Medical Aid
2432 -- Abatements
2433 -- Calculate the assignments 65 Year Date
2434 l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
2435
2436 hr_utility.set_location('py_za_tx_01032000.BasCalc',2);
2437
2438 IF l_65Year BETWEEN dbi_ZA_TX_YR_STRT AND dbi_ZA_TX_YR_END THEN
2439 hr_utility.set_location('py_za_tx_01032000.BasCalc',3);
2440 -- give the extra abatement
2441 trc_Rebate := glb_ZA_PRI_TX_RBT + glb_ZA_ADL_TX_RBT;
2442 trc_Threshold := glb_ZA_SC_TX_THRSHLD;
2443 ELSE
2444 hr_utility.set_location('py_za_tx_01032000.BasCalc',4);
2445 -- not eligable for extra abatement
2446 trc_Rebate := glb_ZA_PRI_TX_RBT;
2447 trc_Threshold := glb_ZA_PRI_TX_THRSHLD;
2448 END IF;
2449
2450 -- Base Earnings
2451 --
2452 --Base Earnings
2453 trc_BseErn :=
2454 ( bal_AB_NRFI_PTD
2455 + bal_AB_RFI_PTD
2456 + bal_AC_NRFI_PTD
2457 + bal_AC_RFI_PTD
2458 + bal_ANU_FRM_RET_FND_NRFI_PTD
2459 + bal_ANU_FRM_RET_FND_RFI_PTD
2460 + bal_PRCH_ANU_TXB_NRFI_PTD
2461 + bal_PRCH_ANU_TXB_RFI_PTD
2462 + bal_TXB_AP_NRFI_PTD
2463 + bal_TXB_AP_RFI_PTD
2464 );
2465 -- Estimate Base Taxable Income
2466 trc_TxbBseInc := trc_BseErn * dbi_ZA_PAY_PRDS_PER_YR;
2467 -- Threshold Check
2468 IF trc_TxbBseInc >= trc_Threshold THEN
2469 hr_utility.set_location('py_za_tx_01032000.BasCalc',5);
2470 -- Tax Liability
2471 trc_TotLibBse := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbBseInc);
2472 ELSE
2473 hr_utility.set_location('py_za_tx_01032000.BasCalc',6);
2474 trc_TotLibBse := 0;
2475 END IF;
2476
2477 -- Annual Bonus
2478 --
2479 -- Ytd Annual Bonus
2480 trc_AnnBonYtd :=
2481 ( bal_AB_NRFI_YTD
2482 + bal_AB_RFI_YTD
2483 );
2484 -- Skip the calculation if there is No Income
2485 IF trc_AnnBonYtd <> 0 THEN
2486 hr_utility.set_location('py_za_tx_01032000.BasCalc',7);
2487 -- Taxable Annual Bonus Income
2488 trc_TxbAnnBonInc := trc_AnnBonYtd + trc_TxbBseInc;
2489 -- Threshold Check
2490 IF trc_TxbAnnBonInc >= trc_Threshold THEN
2491 hr_utility.set_location('py_za_tx_01032000.BasCalc',8);
2492 -- Tax Liability
2493 trc_TotLibAB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnBonInc);
2494 trc_LibFyAB := trc_TotLibAB - trc_TotLibBse;
2495 -- Negative Check
2496 IF trc_LibFyAB < 0 THEN
2497 hr_utility.set_location('py_za_tx_01032000.BasCalc',9);
2498 trc_TotLibAB := trc_TotLibBse;
2499 -- Refund any tax paid
2500 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
2501 trc_NpValABOvr := TRUE;
2502 ELSE
2503 -- Check Bonus Provision
2504 IF bal_BP_YTD <> 0 THEN
2505 hr_utility.set_location('py_za_tx_01032000.BasCalc',10);
2506 -- Check Bonus Provision Frequency
2507 IF dbi_BP_TX_RCV = 'A' THEN
2508 hr_utility.set_location('py_za_tx_01032000.BasCalc',11);
2509 trc_LibFpAB := 0;
2510 ELSE
2511 hr_utility.set_location('py_za_tx_01032000.BasCalc',12);
2512 trc_LibFpAB :=
2513 trc_LibFyAB - ( bal_TX_ON_BP_YTD
2514 + bal_TX_ON_AB_YTD);
2515 END IF;
2516 ELSE
2517 hr_utility.set_location('py_za_tx_01032000.BasCalc',13);
2518 trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
2519 END IF;
2520 END IF;
2521 ELSE
2522 hr_utility.set_location('py_za_tx_01032000.BasCalc',14);
2523 trc_TotLibAB := trc_TotLibBse;
2524 END IF;
2525 ELSE
2526 hr_utility.set_location('py_za_tx_01032000.BasCalc',15);
2527 trc_TotLibAB := trc_TotLibBse;
2528 trc_TxbAnnBonInc := trc_TxbBseInc;
2529 END IF;
2530
2531 -- Annual Payments
2532 --
2533 -- Ytd Annual Payments
2534 trc_AnnPymYtd :=
2535 ( bal_AC_NRFI_YTD
2536 + bal_AC_RFI_YTD
2537 + bal_ANU_FRM_RET_FND_NRFI_YTD
2538 + bal_ANU_FRM_RET_FND_RFI_YTD
2539 + bal_PRCH_ANU_TXB_NRFI_YTD
2540 + bal_PRCH_ANU_TXB_RFI_YTD
2541 + bal_TXB_AP_NRFI_YTD
2542 + bal_TXB_AP_RFI_YTD
2543 );
2544 -- Skip the calculation if there is No Income
2545 IF trc_AnnPymYtd <> 0 THEN
2546 hr_utility.set_location('py_za_tx_01032000.BasCalc',16);
2547 -- Taxable Annual Payments Income
2548 trc_TxbAnnPymInc := trc_AnnPymYtd + trc_TxbAnnBonInc;
2549 -- Threshold Check
2550 IF trc_TxbAnnPymInc >= trc_Threshold THEN
2551 hr_utility.set_location('py_za_tx_01032000.BasCalc',17);
2552 -- Tax Liability
2553 trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2554 trc_LibFyAP := trc_TotLibAP - trc_TotLibAB;
2555 -- Negative Check
2556 IF trc_LibFyAP < 0 THEN
2557 hr_utility.set_location('py_za_tx_01032000.BasCalc',18);
2558 trc_TotLibAP := trc_TotLibAB;
2559 -- Refund any tax paid
2560 trc_LibFpAP := -1 * bal_TX_ON_AB_YTD;
2561 trc_NpValAPOvr := TRUE;
2562 ELSE
2563 hr_utility.set_location('py_za_tx_01032000.BasCalc',19);
2564 trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
2565 END IF;
2566 ELSE
2567 hr_utility.set_location('py_za_tx_01032000.BasCalc',20);
2568 NULL;
2569 END IF;
2570 ELSE
2571 hr_utility.set_location('py_za_tx_01032000.BasCalc',21);
2572 NULL;
2573 END IF;
2574
2575 -- Net Pay Validation
2576 --
2577 py_za_tx_utl_01032000.NpVal;
2578
2579 -- Base Income
2580 py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
2581 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
2582 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
2583 -- Normal Income
2584 py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
2585 py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
2586 py_za_tx_utl_01032000.WriteHrTrace('trc_NorErn: '||to_char(trc_NorErn));
2587 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
2588 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibNI: '||to_char(trc_TotLibNI));
2589 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyNI: '||to_char(trc_LibFyNI));
2590 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpNI: '||to_char(trc_LibFpNI));
2591 -- Fringe Benefits
2592 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
2593 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
2594 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
2595 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
2596 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibFB: '||to_char(trc_TotLibFB));
2597 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyFB: '||to_char(trc_LibFyFB));
2598 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpFB: '||to_char(trc_LibFpFB));
2599 -- Travel Allowance
2600 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
2601 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
2602 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
2603 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
2604 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibTA: '||to_char(trc_TotLibTA));
2605 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyTA: '||to_char(trc_LibFyTA));
2606 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpTA: '||to_char(trc_LibFpTA));
2607 -- Bonus Provision
2608 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProYtd: '||to_char(trc_BonProYtd));
2609 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProPtd: '||to_char(trc_BonProPtd));
2610 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProErn: '||to_char(trc_BonProErn));
2611 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
2612 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBP: '||to_char(trc_TotLibBP));
2613 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyBP: '||to_char(trc_LibFyBP));
2614 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpBP: '||to_char(trc_LibFpBP));
2615 -- Annual Bonus
2616 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
2617 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
2618 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
2619 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
2620 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAB: '||to_char(trc_TotLibAB));
2621 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAB: '||to_char(trc_LibFyAB));
2622 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAB: '||to_char(trc_LibFpAB));
2623 -- Annual Payments
2624 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
2625 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
2626 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
2627 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2628 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
2629 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
2630 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
2631 -- Pubilc Office Allowance
2632 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
2633 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
2634 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffErn: '||to_char(trc_PblOffErn));
2635 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyPO: '||to_char(trc_LibFyPO));
2636 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpPO: '||to_char(trc_LibFpPO));
2637
2638 EXCEPTION
2639 WHEN OTHERS THEN
2640 IF xpt_Msg = 'No Error' THEN
2641 xpt_Msg := 'BasCalc: '||TO_CHAR(SQLCODE);
2642 END IF;
2643 RAISE xpt_E;
2644 END BasCalc;
2645
2646
2647 PROCEDURE CalCalc AS
2648 -- Variables
2649 --
2650 l_Np NUMBER(15,2);
2651
2652 BEGIN
2653 hr_utility.set_location('py_za_tx_01032000.CalCalc',1);
2654 -- Identify the calculation
2655 --
2656 trc_CalTyp := 'CalCalc';
2657
2658 -- Update Global Balance Values with correct TAXABLE values
2659 --
2660 py_za_tx_utl_01032000.TrvAll;
2661
2662 hr_utility.set_location('py_za_tx_01032000.CalCalc',2);
2663
2664 -- Calendar Ytd Taxable Income
2665 --
2666 trc_TxbIncYtd :=
2667 ( bal_AST_PRCHD_RVAL_NRFI_CYTD
2668 + bal_AST_PRCHD_RVAL_RFI_CYTD
2669 + bal_BUR_AND_SCH_NRFI_CYTD
2670 + bal_BUR_AND_SCH_RFI_CYTD
2671 + bal_COMM_NRFI_CYTD
2672 + bal_COMM_RFI_CYTD
2673 + bal_COMP_ALL_NRFI_CYTD
2674 + bal_COMP_ALL_RFI_CYTD
2675 + bal_ENT_ALL_NRFI_CYTD
2676 + bal_ENT_ALL_RFI_CYTD
2677 + bal_FREE_ACCOM_NRFI_CYTD
2678 + bal_FREE_ACCOM_RFI_CYTD
2679 + bal_FREE_SERV_NRFI_CYTD
2680 + bal_FREE_SERV_RFI_CYTD
2681 + bal_LOW_LOANS_NRFI_CYTD
2682 + bal_LOW_LOANS_RFI_CYTD
2683 + bal_MLS_AND_VOUCH_NRFI_CYTD
2684 + bal_MLS_AND_VOUCH_RFI_CYTD
2685 + bal_MED_PAID_NRFI_CYTD
2686 + bal_MED_PAID_RFI_CYTD
2687 + bal_OTHER_TXB_ALL_NRFI_CYTD
2688 + bal_OTHER_TXB_ALL_RFI_CYTD
2689 + bal_OVTM_NRFI_CYTD
2690 + bal_OVTM_RFI_CYTD
2691 + bal_PYM_DBT_NRFI_CYTD
2692 + bal_PYM_DBT_RFI_CYTD
2693 + bal_RGT_AST_NRFI_CYTD
2694 + bal_RGT_AST_RFI_CYTD
2695 + bal_TXB_INC_NRFI_CYTD
2696 + bal_TXB_INC_RFI_CYTD
2697 + bal_TXB_PEN_NRFI_CYTD
2698 + bal_TXB_PEN_RFI_CYTD
2699 + bal_TEL_ALL_NRFI_CYTD
2700 + bal_TEL_ALL_RFI_CYTD
2701 + bal_TOOL_ALL_NRFI_CYTD
2702 + bal_TOOL_ALL_RFI_CYTD
2703 + bal_TA_NRFI_CYTD
2704 + bal_TA_RFI_CYTD
2705 + bal_USE_VEH_NRFI_CYTD
2706 + bal_USE_VEH_RFI_CYTD
2707 );
2708
2709 -- If there is no Income Execute the Base calculation
2710 --
2711 IF trc_TxbIncYtd = 0 THEN
2712 hr_utility.set_location('py_za_tx_01032000.CalCalc',3);
2713 BasCalc;
2714 ELSE -- continue CalCalc
2715 hr_utility.set_location('py_za_tx_01032000.CalCalc',4);
2716 -- Site Factor
2717 --
2718 trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032000.DaysWorked;
2719
2720 -- Rebates
2721 py_za_tx_utl_01032000.SetRebates;
2722
2723 -- Abatements
2724 py_za_tx_utl_01032000.Abatements;
2725
2726 hr_utility.set_location('py_za_tx_01032000.CalCalc',5);
2727
2728 -- Base Earnings
2729 --
2730 -- Base Earnings
2731 trc_BseErn := trc_TxbIncYtd * trc_SitFactor;
2732 -- Taxable Base Income
2733 trc_TxbBseInc := trc_BseErn - trc_PerTotAbm;
2734 -- Threshold Check
2735 IF trc_TxbBseInc >= trc_Threshold THEN
2736 hr_utility.set_location('py_za_tx_01032000.CalCalc',6);
2737 -- Tax Liability
2738 trc_TotLibBse := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbBseInc);
2739 ELSE
2740 hr_utility.set_location('py_za_tx_01032000.CalCalc',7);
2741 trc_TotLibBse := 0;
2742 END IF;
2743
2744 -- Annual Bonus
2745 --
2746 -- Ytd Annual Bonus
2747 trc_AnnBonYtd :=
2748 ( bal_AB_NRFI_YTD
2749 + bal_AB_RFI_YTD
2750 );
2751 -- Skip the calculation if there is No Income
2752 IF trc_AnnBonYtd <> 0 THEN
2753 hr_utility.set_location('py_za_tx_01032000.CalCalc',8);
2754 -- Annual Bonus Earnings
2755 trc_AnnBonErn := trc_AnnBonYtd + trc_BseErn;
2756 -- Taxable Annual Bonus Income
2757 trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
2758 -- Threshold Check
2759 IF trc_TxbAnnBonInc >= trc_Threshold THEN
2760 hr_utility.set_location('py_za_tx_01032000.CalCalc',9);
2761 -- Tax Liability
2762 trc_TotLibAB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnBonInc);
2763 trc_LibFyAB := trc_TotLibAB - trc_TotLibBse;
2764 -- Negative Check
2765 IF trc_LibFyAB < 0 THEN
2766 hr_utility.set_location('py_za_tx_01032000.CalCalc',10);
2767 trc_TotLibAB := trc_TotLibBse;
2768 -- Refund any tax paid
2769 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
2770 trc_NpValABOvr := TRUE;
2771 ELSE
2772 -- Check Bonus Provision
2773 IF bal_BP_YTD <> 0 THEN
2774 hr_utility.set_location('py_za_tx_01032000.CalCalc',11);
2775 -- Check Bonus Provision Frequency
2776 IF dbi_BP_TX_RCV = 'A' THEN
2777 hr_utility.set_location('py_za_tx_01032000.CalCalc',12);
2778 trc_LibFpAB := 0;
2779 ELSE
2780 hr_utility.set_location('py_za_tx_01032000.CalCalc',13);
2781 trc_LibFpAB :=
2782 trc_LibFyAB - ( bal_TX_ON_BP_YTD
2783 + bal_TX_ON_AB_YTD);
2784 END IF;
2785 ELSE
2786 hr_utility.set_location('py_za_tx_01032000.CalCalc',14);
2787 trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
2788 END IF;
2789 END IF;
2790 ELSE
2791 hr_utility.set_location('py_za_tx_01032000.CalCalc',15);
2792 trc_TotLibAB := trc_TotLibBse;
2793 END IF;
2794 ELSE
2795 hr_utility.set_location('py_za_tx_01032000.CalCalc',16);
2796 trc_AnnBonErn := trc_BseErn;-- Cascade Figure
2797 trc_TxbAnnBonInc := trc_TxbBseInc;
2798 trc_TotLibAB := trc_TotLibBse;
2799 END IF;
2800
2801 -- Annual Payments
2802 --
2803 -- Ytd Annual Payments
2804 trc_AnnPymYtd :=
2805 ( bal_AC_NRFI_YTD
2806 + bal_AC_RFI_YTD
2807 + bal_ANU_FRM_RET_FND_NRFI_YTD
2808 + bal_ANU_FRM_RET_FND_RFI_YTD
2809 + bal_PRCH_ANU_TXB_NRFI_YTD
2810 + bal_PRCH_ANU_TXB_RFI_YTD
2811 + bal_TXB_AP_NRFI_YTD
2812 + bal_TXB_AP_RFI_YTD
2813 );
2814 -- Skip the calculation if there is No Income
2815 IF trc_AnnPymYtd <> 0 THEN
2816 hr_utility.set_location('py_za_tx_01032000.CalCalc',17);
2817 -- Annual Payments Earnings
2818 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
2819 -- Taxable Annual Payments Income
2820 trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
2821 -- Threshold Check
2822 IF trc_TxbAnnPymInc >= trc_Threshold THEN
2823 hr_utility.set_location('py_za_tx_01032000.CalCalc',18);
2824 -- Tax Liability
2825 trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2826 trc_LibFyAP := trc_TotLibAP - trc_TotLibAB;
2827 -- Negative Check
2828 IF trc_LibFyAP < 0 THEN
2829 hr_utility.set_location('py_za_tx_01032000.CalCalc',19);
2830 trc_TotLibAP := trc_TotLibAB;
2831 -- Refund any tax paid
2832 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
2833 trc_NpValAPOvr := TRUE;
2834 ELSE
2835 hr_utility.set_location('py_za_tx_01032000.CalCalc',20);
2836 trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
2837 END IF;
2838 ELSE
2839 hr_utility.set_location('py_za_tx_01032000.CalCalc',21);
2840 trc_TotLibAP := trc_TotLibAB;
2841 END IF;
2842 ELSE
2843 hr_utility.set_location('py_za_tx_01032000.CalCalc',22);
2844 trc_AnnPymErn := trc_AnnBonErn;
2845 trc_TxbAnnPymInc := trc_TxbAnnBonInc;
2846 trc_TotLibAP := trc_TotLibAB;
2847 END IF;
2848
2849 -- Net pay Validation
2850 --
2851 py_za_tx_utl_01032000.NpVal;
2852
2853 -- Base Income
2854 py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
2855 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
2856 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
2857 -- Normal Income
2858 py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
2859 py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
2860 py_za_tx_utl_01032000.WriteHrTrace('trc_NorErn: '||to_char(trc_NorErn));
2861 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
2862 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibNI: '||to_char(trc_TotLibNI));
2863 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyNI: '||to_char(trc_LibFyNI));
2864 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpNI: '||to_char(trc_LibFpNI));
2865 -- Fringe Benefits
2866 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
2867 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
2868 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
2869 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
2870 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibFB: '||to_char(trc_TotLibFB));
2871 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyFB: '||to_char(trc_LibFyFB));
2872 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpFB: '||to_char(trc_LibFpFB));
2873 -- Travel Allowance
2874 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
2875 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
2876 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
2877 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
2878 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibTA: '||to_char(trc_TotLibTA));
2879 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyTA: '||to_char(trc_LibFyTA));
2880 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpTA: '||to_char(trc_LibFpTA));
2881 -- Bonus Provision
2882 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProYtd: '||to_char(trc_BonProYtd));
2883 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProPtd: '||to_char(trc_BonProPtd));
2884 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProErn: '||to_char(trc_BonProErn));
2885 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
2886 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBP: '||to_char(trc_TotLibBP));
2887 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyBP: '||to_char(trc_LibFyBP));
2888 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpBP: '||to_char(trc_LibFpBP));
2889 -- Annual Bonus
2890 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
2891 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
2892 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
2893 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
2894 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAB: '||to_char(trc_TotLibAB));
2895 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAB: '||to_char(trc_LibFyAB));
2896 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAB: '||to_char(trc_LibFpAB));
2897 -- Annual Payments
2898 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
2899 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
2900 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
2901 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2902 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
2903 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
2904 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
2905 -- Pubilc Office Allowance
2906 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
2907 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
2908 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffErn: '||to_char(trc_PblOffErn));
2909 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyPO: '||to_char(trc_LibFyPO));
2910 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpPO: '||to_char(trc_LibFpPO));
2911
2912 END IF;
2913
2914 hr_utility.set_location('py_za_tx_01032000.CalCalc',23);
2915
2916 EXCEPTION
2917 WHEN OTHERS THEN
2918 IF xpt_Msg = 'No Error' THEN
2919 xpt_Msg := 'CalCalc: '||TO_CHAR(SQLCODE);
2920 END IF;
2921 RAISE xpt_E;
2922 END CalCalc;
2923
2924
2925 PROCEDURE YtdCalc AS
2926 -- Variables
2927 --
2928 l_Np NUMBER(15,2);
2929
2930 BEGIN
2931 hr_utility.set_location('py_za_tx_01032000.YtdCalc',1);
2932 -- Identify the calculation
2933 --
2934 trc_CalTyp := 'YtdCalc';
2935
2936 -- Update Global Balance Values with correct TAXABLE values
2937 py_za_tx_utl_01032000.TrvAll;
2938
2939 hr_utility.set_location('py_za_tx_01032000.YtdCalc',2);
2940
2941 -- Ytd Taxable Income
2942 trc_TxbIncYtd :=
2943 ( bal_AST_PRCHD_RVAL_NRFI_YTD
2944 + bal_AST_PRCHD_RVAL_RFI_YTD
2945 + bal_BP_YTD
2946 + bal_BUR_AND_SCH_NRFI_YTD
2947 + bal_BUR_AND_SCH_RFI_YTD
2948 + bal_COMM_NRFI_YTD
2949 + bal_COMM_RFI_YTD
2950 + bal_COMP_ALL_NRFI_YTD
2951 + bal_COMP_ALL_RFI_YTD
2952 + bal_ENT_ALL_NRFI_YTD
2953 + bal_ENT_ALL_RFI_YTD
2954 + bal_FREE_ACCOM_NRFI_YTD
2955 + bal_FREE_ACCOM_RFI_YTD
2956 + bal_FREE_SERV_NRFI_YTD
2957 + bal_FREE_SERV_RFI_YTD
2958 + bal_LOW_LOANS_NRFI_YTD
2959 + bal_LOW_LOANS_RFI_YTD
2960 + bal_MLS_AND_VOUCH_NRFI_YTD
2961 + bal_MLS_AND_VOUCH_RFI_YTD
2962 + bal_MED_PAID_NRFI_YTD
2963 + bal_MED_PAID_RFI_YTD
2964 + bal_OTHER_TXB_ALL_NRFI_YTD
2965 + bal_OTHER_TXB_ALL_RFI_YTD
2966 + bal_OVTM_NRFI_YTD
2967 + bal_OVTM_RFI_YTD
2968 + bal_PYM_DBT_NRFI_YTD
2969 + bal_PYM_DBT_RFI_YTD
2970 + bal_RGT_AST_NRFI_YTD
2971 + bal_RGT_AST_RFI_YTD
2972 + bal_TXB_INC_NRFI_YTD
2973 + bal_TXB_INC_RFI_YTD
2974 + bal_TXB_PEN_NRFI_YTD
2975 + bal_TXB_PEN_RFI_YTD
2976 + bal_TEL_ALL_NRFI_YTD
2977 + bal_TEL_ALL_RFI_YTD
2978 + bal_TOOL_ALL_NRFI_YTD
2979 + bal_TOOL_ALL_RFI_YTD
2980 + bal_TA_NRFI_YTD
2981 + bal_TA_RFI_YTD
2982 + bal_USE_VEH_NRFI_YTD
2983 + bal_USE_VEH_RFI_YTD
2984 );
2985
2986 -- If the Ytd Taxable Income = 0, execute the CalCalc
2987 IF trc_TxbIncYtd = 0 THEN
2988 hr_utility.set_location('py_za_tx_01032000.YtdCalc',3);
2989 CalCalc;
2990 ELSE --Continue YtdCalc
2991 hr_utility.set_location('py_za_tx_01032000.YtdCalc',4);
2992 -- Site Factor
2993 trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032000.DaysWorked;
2994
2995 -- Rebates
2996 py_za_tx_utl_01032000.SetRebates;
2997
2998 -- Abatements
2999 py_za_tx_utl_01032000.Abatements;
3000
3001 hr_utility.set_location('py_za_tx_01032000.YtdCalc',5);
3002
3003 -- Base Earnings
3004 --
3005 -- Base Earnings
3006 trc_BseErn := trc_TxbIncYtd * trc_SitFactor;
3007 -- Taxable Base Income
3008 trc_TxbBseInc := trc_BseErn - trc_PerTotAbm;
3009 -- Threshold Check
3010 IF trc_TxbBseInc >= trc_Threshold THEN
3011 hr_utility.set_location('py_za_tx_01032000.YtdCalc',6);
3012 -- Tax Liability
3013 trc_TotLibBse := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbBseInc);
3014 ELSE
3015 hr_utility.set_location('py_za_tx_01032000.YtdCalc',7);
3016 trc_TotLibBse := 0;
3017 END IF;
3018
3019 -- Annual Bonus
3020 --
3021 -- Ytd Annual Bonus
3022 trc_AnnBonYtd :=
3023 ( bal_AB_NRFI_YTD
3024 + bal_AB_RFI_YTD
3025 );
3026 -- Skip the calculation if there is No Income
3027 IF trc_AnnBonYtd <> 0 THEN
3028 hr_utility.set_location('py_za_tx_01032000.YtdCalc',8);
3029 -- Annual Bonus Earnings
3030 trc_AnnBonErn := trc_AnnBonYtd + trc_BseErn;
3031 -- Taxable Annual Bonus Income
3032 trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
3033 -- Threshold Check
3034 IF trc_TxbAnnBonInc >= trc_Threshold THEN
3035 hr_utility.set_location('py_za_tx_01032000.YtdCalc',9);
3036 -- Tax Liability
3037 trc_TotLibAB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnBonInc);
3038 trc_LibFyAB := trc_TotLibAB - trc_TotLibBse;
3039 -- Negative Check
3040 IF trc_LibFyAB < 0 THEN
3041 hr_utility.set_location('py_za_tx_01032000.YtdCalc',10);
3042 trc_TotLibAB := trc_TotLibBse;
3043 -- Refund any tax paid
3044 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
3045 trc_NpValABOvr := TRUE;
3046 ELSE
3047 -- Check Bonus Provision
3048 IF bal_BP_YTD <> 0 THEN
3049 hr_utility.set_location('py_za_tx_01032000.YtdCalc',11);
3050 -- Check Bonus Provision Frequency
3051 IF dbi_BP_TX_RCV = 'A' THEN
3052 hr_utility.set_location('py_za_tx_01032000.YtdCalc',12);
3053 trc_LibFpAB := 0;
3054 ELSE
3055 hr_utility.set_location('py_za_tx_01032000.YtdCalc',13);
3056 trc_LibFpAB :=
3057 trc_LibFyAB - ( bal_TX_ON_BP_YTD
3058 + bal_TX_ON_AB_YTD);
3059 END IF;
3060 ELSE
3061 hr_utility.set_location('py_za_tx_01032000.YtdCalc',14);
3062 trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
3063 END IF;
3064 END IF;
3065 ELSE
3066 hr_utility.set_location('py_za_tx_01032000.YtdCalc',15);
3067 trc_TotLibAB := trc_TotLibBse;
3068 END IF;
3069 ELSE
3070 hr_utility.set_location('py_za_tx_01032000.YtdCalc',16);
3071 trc_AnnBonErn := trc_BseErn;-- Cascade Figure
3072 trc_TxbAnnBonInc := trc_TxbBseInc;
3073 trc_TotLibAB := trc_TotLibBse;
3074 END IF;
3075
3076 -- Annual Payments
3077 --
3078 -- Ytd Annual Payments
3079 trc_AnnPymYtd :=
3080 ( bal_AC_NRFI_YTD
3081 + bal_AC_RFI_YTD
3082 + bal_ANU_FRM_RET_FND_NRFI_YTD
3083 + bal_ANU_FRM_RET_FND_RFI_YTD
3084 + bal_PRCH_ANU_TXB_NRFI_YTD
3085 + bal_PRCH_ANU_TXB_RFI_YTD
3086 + bal_TXB_AP_NRFI_YTD
3087 + bal_TXB_AP_RFI_YTD
3088 );
3089 -- Skip the calculation if there is No Income
3090 IF trc_AnnPymYtd <> 0 THEN
3091 hr_utility.set_location('py_za_tx_01032000.YtdCalc',17);
3092 -- Annual Payments Earnings
3093 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
3094 -- Taxable Annual Payments Income
3095 trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
3096 -- Threshold Check
3097 IF trc_TxbAnnPymInc >= trc_Threshold THEN
3098 hr_utility.set_location('py_za_tx_01032000.YtdCalc',18);
3099 -- Tax Liability
3100 trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnPymInc);
3101 trc_LibFyAP := trc_TotLibAP - trc_TotLibAB;
3102 -- Negative Check
3103 IF trc_LibFyAP < 0 THEN
3104 hr_utility.set_location('py_za_tx_01032000.YtdCalc',19);
3105 trc_TotLibAP := trc_TotLibAB;
3106 -- Refund any tax paid
3107 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
3108 trc_NpValAPOvr := TRUE;
3109 ELSE
3110 hr_utility.set_location('py_za_tx_01032000.YtdCalc',20);
3111 trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
3112 END IF;
3113 ELSE
3114 hr_utility.set_location('py_za_tx_01032000.YtdCalc',21);
3115 trc_TotLibAP := trc_TotLibAB;
3116 END IF;
3117 ELSE
3118 hr_utility.set_location('py_za_tx_01032000.YtdCalc',22);
3119 trc_AnnPymErn := trc_AnnBonErn;-- Cascade Figure
3120 trc_TxbAnnPymInc := trc_TxbAnnBonInc;
3121 trc_TotLibAP := trc_TotLibAB;
3122 END IF;
3123
3124 -- Net Pay validation
3125 --
3126 py_za_tx_utl_01032000.NpVal;
3127
3128 hr_utility.set_location('py_za_tx_01032000.YtdCalc',23);
3129
3130 -- Base Income
3131 py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
3132 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
3133 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
3134 -- Normal Income
3135 py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
3136 py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
3137 py_za_tx_utl_01032000.WriteHrTrace('trc_NorErn: '||to_char(trc_NorErn));
3138 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
3139 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibNI: '||to_char(trc_TotLibNI));
3140 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyNI: '||to_char(trc_LibFyNI));
3141 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpNI: '||to_char(trc_LibFpNI));
3142 -- Fringe Benefits
3143 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
3144 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
3145 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
3146 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
3147 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibFB: '||to_char(trc_TotLibFB));
3148 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyFB: '||to_char(trc_LibFyFB));
3149 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpFB: '||to_char(trc_LibFpFB));
3150 -- Travel Allowance
3151 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
3152 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
3153 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
3154 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
3155 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibTA: '||to_char(trc_TotLibTA));
3156 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyTA: '||to_char(trc_LibFyTA));
3157 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpTA: '||to_char(trc_LibFpTA));
3158 -- Bonus Provision
3159 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProYtd: '||to_char(trc_BonProYtd));
3160 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProPtd: '||to_char(trc_BonProPtd));
3161 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProErn: '||to_char(trc_BonProErn));
3162 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
3163 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBP: '||to_char(trc_TotLibBP));
3164 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyBP: '||to_char(trc_LibFyBP));
3165 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpBP: '||to_char(trc_LibFpBP));
3166 -- Annual Bonus
3167 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
3168 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
3169 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
3170 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
3171 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAB: '||to_char(trc_TotLibAB));
3172 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAB: '||to_char(trc_LibFyAB));
3173 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAB: '||to_char(trc_LibFpAB));
3174 -- Annual Payments
3175 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
3176 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
3177 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
3178 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
3179 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
3180 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
3181 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
3182 -- Pubilc Office Allowance
3183 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
3184 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
3185 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffErn: '||to_char(trc_PblOffErn));
3186 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyPO: '||to_char(trc_LibFyPO));
3187 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpPO: '||to_char(trc_LibFpPO));
3188
3189 END IF;
3190
3191 EXCEPTION
3192 WHEN OTHERS THEN
3193 IF xpt_Msg = 'No Error' THEN
3194 xpt_Msg := 'YtdCalc: '||TO_CHAR(SQLCODE);
3195 END IF;
3196 RAISE xpt_E;
3197 END YtdCalc;
3198
3199
3200 PROCEDURE NorCalc AS
3201 -- Variables
3202 --
3203 l_Np NUMBER(15,2) DEFAULT 0;
3204
3205 BEGIN
3206 hr_utility.set_location('py_za_tx_01032000.NorCalc',1);
3207 -- Identify the calculation
3208 --
3209 trc_CalTyp := 'NorCalc';
3210
3211 -- Update Global Balance Values with correct TAXABLE values
3212 --
3213 bal_TA_RFI_PTD :=
3214 bal_TA_RFI_PTD * glb_ZA_TRV_ALL_TX_PRC / 100;
3215
3216 bal_TA_NRFI_PTD :=
3217 bal_TA_NRFI_PTD * glb_ZA_TRV_ALL_TX_PRC / 100;
3218
3219 py_za_tx_utl_01032000.TrvAll;
3220
3221 hr_utility.set_location('py_za_tx_01032000.NorCalc',2);
3222
3223 bal_PO_RFI_PTD :=
3224 bal_PO_RFI_PTD * glb_ZA_PBL_TX_PRC / 100;
3225
3226 bal_PO_NRFI_PTD :=
3227 bal_PO_NRFI_PTD * glb_ZA_PBL_TX_PRC / 100;
3228
3229 bal_PO_RFI_YTD :=
3230 bal_PO_RFI_YTD * glb_ZA_PBL_TX_PRC / 100;
3231
3232 bal_PO_NRFI_YTD :=
3233 bal_PO_NRFI_YTD * glb_ZA_PBL_TX_PRC / 100;
3234
3235
3236
3237 -- PTD Taxable Income
3238 --
3239 trc_TxbIncPtd :=
3240 ( bal_AST_PRCHD_RVAL_NRFI_PTD
3241 + bal_AST_PRCHD_RVAL_RFI_PTD
3242 + bal_BP_PTD
3243 + bal_BUR_AND_SCH_NRFI_PTD
3244 + bal_BUR_AND_SCH_RFI_PTD
3245 + bal_COMM_NRFI_PTD
3246 + bal_COMM_RFI_PTD
3247 + bal_COMP_ALL_NRFI_PTD
3248 + bal_COMP_ALL_RFI_PTD
3249 + bal_ENT_ALL_NRFI_PTD
3250 + bal_ENT_ALL_RFI_PTD
3251 + bal_FREE_ACCOM_NRFI_PTD
3252 + bal_FREE_ACCOM_RFI_PTD
3253 + bal_FREE_SERV_NRFI_PTD
3254 + bal_FREE_SERV_RFI_PTD
3255 + bal_LOW_LOANS_NRFI_PTD
3256 + bal_LOW_LOANS_RFI_PTD
3257 + bal_MLS_AND_VOUCH_NRFI_PTD
3258 + bal_MLS_AND_VOUCH_RFI_PTD
3259 + bal_MED_PAID_NRFI_PTD
3260 + bal_MED_PAID_RFI_PTD
3261 + bal_OTHER_TXB_ALL_NRFI_PTD
3262 + bal_OTHER_TXB_ALL_RFI_PTD
3263 + bal_OVTM_NRFI_PTD
3264 + bal_OVTM_RFI_PTD
3265 + bal_PYM_DBT_NRFI_PTD
3266 + bal_PYM_DBT_RFI_PTD
3267 + bal_RGT_AST_NRFI_PTD
3268 + bal_RGT_AST_RFI_PTD
3269 + bal_TXB_INC_NRFI_PTD
3270 + bal_TXB_INC_RFI_PTD
3271 + bal_TXB_PEN_NRFI_PTD
3272 + bal_TXB_PEN_RFI_PTD
3273 + bal_TEL_ALL_NRFI_PTD
3274 + bal_TEL_ALL_RFI_PTD
3275 + bal_TOOL_ALL_NRFI_PTD
3276 + bal_TOOL_ALL_RFI_PTD
3277 + bal_TA_NRFI_PTD
3278 + bal_TA_RFI_PTD
3279 + bal_USE_VEH_NRFI_PTD
3280 + bal_USE_VEH_RFI_PTD
3281 );
3282
3283 -- Period Factor
3284 py_za_tx_utl_01032000.PeriodFactor;
3285
3286 -- Possible Periods Factor
3287 py_za_tx_utl_01032000.PossiblePeriodsFactor;
3288
3289 -- Rebates
3290 py_za_tx_utl_01032000.SetRebates;
3291
3292 -- Abatements
3293 py_za_tx_utl_01032000.Abatements;
3294
3295 hr_utility.set_location('py_za_tx_01032000.NorCalc',3);
3296
3297 -- Normal Income
3298 --
3299 -- Ytd Normal Income
3300 trc_NorIncYtd :=
3301 ( bal_COMM_NRFI_YTD
3302 + bal_COMM_RFI_YTD
3303 + bal_COMP_ALL_NRFI_YTD
3304 + bal_COMP_ALL_RFI_YTD
3305 + bal_ENT_ALL_NRFI_YTD
3306 + bal_ENT_ALL_RFI_YTD
3307 + bal_OTHER_TXB_ALL_NRFI_YTD
3308 + bal_OTHER_TXB_ALL_RFI_YTD
3309 + bal_OVTM_NRFI_YTD
3310 + bal_OVTM_RFI_YTD
3311 + bal_TXB_INC_NRFI_YTD
3312 + bal_TXB_INC_RFI_YTD
3313 + bal_TXB_PEN_NRFI_YTD
3314 + bal_TXB_PEN_RFI_YTD
3315 + bal_TEL_ALL_NRFI_YTD
3316 + bal_TEL_ALL_RFI_YTD
3317 + bal_TOOL_ALL_NRFI_YTD
3318 + bal_TOOL_ALL_RFI_YTD
3319 );
3320
3321 -- Skip the calculation if there is No Income
3322 IF trc_NorIncYtd <> 0 THEN
3323 hr_utility.set_location('py_za_tx_01032000.NorCalc',4);
3324 -- Ptd Normal Income
3325 trc_NorIncPtd :=
3326 ( bal_COMM_NRFI_PTD
3327 + bal_COMM_RFI_PTD
3328 + bal_COMP_ALL_NRFI_PTD
3329 + bal_COMP_ALL_RFI_PTD
3330 + bal_ENT_ALL_NRFI_PTD
3331 + bal_ENT_ALL_RFI_PTD
3332 + bal_OTHER_TXB_ALL_NRFI_PTD
3333 + bal_OTHER_TXB_ALL_RFI_PTD
3334 + bal_OVTM_NRFI_PTD
3335 + bal_OVTM_RFI_PTD
3336 + bal_TXB_INC_NRFI_PTD
3337 + bal_TXB_INC_RFI_PTD
3338 + bal_TXB_PEN_NRFI_PTD
3339 + bal_TXB_PEN_RFI_PTD
3340 + bal_TEL_ALL_NRFI_PTD
3341 + bal_TEL_ALL_RFI_PTD
3342 + bal_TOOL_ALL_NRFI_PTD
3343 + bal_TOOL_ALL_RFI_PTD
3344 );
3345
3346 -- Annualise Normal Income
3347 trc_NorErn := py_za_tx_utl_01032000.Annualise
3348 (p_YtdInc => trc_NorIncYtd
3349 ,p_PtdInc => trc_NorIncPtd
3350 );
3351
3352 -- Taxable Normal Income
3353 trc_TxbNorInc := trc_NorErn - trc_PerTotAbm;
3354
3355 -- Threshold Check
3356 IF trc_TxbNorInc >= trc_Threshold THEN
3357 hr_utility.set_location('py_za_tx_01032000.NorCalc',5);
3358 -- Tax Liability
3359 trc_TotLibNI := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbNorInc);
3360 trc_LibFyNI := trc_TotLibNI - 0;
3361 -- DeAnnualise
3362 trc_LibFpNI := py_za_tx_utl_01032000.DeAnnualise
3363 (p_Liab => trc_LibFyNI
3364 ,p_TxOnYtd => bal_TX_ON_NI_YTD
3365 ,p_TxOnPtd => bal_TX_ON_NI_PTD
3366 );
3367 ELSE
3368 hr_utility.set_location('py_za_tx_01032000.NorCalc',6);
3369 trc_TotLibNI := 0;
3370 -- Refund any tax paid
3371 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
3372 trc_NpValNIOvr := TRUE;
3373 END IF;
3374 ELSE
3375 hr_utility.set_location('py_za_tx_01032000.NorCalc',7);
3376 trc_NorErn := 0;
3377 trc_TxbNorInc := 0;
3378 trc_TotLibNI := 0;
3379 -- Refund any tax paid
3380 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
3381 trc_NpValNIOvr := TRUE;
3382 END IF;
3383
3384 -- Fringe Benefits
3385 --
3386 -- Ytd Fringe Benefits
3387 trc_FrnBenYtd :=
3388 ( bal_AST_PRCHD_RVAL_NRFI_YTD
3389 + bal_AST_PRCHD_RVAL_RFI_YTD
3390 + bal_BUR_AND_SCH_NRFI_YTD
3391 + bal_BUR_AND_SCH_RFI_YTD
3392 + bal_FREE_ACCOM_NRFI_YTD
3393 + bal_FREE_ACCOM_RFI_YTD
3394 + bal_FREE_SERV_NRFI_YTD
3395 + bal_FREE_SERV_RFI_YTD
3396 + bal_LOW_LOANS_NRFI_YTD
3397 + bal_LOW_LOANS_RFI_YTD
3398 + bal_MLS_AND_VOUCH_NRFI_YTD
3399 + bal_MLS_AND_VOUCH_RFI_YTD
3400 + bal_MED_PAID_NRFI_YTD
3401 + bal_MED_PAID_RFI_YTD
3402 + bal_PYM_DBT_NRFI_YTD
3403 + bal_PYM_DBT_RFI_YTD
3404 + bal_RGT_AST_NRFI_YTD
3405 + bal_RGT_AST_RFI_YTD
3406 + bal_USE_VEH_NRFI_YTD
3407 + bal_USE_VEH_RFI_YTD
3408 );
3409
3410 -- Skip the calculation if there is No Income
3411 IF trc_FrnBenYtd <> 0 THEN
3412 hr_utility.set_location('py_za_tx_01032000.NorCalc',8);
3413 -- Ptd Fringe Benefits
3414 trc_FrnBenPtd :=
3415 ( bal_AST_PRCHD_RVAL_NRFI_PTD
3416 + bal_AST_PRCHD_RVAL_RFI_PTD
3417 + bal_BUR_AND_SCH_NRFI_PTD
3418 + bal_BUR_AND_SCH_RFI_PTD
3419 + bal_FREE_ACCOM_NRFI_PTD
3420 + bal_FREE_ACCOM_RFI_PTD
3421 + bal_FREE_SERV_NRFI_PTD
3422 + bal_FREE_SERV_RFI_PTD
3423 + bal_LOW_LOANS_NRFI_PTD
3424 + bal_LOW_LOANS_RFI_PTD
3425 + bal_MLS_AND_VOUCH_NRFI_PTD
3426 + bal_MLS_AND_VOUCH_RFI_PTD
3427 + bal_MED_PAID_NRFI_PTD
3428 + bal_MED_PAID_RFI_PTD
3429 + bal_PYM_DBT_NRFI_PTD
3430 + bal_PYM_DBT_RFI_PTD
3431 + bal_RGT_AST_NRFI_PTD
3432 + bal_RGT_AST_RFI_PTD
3433 + bal_USE_VEH_NRFI_PTD
3434 + bal_USE_VEH_RFI_PTD
3435 );
3436 -- Annualise Fringe Benefits
3437 trc_FrnBenErn := py_za_tx_utl_01032000.Annualise
3438 (p_YtdInc => trc_FrnBenYtd
3439 ,p_PtdInc => trc_FrnBenPtd
3440 ) + trc_NorErn;
3441 -- Taxable Fringe Income
3442 trc_TxbFrnInc := trc_FrnBenErn - trc_PerTotAbm;
3443 -- Threshold Check
3444 IF trc_TxbFrnInc >= trc_Threshold THEN
3445 hr_utility.set_location('py_za_tx_01032000.NorCalc',9);
3446 -- Tax Liability
3447 trc_TotLibFB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbFrnInc);
3448 trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
3449 -- DeAnnualise
3450 trc_LibFpFB := py_za_tx_utl_01032000.DeAnnualise
3451 (trc_LibFyFB
3452 ,bal_TX_ON_FB_YTD
3453 ,bal_TX_ON_FB_PTD
3454 );
3455 ELSE
3456 hr_utility.set_location('py_za_tx_01032000.NorCalc',10);
3457 trc_TotLibFB := trc_TotLibNI;
3458 -- Refund any tax paid
3459 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
3460 trc_NpValFBOvr := TRUE;
3461 END IF;
3462 ELSE
3463 hr_utility.set_location('py_za_tx_01032000.NorCalc',11);
3464 trc_FrnBenErn := trc_NorErn;
3465 trc_TxbFrnInc := trc_TxbNorInc;
3466 trc_TotLibFB := trc_TotLibNI;
3467 -- Refund any tax paid
3468 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
3469 trc_NpValFBOvr := TRUE;
3470 END IF;
3471
3472 -- Travel Allowance
3473 --
3474 -- Ytd Travel Allowance
3475 trc_TrvAllYtd :=
3476 ( bal_TA_NRFI_YTD
3477 + bal_TA_RFI_YTD
3478 );
3479 -- Skip the calculation if there is No Income
3480 IF trc_TrvAllYtd <> 0 THEN
3481 hr_utility.set_location('py_za_tx_01032000.NorCalc',12);
3482 -- Ptd Travel Allowance
3483 trc_TrvAllPtd :=
3484 ( bal_TA_NRFI_PTD
3485 + bal_TA_RFI_PTD
3486 );
3487 -- Annualise Travel Allowance
3488 trc_TrvAllErn := py_za_tx_utl_01032000.Annualise
3489 (p_YtdInc => trc_TrvAllYtd
3490 ,p_PtdInc => trc_TrvAllPtd
3491 ) + trc_FrnBenErn;
3492 -- Taxable Travel Income
3493 trc_TxbTrvInc := trc_TrvAllErn - trc_PerTotAbm;
3494 -- Threshold Check
3495 IF trc_TxbTrvInc >= trc_Threshold THEN
3496 hr_utility.set_location('py_za_tx_01032000.NorCalc',13);
3497 -- Tax Liability
3498 trc_TotLibTA := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbTrvInc);
3499 trc_LibFyTA := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
3500 -- DeAnnualise
3501 trc_LibFpTA := py_za_tx_utl_01032000.DeAnnualise
3502 (trc_LibFyTA
3503 ,bal_TX_ON_TA_YTD
3504 ,bal_TX_ON_TA_PTD
3505 );
3506 ELSE
3507 hr_utility.set_location('py_za_tx_01032000.NorCalc',14);
3508 trc_TotLibTA := trc_TotLibFB;
3509 -- Refund any tax paid
3510 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
3511 trc_NpValTAOvr := TRUE;
3512 END IF;
3513 ELSE
3514 hr_utility.set_location('py_za_tx_01032000.NorCalc',15);
3515 trc_TrvAllErn := trc_FrnBenErn;-- Cascade Figure
3516 trc_TxbTrvInc := trc_TxbFrnInc;
3517 trc_TotLibTA := trc_TotLibFB;
3518 -- Refund any tax paid
3519 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
3520 trc_NpValTAOvr := TRUE;
3521 END IF;
3522
3523 -- Bonus Provision
3524 --
3525 -- Ytd Bonus Prvision
3526 trc_BonProYtd := bal_BP_YTD;
3527 -- Skip the calculation if there is No Income
3528 IF trc_BonProYtd <> 0 THEN
3529 hr_utility.set_location('py_za_tx_01032000.NorCalc',16);
3530 -- Ptd Bonus Provision
3531 trc_BonProPtd := bal_BP_PTD;
3532 -- Annualise Bonus Provision
3533 trc_BonProErn := py_za_tx_utl_01032000.Annualise
3534 (p_YtdInc => trc_BonProYtd
3535 ,p_PtdInc => trc_BonProPtd
3536 ) + trc_TrvAllErn;
3537 -- Taxable Bonus Provision Income
3538 trc_TxbBonProInc := trc_BonProErn - trc_PerTotAbm;
3539 -- Threshold Check
3540 IF trc_TxbBonProInc >= trc_Threshold THEN
3541 hr_utility.set_location('py_za_tx_01032000.NorCalc',17);
3542 -- Tax Liability
3543 trc_TotLibBP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbBonProInc);
3544 trc_LibFyBP := trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA);
3545 -- DeAnnualise
3546 trc_LibFpBP := py_za_tx_utl_01032000.DeAnnualise
3547 (trc_LibFyBP
3548 ,bal_TX_ON_BP_YTD
3549 ,bal_TX_ON_BP_PTD
3550 );
3551 ELSE
3552 hr_utility.set_location('py_za_tx_01032000.NorCalc',18);
3553 trc_TotLibBP := trc_TotLibTA;
3554 -- Refund any tax paid
3555 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
3556 trc_NpValBPOvr := TRUE;
3557 END IF;
3558 ELSE
3559 hr_utility.set_location('py_za_tx_01032000.NorCalc',19);
3560 trc_BonProErn := trc_TrvAllErn;
3561 trc_TxbBonProInc := trc_TxbTrvInc;
3562 trc_TotLibBP := trc_TotLibTA;
3563 -- Refund any tax paid
3564 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
3565 trc_NpValBPOvr := TRUE;
3566 END IF;
3567
3568 -- Annual Bonus
3569 --
3570 -- Ytd Annual Bonus
3571 trc_AnnBonYtd :=
3572 ( bal_AB_NRFI_YTD
3573 + bal_AB_RFI_YTD
3574 );
3575 -- Skip the calculation if there is No Income
3576 IF trc_AnnBonYtd <> 0 THEN
3577 hr_utility.set_location('py_za_tx_01032000.NorCalc',20);
3578 -- Annual Bonus Earnings
3579 trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
3580 -- Taxable Annual Bonus Income
3581 trc_TxbAnnBonInc := trc_AnnBonErn - trc_AnnTotAbm;
3582 -- Threshold Check
3583 IF trc_TxbAnnBonInc >= trc_Threshold THEN
3584 hr_utility.set_location('py_za_tx_01032000.NorCalc',21);
3585 -- Tax Liability
3586 trc_TotLibAB := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnBonInc);
3587 trc_LibFyAB := trc_TotLibAB - trc_TotLibTA;
3588 -- Negative Check
3589 IF trc_LibFyAB < 0 THEN
3590 hr_utility.set_location('py_za_tx_01032000.NorCalc',22);
3591 trc_TotLibAB := trc_TotLibTA;
3592 -- Refund any tax paid
3593 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
3594 trc_NpValABOvr := TRUE;
3595 ELSE
3596 -- Check Bonus Provision
3597 IF trc_BonProYtd <> 0 THEN
3598 hr_utility.set_location('py_za_tx_01032000.NorCalc',23);
3599 -- Check Bonus Provision Frequency
3600 IF dbi_BP_TX_RCV = 'A' THEN
3601 hr_utility.set_location('py_za_tx_01032000.NorCalc',24);
3602 trc_LibFpAB := 0;
3603 ELSE
3604 hr_utility.set_location('py_za_tx_01032000.NorCalc',25);
3605 trc_LibFpAB :=
3606 trc_LibFyAB - ( bal_TX_ON_BP_YTD
3607 + trc_LibFpBP
3608 + bal_TX_ON_AB_YTD);
3609 END IF;
3610 ELSE
3611 hr_utility.set_location('py_za_tx_01032000.NorCalc',26);
3612 trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
3613 END IF;
3614 END IF;
3615 ELSE
3616 hr_utility.set_location('py_za_tx_01032000.NorCalc',27);
3617 trc_TotLibAB := trc_TotLibTA;
3618 -- Refund any tax paid
3619 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
3620 trc_NpValABOvr := TRUE;
3621 END IF;
3622 ELSE
3623 hr_utility.set_location('py_za_tx_01032000.NorCalc',28);
3624 trc_AnnBonErn := trc_TrvAllErn;
3625 trc_TxbAnnBonInc := trc_TxbTrvInc;
3626 trc_TotLibAB := trc_TotLibTA;
3627 -- Refund any tax paid
3628 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
3629 trc_NpValABOvr := TRUE;
3630 END IF;
3631
3632 -- Annual Payments
3633 --
3634 -- Ytd Annual Payments
3635 trc_AnnPymYtd :=
3636 ( bal_AC_NRFI_YTD
3637 + bal_AC_RFI_YTD
3638 + bal_ANU_FRM_RET_FND_NRFI_YTD
3639 + bal_ANU_FRM_RET_FND_RFI_YTD
3640 + bal_PRCH_ANU_TXB_NRFI_YTD
3641 + bal_PRCH_ANU_TXB_RFI_YTD
3642 + bal_TXB_AP_NRFI_YTD
3643 + bal_TXB_AP_RFI_YTD
3644 );
3645 -- Skip the calculation if there is No Income
3646 IF trc_AnnPymYtd <> 0 THEN
3647 hr_utility.set_location('py_za_tx_01032000.NorCalc',29);
3648 -- Annual Payments Earnings
3649 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
3650 -- Taxable Annual Payments Income
3651 trc_TxbAnnPymInc := trc_AnnPymErn - trc_AnnTotAbm;
3652 -- Threshold Check
3653 IF trc_TxbAnnPymInc >= trc_Threshold THEN
3654 hr_utility.set_location('py_za_tx_01032000.NorCalc',30);
3655 -- Tax Liability
3656 trc_TotLibAP := py_za_tx_utl_01032000.TaxLiability(p_Amt => trc_TxbAnnPymInc);
3657 trc_LibFyAP := trc_TotLibAP - trc_TotLibAB;
3658 -- Negative Check
3659 IF trc_LibFyAP < 0 THEN
3660 hr_utility.set_location('py_za_tx_01032000.NorCalc',31);
3661 trc_TotLibAP := trc_TotLibAB;
3662 -- Refund any tax paid
3663 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
3664 trc_NpValAPOvr := TRUE;
3665 ELSE
3666 hr_utility.set_location('py_za_tx_01032000.NorCalc',32);
3667 trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
3668 END IF;
3669 ELSE
3670 hr_utility.set_location('py_za_tx_01032000.NorCalc',33);
3671 trc_TotLibAP := trc_TotLibAB;
3672 -- Refund any tax paid
3673 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
3674 trc_NpValAPOvr := TRUE;
3675 END IF;
3676 ELSE
3677 hr_utility.set_location('py_za_tx_01032000.NorCalc',34);
3678 trc_AnnPymErn := trc_AnnBonErn;
3679 trc_TxbAnnPymInc := trc_TxbAnnBonInc;
3680 trc_TotLibAP := trc_TotLibAB;
3681 -- Refund any tax paid
3682 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
3683 trc_NpValAPOvr := TRUE;
3684 END IF;
3685
3686 -- Public Office Allowance
3687 --
3688 -- Ytd Public Office Allowance
3689 trc_PblOffYtd :=
3690 ( bal_PO_NRFI_YTD
3691 + bal_PO_RFI_YTD
3692 );
3693 -- Skip the calculation if there is No Income
3694 IF trc_PblOffYtd <> 0 THEN
3695 hr_utility.set_location('py_za_tx_01032000.NorCalc',35);
3696 -- Ptd Public Office Allowance
3697 trc_PblOffPtd :=
3698 ( bal_PO_NRFI_PTD
3699 + bal_PO_RFI_PTD
3700 );
3701 -- Annualise Public Office Allowance
3702 trc_PblOffErn := py_za_tx_utl_01032000.Annualise
3703 (p_YtdInc => trc_PblOffYtd
3704 ,p_PtdInc => trc_PblOffPtd
3705 );
3706 -- Tax Liability
3707 trc_LibFyPO := trc_PblOffErn * glb_ZA_PBL_TX_RTE / 100;
3708 trc_LibFpPO := py_za_tx_utl_01032000.DeAnnualise
3709 (trc_LibFyPO
3710 ,bal_TX_ON_PO_YTD
3711 ,bal_TX_ON_PO_PTD
3712 );
3713 ELSE
3714 hr_utility.set_location('py_za_tx_01032000.NorCalc',36);
3715 -- Refund any tax paid
3716 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
3717 trc_NpValPOOvr := TRUE;
3718 END IF;
3719
3720 -- Net Pay Validation
3721 --
3722 py_za_tx_utl_01032000.NpVal;
3723
3724 hr_utility.set_location('py_za_tx_01032000.NorCalc',37);
3725
3726 -- Base Income
3727 py_za_tx_utl_01032000.WriteHrTrace('trc_BseErn: '||to_char(trc_BseErn));
3728 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
3729 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBse: '||to_char(trc_TotLibBse));
3730 -- Normal Income
3731 py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
3732 py_za_tx_utl_01032000.WriteHrTrace('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
3733 py_za_tx_utl_01032000.WriteHrTrace('trc_NorErn: '||to_char(trc_NorErn));
3734 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
3735 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibNI: '||to_char(trc_TotLibNI));
3736 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyNI: '||to_char(trc_LibFyNI));
3737 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpNI: '||to_char(trc_LibFpNI));
3738 -- Fringe Benefits
3739 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
3740 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
3741 py_za_tx_utl_01032000.WriteHrTrace('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
3742 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
3743 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibFB: '||to_char(trc_TotLibFB));
3744 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyFB: '||to_char(trc_LibFyFB));
3745 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpFB: '||to_char(trc_LibFpFB));
3746 -- Travel Allowance
3747 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
3748 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
3749 py_za_tx_utl_01032000.WriteHrTrace('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
3750 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
3751 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibTA: '||to_char(trc_TotLibTA));
3752 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyTA: '||to_char(trc_LibFyTA));
3753 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpTA: '||to_char(trc_LibFpTA));
3754 -- Bonus Provision
3755 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProYtd: '||to_char(trc_BonProYtd));
3756 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProPtd: '||to_char(trc_BonProPtd));
3757 py_za_tx_utl_01032000.WriteHrTrace('trc_BonProErn: '||to_char(trc_BonProErn));
3758 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
3759 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibBP: '||to_char(trc_TotLibBP));
3760 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyBP: '||to_char(trc_LibFyBP));
3761 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpBP: '||to_char(trc_LibFpBP));
3762 -- Annual Bonus
3763 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
3764 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
3765 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
3766 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
3767 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAB: '||to_char(trc_TotLibAB));
3768 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAB: '||to_char(trc_LibFyAB));
3769 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAB: '||to_char(trc_LibFpAB));
3770 -- Annual Payments
3771 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
3772 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
3773 py_za_tx_utl_01032000.WriteHrTrace('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
3774 py_za_tx_utl_01032000.WriteHrTrace('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
3775 py_za_tx_utl_01032000.WriteHrTrace('trc_TotLibAP: '||to_char(trc_TotLibAP));
3776 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyAP: '||to_char(trc_LibFyAP));
3777 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpAP: '||to_char(trc_LibFpAP));
3778 -- Pubilc Office Allowance
3779 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
3780 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
3781 py_za_tx_utl_01032000.WriteHrTrace('trc_PblOffErn: '||to_char(trc_PblOffErn));
3782 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFyPO: '||to_char(trc_LibFyPO));
3783 py_za_tx_utl_01032000.WriteHrTrace('trc_LibFpPO: '||to_char(trc_LibFpPO));
3784
3785 EXCEPTION
3786 WHEN OTHERS THEN
3787 IF xpt_Msg = 'No Error' THEN
3788 xpt_Msg := 'NorCalc: '||TO_CHAR(SQLCODE);
3789 END IF;
3790 RAISE xpt_E;
3791 END NorCalc;
3792
3793
3794 -- Function to Initialise Globals
3795 --
3796 FUNCTION ZaTxGlb_01032000(
3797 -- Global Values
3798 p_ZA_ADL_TX_RBT IN NUMBER DEFAULT 0
3799 ,p_ZA_ARR_PF_AN_MX_ABT IN NUMBER DEFAULT 0
3800 ,p_ZA_ARR_RA_AN_MX_ABT IN NUMBER DEFAULT 0
3801 ,p_ZA_TRV_ALL_TX_PRC IN NUMBER DEFAULT 0
3802 ,p_ZA_CC_TX_PRC IN NUMBER DEFAULT 0
3803 ,p_ZA_LABOUR_BROK_PERC IN NUMBER DEFAULT 0
3804 ,p_ZA_PF_AN_MX_ABT IN NUMBER DEFAULT 0
3805 ,p_ZA_PF_MX_PRC IN NUMBER DEFAULT 0
3806 ,p_ZA_PER_SERV_COMP_PERC IN NUMBER DEFAULT 0
3807 ,p_ZA_PRI_TX_RBT IN NUMBER DEFAULT 0
3808 ,p_ZA_PRI_TX_THRSHLD IN NUMBER DEFAULT 0
3809 ,p_ZA_PBL_TX_PRC IN NUMBER DEFAULT 0
3810 ,p_ZA_PBL_TX_RTE IN NUMBER DEFAULT 0
3811 ,p_ZA_RA_AN_MX_ABT IN NUMBER DEFAULT 0
3812 ,p_ZA_RA_MX_PRC IN NUMBER DEFAULT 0
3813 ,p_ZA_SC_TX_THRSHLD IN NUMBER DEFAULT 0
3814 ,p_ZA_SIT_LIM IN NUMBER DEFAULT 0
3815 ,p_ZA_TMP_TX_RTE IN NUMBER DEFAULT 0
3816 ,p_ZA_WRK_DYS_PR_YR IN NUMBER DEFAULT 0
3817 ) RETURN NUMBER
3818 AS
3819 l_Dum NUMBER := 1;
3820 --id VARCHAR2(30);
3821
3822 BEGIN
3823 --id := dbms_debug.initialize('JLTX');
3824 --dbms_debug.debug_on;
3825
3826 -- Initialise Package Globals
3827 -- Global Values
3828 glb_ZA_ADL_TX_RBT := p_ZA_ADL_TX_RBT;
3829 glb_ZA_ARR_PF_AN_MX_ABT := p_ZA_ARR_PF_AN_MX_ABT;
3830 glb_ZA_ARR_RA_AN_MX_ABT := p_ZA_ARR_RA_AN_MX_ABT;
3831 glb_ZA_TRV_ALL_TX_PRC := p_ZA_TRV_ALL_TX_PRC;
3832 glb_ZA_CC_TX_PRC := p_ZA_CC_TX_PRC;
3833 glb_ZA_LABOUR_BROK_PERC := p_ZA_LABOUR_BROK_PERC;
3834 glb_ZA_PF_AN_MX_ABT := p_ZA_PF_AN_MX_ABT;
3835 glb_ZA_PF_MX_PRC := p_ZA_PF_MX_PRC;
3836 glb_ZA_PER_SERV_COMP_PERC := p_ZA_PER_SERV_COMP_PERC;
3837 glb_ZA_PRI_TX_RBT := p_ZA_PRI_TX_RBT;
3838 glb_ZA_PRI_TX_THRSHLD := p_ZA_PRI_TX_THRSHLD;
3839 glb_ZA_PBL_TX_PRC := p_ZA_PBL_TX_PRC;
3840 glb_ZA_PBL_TX_RTE := p_ZA_PBL_TX_RTE;
3841 glb_ZA_RA_AN_MX_ABT := p_ZA_RA_AN_MX_ABT;
3842 glb_ZA_RA_MX_PRC := p_ZA_RA_MX_PRC;
3843 glb_ZA_SC_TX_THRSHLD := p_ZA_SC_TX_THRSHLD;
3844 glb_ZA_SIT_LIM := p_ZA_SIT_LIM;
3845 glb_ZA_TMP_TX_RTE := p_ZA_TMP_TX_RTE;
3846 glb_ZA_WRK_DYS_PR_YR := p_ZA_WRK_DYS_PR_YR;
3847
3848 RETURN l_Dum;
3849 EXCEPTION
3850 WHEN OTHERS THEN
3851 hr_utility.set_message(801, 'ZaTxGlb_01032000: '||TO_CHAR(SQLCODE));
3852 hr_utility.raise_error;
3853 END ZaTxGlb_01032000;
3854
3855 -- Function to Initialise Globals - Database Item Values
3856 --
3857 FUNCTION ZaTxDbi_01032000(
3858 -- Database Items
3859 p_ARR_PF_FRQ IN VARCHAR2 DEFAULT 'M'
3860 ,p_ARR_RA_FRQ IN VARCHAR2 DEFAULT 'M'
3861 ,p_BP_TX_RCV IN VARCHAR2 DEFAULT 'B'
3862 ,p_PER_AGE IN NUMBER DEFAULT 0
3863 ,p_PER_DTE_OF_BRTH IN DATE DEFAULT to_date('31-12-4712','DD-MM-YYYY')
3864 ,p_RA_FRQ IN VARCHAR2 DEFAULT 'M'
3865 ,p_SEA_WRK_DYS_WRK IN NUMBER DEFAULT 0
3866 ,p_SES_DTE IN DATE DEFAULT to_date('31-12-4712','DD-MM-YYYY')
3867 ,p_TX_DIR_NUM IN VARCHAR2 DEFAULT 'NULL'
3868 ,p_TX_DIR_VAL IN NUMBER DEFAULT 0
3869 ,p_TX_STA IN VARCHAR2 DEFAULT 'X'
3870 ,p_ZA_ACT_END_DTE IN DATE DEFAULT to_date('31-12-4712','DD-MM-YYYY')
3871 ,p_ZA_ACT_STRT_DTE IN DATE DEFAULT to_date('31-12-4712','DD-MM-YYYY')
3872 ,p_ZA_CUR_PRD_END_DTE IN DATE DEFAULT to_date('31-12-4712','DD-MM-YYYY')
3873 ,p_ZA_CUR_PRD_STRT_DTE IN DATE DEFAULT to_date('31-12-4712','DD-MM-YYYY')
3874 ,p_ZA_DYS_IN_YR IN NUMBER DEFAULT 0
3875 ,p_ZA_PAY_PRDS_LFT IN NUMBER DEFAULT 0
3876 ,p_ZA_PAY_PRDS_PER_YR IN NUMBER DEFAULT 0
3877 ,p_ZA_TX_YR_END IN DATE DEFAULT to_date('31-12-4712','DD-MM-YYYY')
3878 ,p_ZA_TX_YR_STRT IN DATE DEFAULT to_date('31-12-4712','DD-MM-YYYY')
3879 ) RETURN NUMBER
3880 AS
3881 l_Dum NUMBER := 1;
3882
3883 BEGIN
3884 -- Initialise Package Globals
3885 -- Database Items
3886 dbi_ARR_PF_FRQ := p_ARR_PF_FRQ;
3887 dbi_ARR_RA_FRQ := p_ARR_RA_FRQ;
3888 dbi_BP_TX_RCV := p_BP_TX_RCV;
3889 dbi_PER_AGE := p_PER_AGE;
3890 dbi_PER_DTE_OF_BRTH := p_PER_DTE_OF_BRTH;
3891 dbi_RA_FRQ := p_RA_FRQ;
3892 dbi_SEA_WRK_DYS_WRK := p_SEA_WRK_DYS_WRK;
3893 dbi_SES_DTE := p_SES_DTE;
3894 dbi_TX_DIR_NUM := p_TX_DIR_NUM;
3895 dbi_TX_DIR_VAL := p_TX_DIR_VAL;
3896 dbi_TX_STA := p_TX_STA;
3897 dbi_ZA_ACT_END_DTE := p_ZA_ACT_END_DTE;
3898 dbi_ZA_ACT_STRT_DTE := p_ZA_ACT_STRT_DTE;
3899 dbi_ZA_CUR_PRD_END_DTE := p_ZA_CUR_PRD_END_DTE;
3900 dbi_ZA_CUR_PRD_STRT_DTE := p_ZA_CUR_PRD_STRT_DTE;
3901 dbi_ZA_DYS_IN_YR := p_ZA_DYS_IN_YR;
3902 dbi_ZA_PAY_PRDS_LFT := p_ZA_PAY_PRDS_LFT;
3903 dbi_ZA_PAY_PRDS_PER_YR := p_ZA_PAY_PRDS_PER_YR;
3904 dbi_ZA_TX_YR_END := p_ZA_TX_YR_END;
3905 dbi_ZA_TX_YR_STRT := p_ZA_TX_YR_STRT;
3906
3907 RETURN l_Dum;
3908 EXCEPTION
3909 WHEN OTHERS THEN
3910 hr_utility.set_message(801, 'ZaTxDbi_01032000: '||TO_CHAR(SQLCODE));
3911 hr_utility.raise_error;
3912 END ZaTxDbi_01032000;
3913
3914
3915 -- Function to Initialise Globals - Balance Values
3916 -- First Section
3917 FUNCTION ZaTxBal1_01032000(
3918 -- Balances
3919 p_AB_NRFI_CMTD IN NUMBER DEFAULT 0
3920 ,p_AB_NRFI_RUN IN NUMBER DEFAULT 0
3921 ,p_AB_NRFI_PTD IN NUMBER DEFAULT 0
3922 ,p_AB_NRFI_YTD IN NUMBER DEFAULT 0
3923 ,p_AB_RFI_CMTD IN NUMBER DEFAULT 0
3924 ,p_AB_RFI_RUN IN NUMBER DEFAULT 0
3925 ,p_AB_RFI_PTD IN NUMBER DEFAULT 0
3926 ,p_AB_RFI_YTD IN NUMBER DEFAULT 0
3927 ,p_AC_NRFI_RUN IN NUMBER DEFAULT 0
3928 ,p_AC_NRFI_PTD IN NUMBER DEFAULT 0
3929 ,p_AC_NRFI_YTD IN NUMBER DEFAULT 0
3930 ,p_AC_RFI_RUN IN NUMBER DEFAULT 0
3931 ,p_AC_RFI_PTD IN NUMBER DEFAULT 0
3932 ,p_AC_RFI_YTD IN NUMBER DEFAULT 0
3933 ,p_ANN_PF_CMTD IN NUMBER DEFAULT 0
3934 ,p_ANN_PF_RUN IN NUMBER DEFAULT 0
3935 ,p_ANN_PF_PTD IN NUMBER DEFAULT 0
3936 ,p_ANN_PF_YTD IN NUMBER DEFAULT 0
3937 ,p_ANU_FRM_RET_FND_NRFI_CMTD IN NUMBER DEFAULT 0
3938 ,p_ANU_FRM_RET_FND_NRFI_RUN IN NUMBER DEFAULT 0
3939 ,p_ANU_FRM_RET_FND_NRFI_PTD IN NUMBER DEFAULT 0
3940 ,p_ANU_FRM_RET_FND_NRFI_YTD IN NUMBER DEFAULT 0
3941 ,p_ANU_FRM_RET_FND_RFI_CMTD IN NUMBER DEFAULT 0
3942 ,p_ANU_FRM_RET_FND_RFI_RUN IN NUMBER DEFAULT 0
3943 ,p_ANU_FRM_RET_FND_RFI_PTD IN NUMBER DEFAULT 0
3944 ,p_ANU_FRM_RET_FND_RFI_YTD IN NUMBER DEFAULT 0
3945 ,p_ARR_PF_CMTD IN NUMBER DEFAULT 0
3946 ,p_ARR_PF_CYTD IN NUMBER DEFAULT 0
3947 ,p_ARR_PF_PTD IN NUMBER DEFAULT 0
3948 ,p_ARR_PF_YTD IN NUMBER DEFAULT 0
3949 ,p_ARR_RA_CMTD IN NUMBER DEFAULT 0
3950 ,p_ARR_RA_CYTD IN NUMBER DEFAULT 0
3951 ,p_ARR_RA_PTD IN NUMBER DEFAULT 0
3952 ,p_ARR_RA_YTD IN NUMBER DEFAULT 0
3953 ,p_AST_PRCHD_RVAL_NRFI_CMTD IN NUMBER DEFAULT 0
3954 ,p_AST_PRCHD_RVAL_NRFI_CYTD IN NUMBER DEFAULT 0
3955 ,p_AST_PRCHD_RVAL_NRFI_RUN IN NUMBER DEFAULT 0
3956 ,p_AST_PRCHD_RVAL_NRFI_PTD IN NUMBER DEFAULT 0
3957 ,p_AST_PRCHD_RVAL_NRFI_YTD IN NUMBER DEFAULT 0
3958 ,p_AST_PRCHD_RVAL_RFI_CMTD IN NUMBER DEFAULT 0
3959 ,p_AST_PRCHD_RVAL_RFI_CYTD IN NUMBER DEFAULT 0
3960 ,p_AST_PRCHD_RVAL_RFI_RUN IN NUMBER DEFAULT 0
3961 ,p_AST_PRCHD_RVAL_RFI_PTD IN NUMBER DEFAULT 0
3962 ,p_AST_PRCHD_RVAL_RFI_YTD IN NUMBER DEFAULT 0
3963 ,p_BP_CMTD IN NUMBER DEFAULT 0
3964 ,p_BP_PTD IN NUMBER DEFAULT 0
3965 ,p_BP_YTD IN NUMBER DEFAULT 0
3966 ,p_BUR_AND_SCH_NRFI_CMTD IN NUMBER DEFAULT 0
3967 ,p_BUR_AND_SCH_NRFI_CYTD IN NUMBER DEFAULT 0
3968 ,p_BUR_AND_SCH_NRFI_RUN IN NUMBER DEFAULT 0
3969 ,p_BUR_AND_SCH_NRFI_PTD IN NUMBER DEFAULT 0
3970 ,p_BUR_AND_SCH_NRFI_YTD IN NUMBER DEFAULT 0
3971 ,p_BUR_AND_SCH_RFI_CMTD IN NUMBER DEFAULT 0
3972 ,p_BUR_AND_SCH_RFI_CYTD IN NUMBER DEFAULT 0
3973 ,p_BUR_AND_SCH_RFI_RUN IN NUMBER DEFAULT 0
3974 ,p_BUR_AND_SCH_RFI_PTD IN NUMBER DEFAULT 0
3975 ,p_BUR_AND_SCH_RFI_YTD IN NUMBER DEFAULT 0
3976 ,p_COMM_NRFI_CMTD IN NUMBER DEFAULT 0
3977 ,p_COMM_NRFI_CYTD IN NUMBER DEFAULT 0
3978 ,p_COMM_NRFI_RUN IN NUMBER DEFAULT 0
3979 ,p_COMM_NRFI_PTD IN NUMBER DEFAULT 0
3980 ,p_COMM_NRFI_YTD IN NUMBER DEFAULT 0
3981 ,p_COMM_RFI_CMTD IN NUMBER DEFAULT 0
3982 ,p_COMM_RFI_CYTD IN NUMBER DEFAULT 0
3983 ,p_COMM_RFI_RUN IN NUMBER DEFAULT 0
3984 ,p_COMM_RFI_PTD IN NUMBER DEFAULT 0
3985 ,p_COMM_RFI_YTD IN NUMBER DEFAULT 0
3986 ,p_COMP_ALL_NRFI_CMTD IN NUMBER DEFAULT 0
3987 ,p_COMP_ALL_NRFI_CYTD IN NUMBER DEFAULT 0
3988 ,p_COMP_ALL_NRFI_RUN IN NUMBER DEFAULT 0
3989 ,p_COMP_ALL_NRFI_PTD IN NUMBER DEFAULT 0
3990 ,p_COMP_ALL_NRFI_YTD IN NUMBER DEFAULT 0
3991 ,p_COMP_ALL_RFI_CMTD IN NUMBER DEFAULT 0
3992 ,p_COMP_ALL_RFI_CYTD IN NUMBER DEFAULT 0
3993 ,p_COMP_ALL_RFI_RUN IN NUMBER DEFAULT 0
3994 ,p_COMP_ALL_RFI_PTD IN NUMBER DEFAULT 0
3995 ,p_COMP_ALL_RFI_YTD IN NUMBER DEFAULT 0
3996 ) RETURN NUMBER
3997 AS
3998 l_Dum NUMBER := 1;
3999
4000 BEGIN
4001 -- Balances
4002 bal_AB_NRFI_CMTD := p_AB_NRFI_CMTD;
4003 bal_AB_NRFI_RUN := p_AB_NRFI_RUN;
4004 bal_AB_NRFI_PTD := p_AB_NRFI_PTD;
4005 bal_AB_NRFI_YTD := p_AB_NRFI_YTD;
4006 bal_AB_RFI_CMTD := p_AB_RFI_CMTD;
4007 bal_AB_RFI_RUN := p_AB_RFI_RUN;
4008 bal_AB_RFI_PTD := p_AB_RFI_PTD;
4009 bal_AB_RFI_YTD := p_AB_RFI_YTD;
4010 bal_AC_NRFI_RUN := p_AC_NRFI_RUN;
4011 bal_AC_NRFI_PTD := p_AC_NRFI_PTD;
4012 bal_AC_NRFI_YTD := p_AC_NRFI_YTD;
4013 bal_AC_RFI_RUN := p_AC_RFI_RUN;
4014 bal_AC_RFI_PTD := p_AC_RFI_PTD;
4015 bal_AC_RFI_YTD := p_AC_RFI_YTD;
4016 bal_ANN_PF_CMTD := p_ANN_PF_CMTD;
4017 bal_ANN_PF_RUN := p_ANN_PF_RUN;
4018 bal_ANN_PF_PTD := p_ANN_PF_PTD;
4019 bal_ANN_PF_YTD := p_ANN_PF_YTD;
4020 bal_ANU_FRM_RET_FND_NRFI_CMTD := p_ANU_FRM_RET_FND_NRFI_CMTD;
4021 bal_ANU_FRM_RET_FND_NRFI_RUN := p_ANU_FRM_RET_FND_NRFI_RUN;
4022 bal_ANU_FRM_RET_FND_NRFI_PTD := p_ANU_FRM_RET_FND_NRFI_PTD;
4023 bal_ANU_FRM_RET_FND_NRFI_YTD := p_ANU_FRM_RET_FND_NRFI_YTD;
4024 bal_ANU_FRM_RET_FND_RFI_CMTD := p_ANU_FRM_RET_FND_RFI_CMTD;
4025 bal_ANU_FRM_RET_FND_RFI_RUN := p_ANU_FRM_RET_FND_RFI_RUN;
4026 bal_ANU_FRM_RET_FND_RFI_PTD := p_ANU_FRM_RET_FND_RFI_PTD;
4027 bal_ANU_FRM_RET_FND_RFI_YTD := p_ANU_FRM_RET_FND_RFI_YTD;
4028 bal_ARR_PF_CMTD := p_ARR_PF_CMTD;
4029 bal_ARR_PF_CYTD := p_ARR_PF_CYTD;
4030 bal_ARR_PF_PTD := p_ARR_PF_PTD;
4031 bal_ARR_PF_YTD := p_ARR_PF_YTD;
4032 bal_ARR_RA_CMTD := p_ARR_RA_CMTD;
4033 bal_ARR_RA_CYTD := p_ARR_RA_CYTD;
4034 bal_ARR_RA_PTD := p_ARR_RA_PTD;
4035 bal_ARR_RA_YTD := p_ARR_RA_YTD;
4036 bal_AST_PRCHD_RVAL_NRFI_CMTD := p_AST_PRCHD_RVAL_NRFI_CMTD;
4037 bal_AST_PRCHD_RVAL_NRFI_CYTD := p_AST_PRCHD_RVAL_NRFI_CYTD;
4038 bal_AST_PRCHD_RVAL_NRFI_RUN := p_AST_PRCHD_RVAL_NRFI_RUN;
4039 bal_AST_PRCHD_RVAL_NRFI_PTD := p_AST_PRCHD_RVAL_NRFI_PTD;
4040 bal_AST_PRCHD_RVAL_NRFI_YTD := p_AST_PRCHD_RVAL_NRFI_YTD;
4041 bal_AST_PRCHD_RVAL_RFI_CMTD := p_AST_PRCHD_RVAL_RFI_CMTD;
4042 bal_AST_PRCHD_RVAL_RFI_CYTD := p_AST_PRCHD_RVAL_RFI_CYTD;
4043 bal_AST_PRCHD_RVAL_RFI_RUN := p_AST_PRCHD_RVAL_RFI_RUN;
4044 bal_AST_PRCHD_RVAL_RFI_PTD := p_AST_PRCHD_RVAL_RFI_PTD;
4045 bal_AST_PRCHD_RVAL_RFI_YTD := p_AST_PRCHD_RVAL_RFI_YTD;
4046 bal_BP_CMTD := p_BP_CMTD;
4047 bal_BP_PTD := p_BP_PTD;
4048 bal_BP_YTD := p_BP_YTD;
4049 bal_BUR_AND_SCH_NRFI_CMTD := p_BUR_AND_SCH_NRFI_CMTD;
4050 bal_BUR_AND_SCH_NRFI_CYTD := p_BUR_AND_SCH_NRFI_CYTD;
4051 bal_BUR_AND_SCH_NRFI_RUN := p_BUR_AND_SCH_NRFI_RUN;
4052 bal_BUR_AND_SCH_NRFI_PTD := p_BUR_AND_SCH_NRFI_PTD;
4053 bal_BUR_AND_SCH_NRFI_YTD := p_BUR_AND_SCH_NRFI_YTD;
4054 bal_BUR_AND_SCH_RFI_CMTD := p_BUR_AND_SCH_RFI_CMTD;
4055 bal_BUR_AND_SCH_RFI_CYTD := p_BUR_AND_SCH_RFI_CYTD;
4056 bal_BUR_AND_SCH_RFI_RUN := p_BUR_AND_SCH_RFI_RUN;
4057 bal_BUR_AND_SCH_RFI_PTD := p_BUR_AND_SCH_RFI_PTD;
4058 bal_BUR_AND_SCH_RFI_YTD := p_BUR_AND_SCH_RFI_YTD;
4059 bal_COMM_NRFI_CMTD := p_COMM_NRFI_CMTD;
4060 bal_COMM_NRFI_CYTD := p_COMM_NRFI_CYTD;
4061 bal_COMM_NRFI_RUN := p_COMM_NRFI_RUN;
4062 bal_COMM_NRFI_PTD := p_COMM_NRFI_PTD;
4063 bal_COMM_NRFI_YTD := p_COMM_NRFI_YTD;
4064 bal_COMM_RFI_CMTD := p_COMM_RFI_CMTD;
4065 bal_COMM_RFI_CYTD := p_COMM_RFI_CYTD;
4066 bal_COMM_RFI_RUN := p_COMM_RFI_RUN;
4067 bal_COMM_RFI_PTD := p_COMM_RFI_PTD;
4068 bal_COMM_RFI_YTD := p_COMM_RFI_YTD;
4069 bal_COMP_ALL_NRFI_CMTD := p_COMP_ALL_NRFI_CMTD;
4070 bal_COMP_ALL_NRFI_CYTD := p_COMP_ALL_NRFI_CYTD;
4071 bal_COMP_ALL_NRFI_RUN := p_COMP_ALL_NRFI_RUN;
4072 bal_COMP_ALL_NRFI_PTD := p_COMP_ALL_NRFI_PTD;
4073 bal_COMP_ALL_NRFI_YTD := p_COMP_ALL_NRFI_YTD;
4074 bal_COMP_ALL_RFI_CMTD := p_COMP_ALL_RFI_CMTD;
4075 bal_COMP_ALL_RFI_CYTD := p_COMP_ALL_RFI_CYTD;
4076 bal_COMP_ALL_RFI_RUN := p_COMP_ALL_RFI_RUN;
4077 bal_COMP_ALL_RFI_PTD := p_COMP_ALL_RFI_PTD;
4078 bal_COMP_ALL_RFI_YTD := p_COMP_ALL_RFI_YTD;
4079
4080 RETURN l_Dum;
4081 EXCEPTION
4082 WHEN OTHERS THEN
4083 hr_utility.set_message(801, 'ZaTxBal1_01032000: '||TO_CHAR(SQLCODE));
4084 hr_utility.raise_error;
4085 END ZaTxBal1_01032000;
4086
4087
4088 -- Function to Initialise Globals - Balance Values
4089 -- Second Section
4090 FUNCTION ZaTxBal2_01032000(
4091 -- Balances
4092 p_CUR_PF_CMTD IN NUMBER DEFAULT 0
4093 ,p_CUR_PF_CYTD IN NUMBER DEFAULT 0
4094 ,p_CUR_PF_RUN IN NUMBER DEFAULT 0
4095 ,p_CUR_PF_PTD IN NUMBER DEFAULT 0
4096 ,p_CUR_PF_YTD IN NUMBER DEFAULT 0
4097 ,p_CUR_RA_CMTD IN NUMBER DEFAULT 0
4098 ,p_CUR_RA_CYTD IN NUMBER DEFAULT 0
4099 ,p_CUR_RA_RUN IN NUMBER DEFAULT 0
4100 ,p_CUR_RA_PTD IN NUMBER DEFAULT 0
4101 ,p_CUR_RA_YTD IN NUMBER DEFAULT 0
4102 ,p_ENT_ALL_NRFI_CMTD IN NUMBER DEFAULT 0
4103 ,p_ENT_ALL_NRFI_CYTD IN NUMBER DEFAULT 0
4104 ,p_ENT_ALL_NRFI_RUN IN NUMBER DEFAULT 0
4105 ,p_ENT_ALL_NRFI_PTD IN NUMBER DEFAULT 0
4106 ,p_ENT_ALL_NRFI_YTD IN NUMBER DEFAULT 0
4107 ,p_ENT_ALL_RFI_CMTD IN NUMBER DEFAULT 0
4108 ,p_ENT_ALL_RFI_CYTD IN NUMBER DEFAULT 0
4109 ,p_ENT_ALL_RFI_RUN IN NUMBER DEFAULT 0
4110 ,p_ENT_ALL_RFI_PTD IN NUMBER DEFAULT 0
4111 ,p_ENT_ALL_RFI_YTD IN NUMBER DEFAULT 0
4112 ,p_EXC_ARR_PEN_ITD IN NUMBER DEFAULT 0
4113 ,p_EXC_ARR_PEN_PTD IN NUMBER DEFAULT 0
4114 ,p_EXC_ARR_PEN_YTD IN NUMBER DEFAULT 0
4115 ,p_EXC_ARR_RA_ITD IN NUMBER DEFAULT 0
4116 ,p_EXC_ARR_RA_PTD IN NUMBER DEFAULT 0
4117 ,p_EXC_ARR_RA_YTD IN NUMBER DEFAULT 0
4118 ,p_FREE_ACCOM_NRFI_CMTD IN NUMBER DEFAULT 0
4119 ,p_FREE_ACCOM_NRFI_CYTD IN NUMBER DEFAULT 0
4120 ,p_FREE_ACCOM_NRFI_RUN IN NUMBER DEFAULT 0
4121 ,p_FREE_ACCOM_NRFI_PTD IN NUMBER DEFAULT 0
4122 ,p_FREE_ACCOM_NRFI_YTD IN NUMBER DEFAULT 0
4123 ,p_FREE_ACCOM_RFI_CMTD IN NUMBER DEFAULT 0
4124 ,p_FREE_ACCOM_RFI_CYTD IN NUMBER DEFAULT 0
4125 ,p_FREE_ACCOM_RFI_RUN IN NUMBER DEFAULT 0
4126 ,p_FREE_ACCOM_RFI_PTD IN NUMBER DEFAULT 0
4127 ,p_FREE_ACCOM_RFI_YTD IN NUMBER DEFAULT 0
4128 ,p_FREE_SERV_NRFI_CMTD IN NUMBER DEFAULT 0
4129 ,p_FREE_SERV_NRFI_CYTD IN NUMBER DEFAULT 0
4130 ,p_FREE_SERV_NRFI_RUN IN NUMBER DEFAULT 0
4131 ,p_FREE_SERV_NRFI_PTD IN NUMBER DEFAULT 0
4132 ,p_FREE_SERV_NRFI_YTD IN NUMBER DEFAULT 0
4133 ,p_FREE_SERV_RFI_CMTD IN NUMBER DEFAULT 0
4134 ,p_FREE_SERV_RFI_CYTD IN NUMBER DEFAULT 0
4135 ,p_FREE_SERV_RFI_RUN IN NUMBER DEFAULT 0
4136 ,p_FREE_SERV_RFI_PTD IN NUMBER DEFAULT 0
4137 ,p_FREE_SERV_RFI_YTD IN NUMBER DEFAULT 0
4138 ,p_LOW_LOANS_NRFI_CMTD IN NUMBER DEFAULT 0
4139 ,p_LOW_LOANS_NRFI_CYTD IN NUMBER DEFAULT 0
4140 ,p_LOW_LOANS_NRFI_RUN IN NUMBER DEFAULT 0
4141 ,p_LOW_LOANS_NRFI_PTD IN NUMBER DEFAULT 0
4142 ,p_LOW_LOANS_NRFI_YTD IN NUMBER DEFAULT 0
4143 ,p_LOW_LOANS_RFI_CMTD IN NUMBER DEFAULT 0
4144 ,p_LOW_LOANS_RFI_CYTD IN NUMBER DEFAULT 0
4145 ,p_LOW_LOANS_RFI_RUN IN NUMBER DEFAULT 0
4146 ,p_LOW_LOANS_RFI_PTD IN NUMBER DEFAULT 0
4147 ,p_LOW_LOANS_RFI_YTD IN NUMBER DEFAULT 0
4148 ,p_MLS_AND_VOUCH_NRFI_CMTD IN NUMBER DEFAULT 0
4149 ,p_MLS_AND_VOUCH_NRFI_CYTD IN NUMBER DEFAULT 0
4150 ,p_MLS_AND_VOUCH_NRFI_RUN IN NUMBER DEFAULT 0
4151 ,p_MLS_AND_VOUCH_NRFI_PTD IN NUMBER DEFAULT 0
4152 ,p_MLS_AND_VOUCH_NRFI_YTD IN NUMBER DEFAULT 0
4153 ,p_MLS_AND_VOUCH_RFI_CMTD IN NUMBER DEFAULT 0
4154 ,p_MLS_AND_VOUCH_RFI_CYTD IN NUMBER DEFAULT 0
4155 ,p_MLS_AND_VOUCH_RFI_RUN IN NUMBER DEFAULT 0
4156 ,p_MLS_AND_VOUCH_RFI_PTD IN NUMBER DEFAULT 0
4157 ,p_MLS_AND_VOUCH_RFI_YTD IN NUMBER DEFAULT 0
4158 ,p_MED_CONTR_CMTD IN NUMBER DEFAULT 0
4159 ,p_MED_CONTR_CYTD IN NUMBER DEFAULT 0
4160 ,p_MED_CONTR_RUN IN NUMBER DEFAULT 0
4161 ,p_MED_CONTR_PTD IN NUMBER DEFAULT 0
4162 ,p_MED_CONTR_YTD IN NUMBER DEFAULT 0
4163 ,p_MED_PAID_NRFI_CMTD IN NUMBER DEFAULT 0
4164 ,p_MED_PAID_NRFI_CYTD IN NUMBER DEFAULT 0
4165 ,p_MED_PAID_NRFI_RUN IN NUMBER DEFAULT 0
4166 ,p_MED_PAID_NRFI_PTD IN NUMBER DEFAULT 0
4167 ,p_MED_PAID_NRFI_YTD IN NUMBER DEFAULT 0
4168 ,p_MED_PAID_RFI_CMTD IN NUMBER DEFAULT 0
4169 ,p_MED_PAID_RFI_CYTD IN NUMBER DEFAULT 0
4170 ,p_MED_PAID_RFI_RUN IN NUMBER DEFAULT 0
4171 ,p_MED_PAID_RFI_PTD IN NUMBER DEFAULT 0
4172 ,p_MED_PAID_RFI_YTD IN NUMBER DEFAULT 0
4173 ,p_NET_PAY_RUN IN NUMBER DEFAULT 0
4174 ,p_NET_TXB_INC_CMTD IN NUMBER DEFAULT 0
4175 ) RETURN NUMBER
4176 AS
4177 l_Dum NUMBER := 1;
4178
4179 BEGIN
4180 -- Balances
4181 bal_CUR_PF_CMTD := p_CUR_PF_CMTD;
4182 bal_CUR_PF_CYTD := p_CUR_PF_CYTD;
4183 bal_CUR_PF_RUN := p_CUR_PF_RUN;
4184 bal_CUR_PF_PTD := p_CUR_PF_PTD;
4185 bal_CUR_PF_YTD := p_CUR_PF_YTD;
4186 bal_CUR_RA_CMTD := p_CUR_RA_CMTD;
4187 bal_CUR_RA_CYTD := p_CUR_RA_CYTD;
4188 bal_CUR_RA_RUN := p_CUR_RA_RUN;
4189 bal_CUR_RA_PTD := p_CUR_RA_PTD;
4190 bal_CUR_RA_YTD := p_CUR_RA_YTD;
4191 bal_ENT_ALL_NRFI_CMTD := p_ENT_ALL_NRFI_CMTD;
4192 bal_ENT_ALL_NRFI_CYTD := p_ENT_ALL_NRFI_CYTD;
4193 bal_ENT_ALL_NRFI_RUN := p_ENT_ALL_NRFI_RUN;
4194 bal_ENT_ALL_NRFI_PTD := p_ENT_ALL_NRFI_PTD;
4195 bal_ENT_ALL_NRFI_YTD := p_ENT_ALL_NRFI_YTD;
4196 bal_ENT_ALL_RFI_CMTD := p_ENT_ALL_RFI_CMTD;
4197 bal_ENT_ALL_RFI_CYTD := p_ENT_ALL_RFI_CYTD;
4198 bal_ENT_ALL_RFI_RUN := p_ENT_ALL_RFI_RUN;
4199 bal_ENT_ALL_RFI_PTD := p_ENT_ALL_RFI_PTD;
4200 bal_ENT_ALL_RFI_YTD := p_ENT_ALL_RFI_YTD;
4201 bal_EXC_ARR_PEN_ITD := p_EXC_ARR_PEN_ITD;
4202 bal_EXC_ARR_PEN_PTD := p_EXC_ARR_PEN_PTD;
4203 bal_EXC_ARR_PEN_YTD := p_EXC_ARR_PEN_YTD;
4204 bal_EXC_ARR_RA_ITD := p_EXC_ARR_RA_ITD;
4205 bal_EXC_ARR_RA_PTD := p_EXC_ARR_RA_PTD;
4206 bal_EXC_ARR_RA_YTD := p_EXC_ARR_RA_YTD;
4207 bal_FREE_ACCOM_NRFI_CMTD := p_FREE_ACCOM_NRFI_CMTD;
4208 bal_FREE_ACCOM_NRFI_CYTD := p_FREE_ACCOM_NRFI_CYTD;
4209 bal_FREE_ACCOM_NRFI_RUN := p_FREE_ACCOM_NRFI_RUN;
4210 bal_FREE_ACCOM_NRFI_PTD := p_FREE_ACCOM_NRFI_PTD;
4211 bal_FREE_ACCOM_NRFI_YTD := p_FREE_ACCOM_NRFI_YTD;
4212 bal_FREE_ACCOM_RFI_CMTD := p_FREE_ACCOM_RFI_CMTD;
4213 bal_FREE_ACCOM_RFI_CYTD := p_FREE_ACCOM_RFI_CYTD;
4214 bal_FREE_ACCOM_RFI_RUN := p_FREE_ACCOM_RFI_RUN;
4215 bal_FREE_ACCOM_RFI_PTD := p_FREE_ACCOM_RFI_PTD;
4216 bal_FREE_ACCOM_RFI_YTD := p_FREE_ACCOM_RFI_YTD;
4217 bal_FREE_SERV_NRFI_CMTD := p_FREE_SERV_NRFI_CMTD;
4218 bal_FREE_SERV_NRFI_CYTD := p_FREE_SERV_NRFI_CYTD;
4219 bal_FREE_SERV_NRFI_RUN := p_FREE_SERV_NRFI_RUN;
4220 bal_FREE_SERV_NRFI_PTD := p_FREE_SERV_NRFI_PTD;
4221 bal_FREE_SERV_NRFI_YTD := p_FREE_SERV_NRFI_YTD;
4222 bal_FREE_SERV_RFI_CMTD := p_FREE_SERV_RFI_CMTD;
4223 bal_FREE_SERV_RFI_CYTD := p_FREE_SERV_RFI_CYTD;
4224 bal_FREE_SERV_RFI_RUN := p_FREE_SERV_RFI_RUN;
4225 bal_FREE_SERV_RFI_PTD := p_FREE_SERV_RFI_PTD;
4226 bal_FREE_SERV_RFI_YTD := p_FREE_SERV_RFI_YTD;
4227 bal_LOW_LOANS_NRFI_CMTD := p_LOW_LOANS_NRFI_CMTD;
4228 bal_LOW_LOANS_NRFI_CYTD := p_LOW_LOANS_NRFI_CYTD;
4229 bal_LOW_LOANS_NRFI_RUN := p_LOW_LOANS_NRFI_RUN;
4230 bal_LOW_LOANS_NRFI_PTD := p_LOW_LOANS_NRFI_PTD;
4231 bal_LOW_LOANS_NRFI_YTD := p_LOW_LOANS_NRFI_YTD;
4232 bal_LOW_LOANS_RFI_CMTD := p_LOW_LOANS_RFI_CMTD;
4233 bal_LOW_LOANS_RFI_CYTD := p_LOW_LOANS_RFI_CYTD;
4234 bal_LOW_LOANS_RFI_RUN := p_LOW_LOANS_RFI_RUN;
4235 bal_LOW_LOANS_RFI_PTD := p_LOW_LOANS_RFI_PTD;
4236 bal_LOW_LOANS_RFI_YTD := p_LOW_LOANS_RFI_YTD;
4237 bal_MLS_AND_VOUCH_NRFI_CMTD := p_MLS_AND_VOUCH_NRFI_CMTD;
4238 bal_MLS_AND_VOUCH_NRFI_CYTD := p_MLS_AND_VOUCH_NRFI_CYTD;
4239 bal_MLS_AND_VOUCH_NRFI_RUN := p_MLS_AND_VOUCH_NRFI_RUN;
4240 bal_MLS_AND_VOUCH_NRFI_PTD := p_MLS_AND_VOUCH_NRFI_PTD;
4241 bal_MLS_AND_VOUCH_NRFI_YTD := p_MLS_AND_VOUCH_NRFI_YTD;
4242 bal_MLS_AND_VOUCH_RFI_CMTD := p_MLS_AND_VOUCH_RFI_CMTD;
4243 bal_MLS_AND_VOUCH_RFI_CYTD := p_MLS_AND_VOUCH_RFI_CYTD;
4244 bal_MLS_AND_VOUCH_RFI_RUN := p_MLS_AND_VOUCH_RFI_RUN;
4245 bal_MLS_AND_VOUCH_RFI_PTD := p_MLS_AND_VOUCH_RFI_PTD;
4246 bal_MLS_AND_VOUCH_RFI_YTD := p_MLS_AND_VOUCH_RFI_YTD;
4247 bal_MED_CONTR_CMTD := p_MED_CONTR_CMTD;
4248 bal_MED_CONTR_CYTD := p_MED_CONTR_CYTD;
4249 bal_MED_CONTR_RUN := p_MED_CONTR_RUN;
4250 bal_MED_CONTR_PTD := p_MED_CONTR_PTD;
4251 bal_MED_CONTR_YTD := p_MED_CONTR_YTD;
4252 bal_MED_PAID_NRFI_CMTD := p_MED_PAID_NRFI_CMTD;
4253 bal_MED_PAID_NRFI_CYTD := p_MED_PAID_NRFI_CYTD;
4254 bal_MED_PAID_NRFI_RUN := p_MED_PAID_NRFI_RUN;
4255 bal_MED_PAID_NRFI_PTD := p_MED_PAID_NRFI_PTD;
4256 bal_MED_PAID_NRFI_YTD := p_MED_PAID_NRFI_YTD;
4257 bal_MED_PAID_RFI_CMTD := p_MED_PAID_RFI_CMTD;
4258 bal_MED_PAID_RFI_CYTD := p_MED_PAID_RFI_CYTD;
4259 bal_MED_PAID_RFI_RUN := p_MED_PAID_RFI_RUN;
4260 bal_MED_PAID_RFI_PTD := p_MED_PAID_RFI_PTD;
4261 bal_MED_PAID_RFI_YTD := p_MED_PAID_RFI_YTD;
4262 bal_NET_PAY_RUN := p_NET_PAY_RUN;
4263 bal_NET_TXB_INC_CMTD := p_NET_TXB_INC_CMTD;
4264
4265 RETURN l_Dum;
4266 EXCEPTION
4267 WHEN OTHERS THEN
4268 hr_utility.set_message(801, 'ZaTxBal2_01032000: '||TO_CHAR(SQLCODE));
4269 hr_utility.raise_error;
4270 END ZaTxBal2_01032000;
4271
4272 -- Function to Initialise Globals - Balance Values
4273 -- Third Section
4274 FUNCTION ZaTxBal3_01032000(
4275 -- Balances
4276 p_OTHER_TXB_ALL_NRFI_CMTD IN NUMBER DEFAULT 0
4277 ,p_OTHER_TXB_ALL_NRFI_CYTD IN NUMBER DEFAULT 0
4278 ,p_OTHER_TXB_ALL_NRFI_RUN IN NUMBER DEFAULT 0
4279 ,p_OTHER_TXB_ALL_NRFI_PTD IN NUMBER DEFAULT 0
4280 ,p_OTHER_TXB_ALL_NRFI_YTD IN NUMBER DEFAULT 0
4281 ,p_OTHER_TXB_ALL_RFI_CMTD IN NUMBER DEFAULT 0
4282 ,p_OTHER_TXB_ALL_RFI_CYTD IN NUMBER DEFAULT 0
4283 ,p_OTHER_TXB_ALL_RFI_RUN IN NUMBER DEFAULT 0
4284 ,p_OTHER_TXB_ALL_RFI_PTD IN NUMBER DEFAULT 0
4285 ,p_OTHER_TXB_ALL_RFI_YTD IN NUMBER DEFAULT 0
4286 ,p_OVTM_NRFI_CMTD IN NUMBER DEFAULT 0
4287 ,p_OVTM_NRFI_CYTD IN NUMBER DEFAULT 0
4288 ,p_OVTM_NRFI_RUN IN NUMBER DEFAULT 0
4289 ,p_OVTM_NRFI_PTD IN NUMBER DEFAULT 0
4290 ,p_OVTM_NRFI_YTD IN NUMBER DEFAULT 0
4291 ,p_OVTM_RFI_CMTD IN NUMBER DEFAULT 0
4292 ,p_OVTM_RFI_CYTD IN NUMBER DEFAULT 0
4293 ,p_OVTM_RFI_RUN IN NUMBER DEFAULT 0
4294 ,p_OVTM_RFI_PTD IN NUMBER DEFAULT 0
4295 ,p_OVTM_RFI_YTD IN NUMBER DEFAULT 0
4296 ,p_PAYE_YTD IN NUMBER DEFAULT 0
4297 ,p_PYM_DBT_NRFI_CMTD IN NUMBER DEFAULT 0
4298 ,p_PYM_DBT_NRFI_CYTD IN NUMBER DEFAULT 0
4299 ,p_PYM_DBT_NRFI_RUN IN NUMBER DEFAULT 0
4300 ,p_PYM_DBT_NRFI_PTD IN NUMBER DEFAULT 0
4301 ,p_PYM_DBT_NRFI_YTD IN NUMBER DEFAULT 0
4302 ,p_PYM_DBT_RFI_CMTD IN NUMBER DEFAULT 0
4303 ,p_PYM_DBT_RFI_CYTD IN NUMBER DEFAULT 0
4304 ,p_PYM_DBT_RFI_RUN IN NUMBER DEFAULT 0
4305 ,p_PYM_DBT_RFI_PTD IN NUMBER DEFAULT 0
4306 ,p_PYM_DBT_RFI_YTD IN NUMBER DEFAULT 0
4307 ,p_PO_NRFI_CMTD IN NUMBER DEFAULT 0
4308 ,p_PO_NRFI_RUN IN NUMBER DEFAULT 0
4309 ,p_PO_NRFI_PTD IN NUMBER DEFAULT 0
4310 ,p_PO_NRFI_YTD IN NUMBER DEFAULT 0
4311 ,p_PO_RFI_CMTD IN NUMBER DEFAULT 0
4312 ,p_PO_RFI_RUN IN NUMBER DEFAULT 0
4313 ,p_PO_RFI_PTD IN NUMBER DEFAULT 0
4314 ,p_PO_RFI_YTD IN NUMBER DEFAULT 0
4315 ,p_PRCH_ANU_TXB_NRFI_CMTD IN NUMBER DEFAULT 0
4316 ,p_PRCH_ANU_TXB_NRFI_RUN IN NUMBER DEFAULT 0
4317 ,p_PRCH_ANU_TXB_NRFI_PTD IN NUMBER DEFAULT 0
4318 ,p_PRCH_ANU_TXB_NRFI_YTD IN NUMBER DEFAULT 0
4319 ,p_PRCH_ANU_TXB_RFI_CMTD IN NUMBER DEFAULT 0
4320 ,p_PRCH_ANU_TXB_RFI_RUN IN NUMBER DEFAULT 0
4321 ,p_PRCH_ANU_TXB_RFI_PTD IN NUMBER DEFAULT 0
4322 ,p_PRCH_ANU_TXB_RFI_YTD IN NUMBER DEFAULT 0
4323 ,p_RGT_AST_NRFI_CMTD IN NUMBER DEFAULT 0
4324 ,p_RGT_AST_NRFI_CYTD IN NUMBER DEFAULT 0
4325 ,p_RGT_AST_NRFI_RUN IN NUMBER DEFAULT 0
4326 ,p_RGT_AST_NRFI_PTD IN NUMBER DEFAULT 0
4327 ,p_RGT_AST_NRFI_YTD IN NUMBER DEFAULT 0
4328 ,p_RGT_AST_RFI_CMTD IN NUMBER DEFAULT 0
4329 ,p_RGT_AST_RFI_CYTD IN NUMBER DEFAULT 0
4330 ,p_RGT_AST_RFI_RUN IN NUMBER DEFAULT 0
4331 ,p_RGT_AST_RFI_PTD IN NUMBER DEFAULT 0
4332 ,p_RGT_AST_RFI_YTD IN NUMBER DEFAULT 0
4333 ,p_SITE_YTD IN NUMBER DEFAULT 0
4334 ,p_TAX_YTD IN NUMBER DEFAULT 0
4335 ,p_TX_ON_AB_PTD IN NUMBER DEFAULT 0
4336 ,p_TX_ON_AB_YTD IN NUMBER DEFAULT 0
4337 ,p_TX_ON_AP_RUN IN NUMBER DEFAULT 0
4338 ,p_TX_ON_AP_PTD IN NUMBER DEFAULT 0
4339 ,p_TX_ON_AP_YTD IN NUMBER DEFAULT 0
4340 ,p_TX_ON_BP_PTD IN NUMBER DEFAULT 0
4341 ,p_TX_ON_BP_YTD IN NUMBER DEFAULT 0
4342 ,p_TX_ON_TA_PTD IN NUMBER DEFAULT 0
4343 ,p_TX_ON_TA_YTD IN NUMBER DEFAULT 0
4344 ,p_TX_ON_FB_PTD IN NUMBER DEFAULT 0
4345 ,p_TX_ON_FB_YTD IN NUMBER DEFAULT 0
4346 ,p_TX_ON_NI_PTD IN NUMBER DEFAULT 0
4347 ,p_TX_ON_NI_YTD IN NUMBER DEFAULT 0
4348 ,p_TX_ON_PO_PTD IN NUMBER DEFAULT 0
4349 ,p_TX_ON_PO_YTD IN NUMBER DEFAULT 0
4350 ,p_TXB_AP_NRFI_CMTD IN NUMBER DEFAULT 0
4351 ,p_TXB_AP_NRFI_RUN IN NUMBER DEFAULT 0
4352 ,p_TXB_AP_NRFI_PTD IN NUMBER DEFAULT 0
4353 ,p_TXB_AP_NRFI_YTD IN NUMBER DEFAULT 0
4354 ,p_TXB_AP_RFI_CMTD IN NUMBER DEFAULT 0
4355 ,p_TXB_AP_RFI_RUN IN NUMBER DEFAULT 0
4356 ,p_TXB_AP_RFI_PTD IN NUMBER DEFAULT 0
4357 ,p_TXB_AP_RFI_YTD IN NUMBER DEFAULT 0
4358 ) RETURN NUMBER
4359 AS
4360 l_Dum NUMBER := 1;
4361
4362 BEGIN
4363 -- Balances
4364 bal_OTHER_TXB_ALL_NRFI_CMTD := p_OTHER_TXB_ALL_NRFI_CMTD;
4365 bal_OTHER_TXB_ALL_NRFI_CYTD := p_OTHER_TXB_ALL_NRFI_CYTD;
4366 bal_OTHER_TXB_ALL_NRFI_RUN := p_OTHER_TXB_ALL_NRFI_RUN;
4367 bal_OTHER_TXB_ALL_NRFI_PTD := p_OTHER_TXB_ALL_NRFI_PTD;
4368 bal_OTHER_TXB_ALL_NRFI_YTD := p_OTHER_TXB_ALL_NRFI_YTD;
4369 bal_OTHER_TXB_ALL_RFI_CMTD := p_OTHER_TXB_ALL_RFI_CMTD;
4370 bal_OTHER_TXB_ALL_RFI_CYTD := p_OTHER_TXB_ALL_RFI_CYTD;
4371 bal_OTHER_TXB_ALL_RFI_RUN := p_OTHER_TXB_ALL_RFI_RUN;
4372 bal_OTHER_TXB_ALL_RFI_PTD := p_OTHER_TXB_ALL_RFI_PTD;
4373 bal_OTHER_TXB_ALL_RFI_YTD := p_OTHER_TXB_ALL_RFI_YTD;
4374 bal_OVTM_NRFI_CMTD := p_OVTM_NRFI_CMTD;
4375 bal_OVTM_NRFI_CYTD := p_OVTM_NRFI_CYTD;
4376 bal_OVTM_NRFI_RUN := p_OVTM_NRFI_RUN;
4377 bal_OVTM_NRFI_PTD := p_OVTM_NRFI_PTD;
4378 bal_OVTM_NRFI_YTD := p_OVTM_NRFI_YTD;
4379 bal_OVTM_RFI_CMTD := p_OVTM_RFI_CMTD;
4380 bal_OVTM_RFI_CYTD := p_OVTM_RFI_CYTD;
4381 bal_OVTM_RFI_RUN := p_OVTM_RFI_RUN;
4382 bal_OVTM_RFI_PTD := p_OVTM_RFI_PTD;
4383 bal_OVTM_RFI_YTD := p_OVTM_RFI_YTD;
4384 bal_PAYE_YTD := p_PAYE_YTD;
4385 bal_PYM_DBT_NRFI_CMTD := p_PYM_DBT_NRFI_CMTD;
4386 bal_PYM_DBT_NRFI_CYTD := p_PYM_DBT_NRFI_CYTD;
4387 bal_PYM_DBT_NRFI_RUN := p_PYM_DBT_NRFI_RUN;
4388 bal_PYM_DBT_NRFI_PTD := p_PYM_DBT_NRFI_PTD;
4389 bal_PYM_DBT_NRFI_YTD := p_PYM_DBT_NRFI_YTD;
4390 bal_PYM_DBT_RFI_CMTD := p_PYM_DBT_RFI_CMTD;
4391 bal_PYM_DBT_RFI_CYTD := p_PYM_DBT_RFI_CYTD;
4392 bal_PYM_DBT_RFI_RUN := p_PYM_DBT_RFI_RUN;
4393 bal_PYM_DBT_RFI_PTD := p_PYM_DBT_RFI_PTD;
4394 bal_PYM_DBT_RFI_YTD := p_PYM_DBT_RFI_YTD;
4395 bal_PO_NRFI_CMTD := p_PO_NRFI_CMTD;
4396 bal_PO_NRFI_RUN := p_PO_NRFI_RUN;
4397 bal_PO_NRFI_PTD := p_PO_NRFI_PTD;
4398 bal_PO_NRFI_YTD := p_PO_NRFI_YTD;
4399 bal_PO_RFI_CMTD := p_PO_RFI_CMTD;
4400 bal_PO_RFI_RUN := p_PO_RFI_RUN;
4401 bal_PO_RFI_PTD := p_PO_RFI_PTD;
4402 bal_PO_RFI_YTD := p_PO_RFI_YTD;
4403 bal_PRCH_ANU_TXB_NRFI_CMTD := p_PRCH_ANU_TXB_NRFI_CMTD;
4404 bal_PRCH_ANU_TXB_NRFI_RUN := p_PRCH_ANU_TXB_NRFI_RUN;
4405 bal_PRCH_ANU_TXB_NRFI_PTD := p_PRCH_ANU_TXB_NRFI_PTD;
4406 bal_PRCH_ANU_TXB_NRFI_YTD := p_PRCH_ANU_TXB_NRFI_YTD;
4407 bal_PRCH_ANU_TXB_RFI_CMTD := p_PRCH_ANU_TXB_RFI_CMTD;
4408 bal_PRCH_ANU_TXB_RFI_RUN := p_PRCH_ANU_TXB_RFI_RUN;
4409 bal_PRCH_ANU_TXB_RFI_PTD := p_PRCH_ANU_TXB_RFI_PTD;
4410 bal_PRCH_ANU_TXB_RFI_YTD := p_PRCH_ANU_TXB_RFI_YTD;
4411 bal_RGT_AST_NRFI_CMTD := p_RGT_AST_NRFI_CMTD;
4412 bal_RGT_AST_NRFI_CYTD := p_RGT_AST_NRFI_CYTD;
4413 bal_RGT_AST_NRFI_RUN := p_RGT_AST_NRFI_RUN;
4414 bal_RGT_AST_NRFI_PTD := p_RGT_AST_NRFI_PTD;
4415 bal_RGT_AST_NRFI_YTD := p_RGT_AST_NRFI_YTD;
4416 bal_RGT_AST_RFI_CMTD := p_RGT_AST_RFI_CMTD;
4417 bal_RGT_AST_RFI_CYTD := p_RGT_AST_RFI_CYTD;
4418 bal_RGT_AST_RFI_RUN := p_RGT_AST_RFI_RUN;
4419 bal_RGT_AST_RFI_PTD := p_RGT_AST_RFI_PTD;
4420 bal_RGT_AST_RFI_YTD := p_RGT_AST_RFI_YTD;
4421 bal_SITE_YTD := p_SITE_YTD;
4422 bal_TAX_YTD := p_TAX_YTD;
4423 bal_TX_ON_AB_PTD := p_TX_ON_AB_PTD;
4424 bal_TX_ON_AB_YTD := p_TX_ON_AB_YTD;
4425 bal_TX_ON_AP_RUN := p_TX_ON_AP_RUN;
4426 bal_TX_ON_AP_PTD := p_TX_ON_AP_PTD;
4427 bal_TX_ON_AP_YTD := p_TX_ON_AP_YTD;
4428 bal_TX_ON_BP_PTD := p_TX_ON_BP_PTD;
4429 bal_TX_ON_BP_YTD := p_TX_ON_BP_YTD;
4430 bal_TX_ON_TA_PTD := p_TX_ON_TA_PTD;
4431 bal_TX_ON_TA_YTD := p_TX_ON_TA_YTD;
4432 bal_TX_ON_FB_PTD := p_TX_ON_FB_PTD;
4433 bal_TX_ON_FB_YTD := p_TX_ON_FB_YTD;
4434 bal_TX_ON_NI_PTD := p_TX_ON_NI_PTD;
4435 bal_TX_ON_NI_YTD := p_TX_ON_NI_YTD;
4436 bal_TX_ON_PO_PTD := p_TX_ON_PO_PTD;
4437 bal_TX_ON_PO_YTD := p_TX_ON_PO_YTD;
4438 bal_TXB_AP_NRFI_CMTD := p_TXB_AP_NRFI_CMTD;
4439 bal_TXB_AP_NRFI_RUN := p_TXB_AP_NRFI_RUN;
4440 bal_TXB_AP_NRFI_PTD := p_TXB_AP_NRFI_PTD;
4441 bal_TXB_AP_NRFI_YTD := p_TXB_AP_NRFI_YTD;
4442 bal_TXB_AP_RFI_CMTD := p_TXB_AP_RFI_CMTD;
4443 bal_TXB_AP_RFI_RUN := p_TXB_AP_RFI_RUN;
4444 bal_TXB_AP_RFI_PTD := p_TXB_AP_RFI_PTD;
4445 bal_TXB_AP_RFI_YTD := p_TXB_AP_RFI_YTD;
4446
4447 RETURN l_Dum;
4448 EXCEPTION
4449 WHEN OTHERS THEN
4450 hr_utility.set_message(801, 'ZaTxBal3_01032000: '||TO_CHAR(SQLCODE));
4451 hr_utility.raise_error;
4452 END ZaTxBal3_01032000;
4453
4454 -- Function to Initialise Globals - Balance Values
4455 -- Fourth Section
4456 FUNCTION ZaTxBal4_01032000(
4457 -- Balances
4458 p_TXB_INC_NRFI_CMTD IN NUMBER DEFAULT 0
4459 ,p_TXB_INC_NRFI_CYTD IN NUMBER DEFAULT 0
4460 ,p_TXB_INC_NRFI_RUN IN NUMBER DEFAULT 0
4461 ,p_TXB_INC_NRFI_PTD IN NUMBER DEFAULT 0
4462 ,p_TXB_INC_NRFI_YTD IN NUMBER DEFAULT 0
4463 ,p_TXB_INC_RFI_CMTD IN NUMBER DEFAULT 0
4464 ,p_TXB_INC_RFI_CYTD IN NUMBER DEFAULT 0
4465 ,p_TXB_INC_RFI_RUN IN NUMBER DEFAULT 0
4466 ,p_TXB_INC_RFI_PTD IN NUMBER DEFAULT 0
4467 ,p_TXB_INC_RFI_YTD IN NUMBER DEFAULT 0
4468 ,p_TXB_PEN_NRFI_CMTD IN NUMBER DEFAULT 0
4469 ,p_TXB_PEN_NRFI_CYTD IN NUMBER DEFAULT 0
4470 ,p_TXB_PEN_NRFI_RUN IN NUMBER DEFAULT 0
4471 ,p_TXB_PEN_NRFI_PTD IN NUMBER DEFAULT 0
4472 ,p_TXB_PEN_NRFI_YTD IN NUMBER DEFAULT 0
4473 ,p_TXB_PEN_RFI_CMTD IN NUMBER DEFAULT 0
4474 ,p_TXB_PEN_RFI_CYTD IN NUMBER DEFAULT 0
4475 ,p_TXB_PEN_RFI_RUN IN NUMBER DEFAULT 0
4476 ,p_TXB_PEN_RFI_PTD IN NUMBER DEFAULT 0
4477 ,p_TXB_PEN_RFI_YTD IN NUMBER DEFAULT 0
4478 ,p_TEL_ALL_NRFI_CMTD IN NUMBER DEFAULT 0
4479 ,p_TEL_ALL_NRFI_CYTD IN NUMBER DEFAULT 0
4480 ,p_TEL_ALL_NRFI_RUN IN NUMBER DEFAULT 0
4481 ,p_TEL_ALL_NRFI_PTD IN NUMBER DEFAULT 0
4482 ,p_TEL_ALL_NRFI_YTD IN NUMBER DEFAULT 0
4483 ,p_TEL_ALL_RFI_CMTD IN NUMBER DEFAULT 0
4484 ,p_TEL_ALL_RFI_CYTD IN NUMBER DEFAULT 0
4485 ,p_TEL_ALL_RFI_RUN IN NUMBER DEFAULT 0
4486 ,p_TEL_ALL_RFI_PTD IN NUMBER DEFAULT 0
4487 ,p_TEL_ALL_RFI_YTD IN NUMBER DEFAULT 0
4488 ,p_TOOL_ALL_NRFI_CMTD IN NUMBER DEFAULT 0
4489 ,p_TOOL_ALL_NRFI_CYTD IN NUMBER DEFAULT 0
4490 ,p_TOOL_ALL_NRFI_RUN IN NUMBER DEFAULT 0
4491 ,p_TOOL_ALL_NRFI_PTD IN NUMBER DEFAULT 0
4492 ,p_TOOL_ALL_NRFI_YTD IN NUMBER DEFAULT 0
4493 ,p_TOOL_ALL_RFI_CMTD IN NUMBER DEFAULT 0
4494 ,p_TOOL_ALL_RFI_CYTD IN NUMBER DEFAULT 0
4495 ,p_TOOL_ALL_RFI_RUN IN NUMBER DEFAULT 0
4496 ,p_TOOL_ALL_RFI_PTD IN NUMBER DEFAULT 0
4497 ,p_TOOL_ALL_RFI_YTD IN NUMBER DEFAULT 0
4498 ,p_TOT_INC_PTD IN NUMBER DEFAULT 0
4499 ,p_TOT_INC_YTD IN NUMBER DEFAULT 0
4500 ,p_TOT_NRFI_AN_INC_CMTD IN NUMBER DEFAULT 0
4501 ,p_TOT_NRFI_AN_INC_CYTD IN NUMBER DEFAULT 0
4502 ,p_TOT_NRFI_AN_INC_RUN IN NUMBER DEFAULT 0
4503 ,p_TOT_NRFI_AN_INC_PTD IN NUMBER DEFAULT 0
4504 ,p_TOT_NRFI_AN_INC_YTD IN NUMBER DEFAULT 0
4505 ,p_TOT_NRFI_INC_CMTD IN NUMBER DEFAULT 0
4506 ,p_TOT_NRFI_INC_CYTD IN NUMBER DEFAULT 0
4507 ,p_TOT_NRFI_INC_RUN IN NUMBER DEFAULT 0
4508 ,p_TOT_NRFI_INC_PTD IN NUMBER DEFAULT 0
4509 ,p_TOT_NRFI_INC_YTD IN NUMBER DEFAULT 0
4510 ,p_TOT_RFI_AN_INC_CMTD IN NUMBER DEFAULT 0
4511 ,p_TOT_RFI_AN_INC_CYTD IN NUMBER DEFAULT 0
4512 ,p_TOT_RFI_AN_INC_RUN IN NUMBER DEFAULT 0
4513 ,p_TOT_RFI_AN_INC_PTD IN NUMBER DEFAULT 0
4514 ,p_TOT_RFI_AN_INC_YTD IN NUMBER DEFAULT 0
4515 ,p_TOT_RFI_INC_CMTD IN NUMBER DEFAULT 0
4516 ,p_TOT_RFI_INC_CYTD IN NUMBER DEFAULT 0
4517 ,p_TOT_RFI_INC_RUN IN NUMBER DEFAULT 0
4518 ,p_TOT_RFI_INC_PTD IN NUMBER DEFAULT 0
4519 ,p_TOT_RFI_INC_YTD IN NUMBER DEFAULT 0
4520 ,p_TOT_SEA_WRK_DYS_WRK_YTD IN NUMBER DEFAULT 0
4521 ,p_TOT_TXB_INC_ITD IN NUMBER DEFAULT 0
4522 ,p_TA_NRFI_CMTD IN NUMBER DEFAULT 0
4523 ,p_TA_NRFI_CYTD IN NUMBER DEFAULT 0
4524 ,p_TA_NRFI_PTD IN NUMBER DEFAULT 0
4525 ,p_TA_NRFI_YTD IN NUMBER DEFAULT 0
4526 ,p_TA_RFI_CMTD IN NUMBER DEFAULT 0
4527 ,p_TA_RFI_CYTD IN NUMBER DEFAULT 0
4528 ,p_TA_RFI_PTD IN NUMBER DEFAULT 0
4529 ,p_TA_RFI_YTD IN NUMBER DEFAULT 0
4530 ,p_USE_VEH_NRFI_CMTD IN NUMBER DEFAULT 0
4531 ,p_USE_VEH_NRFI_CYTD IN NUMBER DEFAULT 0
4532 ,p_USE_VEH_NRFI_RUN IN NUMBER DEFAULT 0
4533 ,p_USE_VEH_NRFI_PTD IN NUMBER DEFAULT 0
4534 ,p_USE_VEH_NRFI_YTD IN NUMBER DEFAULT 0
4535 ,p_USE_VEH_RFI_CMTD IN NUMBER DEFAULT 0
4536 ,p_USE_VEH_RFI_CYTD IN NUMBER DEFAULT 0
4537 ,p_USE_VEH_RFI_RUN IN NUMBER DEFAULT 0
4538 ,p_USE_VEH_RFI_PTD IN NUMBER DEFAULT 0
4539 ,p_USE_VEH_RFI_YTD IN NUMBER DEFAULT 0
4540 ) RETURN NUMBER
4541 AS
4542 l_Dum NUMBER := 1;
4543
4544 BEGIN
4545 -- Balances
4546 bal_TXB_INC_NRFI_CMTD := p_TXB_INC_NRFI_CMTD;
4547 bal_TXB_INC_NRFI_CYTD := p_TXB_INC_NRFI_CYTD;
4548 bal_TXB_INC_NRFI_RUN := p_TXB_INC_NRFI_RUN;
4549 bal_TXB_INC_NRFI_PTD := p_TXB_INC_NRFI_PTD;
4550 bal_TXB_INC_NRFI_YTD := p_TXB_INC_NRFI_YTD;
4551 bal_TXB_INC_RFI_CMTD := p_TXB_INC_RFI_CMTD;
4552 bal_TXB_INC_RFI_CYTD := p_TXB_INC_RFI_CYTD;
4553 bal_TXB_INC_RFI_RUN := p_TXB_INC_RFI_RUN;
4554 bal_TXB_INC_RFI_PTD := p_TXB_INC_RFI_PTD;
4555 bal_TXB_INC_RFI_YTD := p_TXB_INC_RFI_YTD;
4556 bal_TXB_PEN_NRFI_CMTD := p_TXB_PEN_NRFI_CMTD;
4557 bal_TXB_PEN_NRFI_CYTD := p_TXB_PEN_NRFI_CYTD;
4558 bal_TXB_PEN_NRFI_RUN := p_TXB_PEN_NRFI_RUN;
4559 bal_TXB_PEN_NRFI_PTD := p_TXB_PEN_NRFI_PTD;
4560 bal_TXB_PEN_NRFI_YTD := p_TXB_PEN_NRFI_YTD;
4561 bal_TXB_PEN_RFI_CMTD := p_TXB_PEN_RFI_CMTD;
4562 bal_TXB_PEN_RFI_CYTD := p_TXB_PEN_RFI_CYTD;
4563 bal_TXB_PEN_RFI_RUN := p_TXB_PEN_RFI_RUN;
4564 bal_TXB_PEN_RFI_PTD := p_TXB_PEN_RFI_PTD;
4565 bal_TXB_PEN_RFI_YTD := p_TXB_PEN_RFI_YTD;
4566 bal_TEL_ALL_NRFI_CMTD := p_TEL_ALL_NRFI_CMTD;
4567 bal_TEL_ALL_NRFI_CYTD := p_TEL_ALL_NRFI_CYTD;
4568 bal_TEL_ALL_NRFI_RUN := p_TEL_ALL_NRFI_RUN;
4569 bal_TEL_ALL_NRFI_PTD := p_TEL_ALL_NRFI_PTD;
4570 bal_TEL_ALL_NRFI_YTD := p_TEL_ALL_NRFI_YTD;
4571 bal_TEL_ALL_RFI_CMTD := p_TEL_ALL_RFI_CMTD;
4572 bal_TEL_ALL_RFI_CYTD := p_TEL_ALL_RFI_CYTD;
4573 bal_TEL_ALL_RFI_RUN := p_TEL_ALL_RFI_RUN;
4574 bal_TEL_ALL_RFI_PTD := p_TEL_ALL_RFI_PTD;
4575 bal_TEL_ALL_RFI_YTD := p_TEL_ALL_RFI_YTD;
4576 bal_TOOL_ALL_NRFI_CMTD := p_TOOL_ALL_NRFI_CMTD;
4577 bal_TOOL_ALL_NRFI_CYTD := p_TOOL_ALL_NRFI_CYTD;
4578 bal_TOOL_ALL_NRFI_RUN := p_TOOL_ALL_NRFI_RUN;
4579 bal_TOOL_ALL_NRFI_PTD := p_TOOL_ALL_NRFI_PTD;
4580 bal_TOOL_ALL_NRFI_YTD := p_TOOL_ALL_NRFI_YTD;
4581 bal_TOOL_ALL_RFI_CMTD := p_TOOL_ALL_RFI_CMTD;
4582 bal_TOOL_ALL_RFI_CYTD := p_TOOL_ALL_RFI_CYTD;
4583 bal_TOOL_ALL_RFI_RUN := p_TOOL_ALL_RFI_RUN;
4584 bal_TOOL_ALL_RFI_PTD := p_TOOL_ALL_RFI_PTD;
4585 bal_TOOL_ALL_RFI_YTD := p_TOOL_ALL_RFI_YTD;
4586 bal_TOT_INC_PTD := p_TOT_INC_PTD;
4587 bal_TOT_INC_YTD := p_TOT_INC_YTD;
4588 bal_TOT_NRFI_AN_INC_CMTD := p_TOT_NRFI_AN_INC_CMTD;
4589 bal_TOT_NRFI_AN_INC_CYTD := p_TOT_NRFI_AN_INC_CYTD;
4590 bal_TOT_NRFI_AN_INC_RUN := p_TOT_NRFI_AN_INC_RUN;
4591 bal_TOT_NRFI_AN_INC_PTD := p_TOT_NRFI_AN_INC_PTD;
4592 bal_TOT_NRFI_AN_INC_YTD := p_TOT_NRFI_AN_INC_YTD;
4593 bal_TOT_NRFI_INC_CMTD := p_TOT_NRFI_INC_CMTD;
4594 bal_TOT_NRFI_INC_CYTD := p_TOT_NRFI_INC_CYTD;
4595 bal_TOT_NRFI_INC_RUN := p_TOT_NRFI_INC_RUN;
4596 bal_TOT_NRFI_INC_PTD := p_TOT_NRFI_INC_PTD;
4597 bal_TOT_NRFI_INC_YTD := p_TOT_NRFI_INC_YTD;
4598 bal_TOT_RFI_AN_INC_CMTD := p_TOT_RFI_AN_INC_CMTD;
4599 bal_TOT_RFI_AN_INC_CYTD := p_TOT_RFI_AN_INC_CYTD;
4600 bal_TOT_RFI_AN_INC_RUN := p_TOT_RFI_AN_INC_RUN;
4601 bal_TOT_RFI_AN_INC_PTD := p_TOT_RFI_AN_INC_PTD;
4602 bal_TOT_RFI_AN_INC_YTD := p_TOT_RFI_AN_INC_YTD;
4603 bal_TOT_RFI_INC_CMTD := p_TOT_RFI_INC_CMTD;
4604 bal_TOT_RFI_INC_CYTD := p_TOT_RFI_INC_CYTD;
4605 bal_TOT_RFI_INC_RUN := p_TOT_RFI_INC_RUN;
4606 bal_TOT_RFI_INC_PTD := p_TOT_RFI_INC_PTD;
4607 bal_TOT_RFI_INC_YTD := p_TOT_RFI_INC_YTD;
4608 bal_TOT_SEA_WRK_DYS_WRK_YTD := p_TOT_SEA_WRK_DYS_WRK_YTD;
4609 bal_TOT_TXB_INC_ITD := p_TOT_TXB_INC_ITD;
4610 bal_TA_NRFI_CMTD := p_TA_NRFI_CMTD;
4611 bal_TA_NRFI_CYTD := p_TA_NRFI_CYTD;
4612 bal_TA_NRFI_PTD := p_TA_NRFI_PTD;
4613 bal_TA_NRFI_YTD := p_TA_NRFI_YTD;
4614 bal_TA_RFI_CMTD := p_TA_RFI_CMTD;
4615 bal_TA_RFI_CYTD := p_TA_RFI_CYTD;
4616 bal_TA_RFI_PTD := p_TA_RFI_PTD;
4617 bal_TA_RFI_YTD := p_TA_RFI_YTD;
4618 bal_USE_VEH_NRFI_CMTD := p_USE_VEH_NRFI_CMTD;
4619 bal_USE_VEH_NRFI_CYTD := p_USE_VEH_NRFI_CYTD;
4620 bal_USE_VEH_NRFI_RUN := p_USE_VEH_NRFI_RUN;
4621 bal_USE_VEH_NRFI_PTD := p_USE_VEH_NRFI_PTD;
4622 bal_USE_VEH_NRFI_YTD := p_USE_VEH_NRFI_YTD;
4623 bal_USE_VEH_RFI_CMTD := p_USE_VEH_RFI_CMTD;
4624 bal_USE_VEH_RFI_CYTD := p_USE_VEH_RFI_CYTD;
4625 bal_USE_VEH_RFI_RUN := p_USE_VEH_RFI_RUN;
4626 bal_USE_VEH_RFI_PTD := p_USE_VEH_RFI_PTD;
4627 bal_USE_VEH_RFI_YTD := p_USE_VEH_RFI_YTD;
4628
4629 RETURN l_Dum;
4630 EXCEPTION
4631 WHEN OTHERS THEN
4632 hr_utility.set_message(801, 'ZaTxBal4_01032000: '||TO_CHAR(SQLCODE));
4633 hr_utility.raise_error;
4634 END ZaTxBal4_01032000;
4635
4636 -- Main Tax Function
4637 -- Called from Fast Formula
4638 FUNCTION ZaTx_01032000(
4639 /* PARAMETERS */
4640 -- Contexts
4641 ASSIGNMENT_ACTION_ID IN NUMBER
4642 ,ASSIGNMENT_ID IN NUMBER
4643 ,PAYROLL_ACTION_ID IN NUMBER
4644 ,PAYROLL_ID IN NUMBER
4645 -- Out Parameters
4646 , p_LibWrn OUT NOCOPY VARCHAR2
4647 , p_LibFpNI OUT NOCOPY NUMBER
4648 , p_LibFpFB OUT NOCOPY NUMBER
4649 , p_LibFpTA OUT NOCOPY NUMBER
4650 , p_LibFpBP OUT NOCOPY NUMBER
4651 , p_LibFpAB OUT NOCOPY NUMBER
4652 , p_LibFpAP OUT NOCOPY NUMBER
4653 , p_LibFpPO OUT NOCOPY NUMBER
4654 , p_PayValue OUT NOCOPY NUMBER
4655 , p_PayeVal OUT NOCOPY NUMBER
4656 , p_SiteVal OUT NOCOPY NUMBER
4657 , p_It3Ind OUT NOCOPY NUMBER
4658 , p_PfUpdFig OUT NOCOPY NUMBER
4659 , p_RaUpdFig OUT NOCOPY NUMBER
4660 , p_OUpdFig OUT NOCOPY NUMBER
4661 , p_NtiUpdFig OUT NOCOPY NUMBER
4662 , p_OvrWrn OUT NOCOPY VARCHAR2
4663 )RETURN NUMBER
4664 AS
4665 -- Variables
4666 --
4667 l_Dum NUMBER := 1;
4668
4669
4670 BEGIN
4671 -- Set hr_utility globals if debugging
4672 --
4673 -- py_za_tx_utl_01032000.g_HrTraceEnabled := TRUE;
4674 -- py_za_tx_utl_01032000.g_HrTracePipeName := 'ZATAX';
4675
4676 -- Call hr_utility start procedure
4677 py_za_tx_utl_01032000.StartHrTrace;
4678
4679 -- Setup Trace Header Info
4680 py_za_tx_utl_01032000.WriteHrTrace(' ');
4681 py_za_tx_utl_01032000.WriteHrTrace(' ');
4682 py_za_tx_utl_01032000.WriteHrTrace(' ');
4683 py_za_tx_utl_01032000.WriteHrTrace('------------------------------------------------------------');
4684 py_za_tx_utl_01032000.WriteHrTrace('-- Start of Trace File');
4685 py_za_tx_utl_01032000.WriteHrTrace('------------------------------------------------------------');
4686 py_za_tx_utl_01032000.WriteHrTrace(' ');
4687 py_za_tx_utl_01032000.WriteHrTrace('Processing Assignment ID :'||to_char(ASSIGNMENT_ID));
4688 py_za_tx_utl_01032000.WriteHrTrace('Assignment Action ID :'||to_char(ASSIGNMENT_ACTION_ID));
4689 py_za_tx_utl_01032000.WriteHrTrace('Payroll Action ID :'||to_char(PAYROLL_ACTION_ID));
4690 py_za_tx_utl_01032000.WriteHrTrace('Payroll ID :'||to_char(PAYROLL_ID));
4691 py_za_tx_utl_01032000.WriteHrTrace(' ');
4692 py_za_tx_utl_01032000.WriteHrTrace('------------------------------------------------------------');
4693 py_za_tx_utl_01032000.WriteHrTrace(' ');
4694
4695 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',1);
4696
4697 -- Initialise Package Globals
4698 -- Contexts
4699 con_ASG_ACT_ID := ASSIGNMENT_ACTION_ID;
4700 con_ASG_ID := ASSIGNMENT_ID;
4701 con_PRL_ACT_ID := PAYROLL_ACTION_ID;
4702 con_PRL_ID := PAYROLL_ID;
4703
4704 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',2);
4705
4706 -- Date Effective Tax Status Validation
4707 --
4708 IF dbi_TX_STA IN ('J','K','L') THEN
4709 IF xpt_Msg = 'No Error' THEN
4710 xpt_Msg := 'PY_ZA_TX_STATE_AUG';
4711 END IF;
4712 RAISE xpt_E;
4713 END IF;
4714
4715 -- Tax Override Validation
4716 --
4717 /*
4718 V = Amount
4719 P = Percentage
4720 S = Force Site Calculation
4721 */
4722
4723 -- Tax Status Validation
4724 --
4725 /*
4726 A = Normal
4727 B = Provisional
4728 C = Directive Amount
4729 D = Directive Percentage
4730 E = Close Corporation
4731 F = Temporary Worker/Student
4732 G = Seasonal Worker
4733 H = Zero Tax
4734 J = Personal Service Company
4735 K = Personal Service Trust
4736 L = Labour Broker
4737 */
4738 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',3);
4739
4740 -- C = Directive Amount
4741 --
4742 IF dbi_TX_STA = 'C' THEN
4743 IF trc_OvrTxCalc AND (trc_OvrTyp = 'S' OR trc_OvrTyp = 'P') THEN
4744 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',4);
4745 IF xpt_Msg = 'No Error' THEN
4746 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',5);
4747 xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_C';
4748 END IF;
4749 RAISE xpt_E;
4750 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',6);
4751 ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4752 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',7);
4753 trc_CalTyp := 'OvrCalc';
4754 trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4755 -- Check Directive Number First
4756 ELSIF dbi_TX_DIR_NUM = 'NULL' THEN
4757 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',8);
4758 IF xpt_Msg = 'No Error' THEN
4759 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',9);
4760 xpt_Msg := 'PY_ZA_TX_DIR_NUM';
4761 END IF;
4762 RAISE xpt_E;
4763 -- Check that directive value is filled in
4764 ELSIF dbi_TX_DIR_VAL = -1 THEN
4765 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',10);
4766 IF xpt_Msg = 'No Error' THEN
4767 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',11);
4768 xpt_Msg := 'PY_ZA_TX_DIR_MONT';
4769 END IF;
4770 RAISE xpt_E;
4771 ELSE
4772 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',12);
4773 trc_CalTyp := 'NoCalc';
4774 -- Liability = entered value
4775 trc_LibFpNI := dbi_TX_DIR_VAL;
4776 -- Standard NetPay Validation
4777 py_za_tx_utl_01032000.NpVal;
4778 END IF;
4779 -- D = Directive Percentage
4780 --
4781 ELSIF dbi_TX_STA = 'D' THEN
4782 IF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
4783 IF xpt_Msg = 'No Error' THEN
4784 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',13);
4785 xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_DEF';
4786 END IF;
4787 RAISE xpt_E;
4788 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',14);
4789 ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4790 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',15);
4791 trc_CalTyp := 'OvrCalc';
4792 trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4793 ELSE
4794 IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
4795 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',16);
4796 trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
4797 -- Percentage taken into account in py_za_tx_utl_01032000.TaxLiability
4798 END IF;
4799 -- Check Directive Number First
4800 IF dbi_TX_DIR_NUM = 'NULL' THEN
4801 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',17);
4802 IF xpt_Msg = 'No Error' THEN
4803 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',18);
4804 xpt_Msg := 'PY_ZA_TX_DIR_NUM';
4805 END IF;
4806 RAISE xpt_E;
4807 -- Check that directive value is filled in
4808 ELSIF dbi_TX_DIR_VAL = -1 THEN
4809 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',19);
4810 IF xpt_Msg = 'No Error' THEN
4811 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',20);
4812 xpt_Msg := 'PY_ZA_TX_DIR_PERC';
4813 END IF;
4814 RAISE xpt_E;
4815 ELSE
4816 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',21);
4817 DirCalc;
4818 END IF;
4819 END IF;
4820 -- E = Close Corporation
4821 -- F = Temporary Worker/Student
4822 -- J = Personal Service Company
4823 -- L = Labour Broker
4824 --
4825 ELSIF dbi_TX_STA IN ('E','F','J','L') THEN
4826 IF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
4827 IF xpt_Msg = 'No Error' THEN
4828 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',22);
4829 xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_DEF';
4830 END IF;
4831 RAISE xpt_E;
4832 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',23);
4833 ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4834 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',24);
4835 trc_CalTyp := 'OvrCalc';
4836 trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4837 ELSE
4838 IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
4839 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',25);
4840 trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
4841 -- Percentage taken into account in py_za_tx_utl_01032000.TaxLiability
4842 END IF;
4843 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',26);
4844 -- Simply Execute the Directive Calculation
4845 DirCalc;
4846 END IF;
4847 -- G = Seasonal Worker
4848 --
4849 ELSIF dbi_TX_STA = 'G' THEN
4850 IF trc_OvrTxCalc AND (trc_OvrTyp = 'S' OR trc_OvrTyp = 'P') THEN
4851 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',27);
4852 IF xpt_Msg = 'No Error' THEN
4853 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',28);
4854 xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_G';
4855 END IF;
4856 RAISE xpt_E;
4857 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',29);
4858 -- Check that seasonal worker days worked is filled in
4859 ELSIF dbi_SEA_WRK_DYS_WRK = 0 THEN
4860 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',30);
4861 IF xpt_Msg = 'No Error' THEN
4862 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',31);
4863 xpt_Msg := 'PY_ZA_TX_SEA_WRK_DYS';
4864 END IF;
4865 RAISE xpt_E;
4866 ELSE
4867 IF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4868 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',32);
4869 trc_CalTyp := 'OvrCalc';
4870 trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4871 py_za_tx_utl_01032000.SetRebates;
4872 ELSE
4873 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',33);
4874 SeaCalc;
4875 END IF;
4876 END IF;
4877 -- A = Normal
4878 -- B = Provisional
4879 -- K = Personal Service Trust
4880 --
4881 ELSIF dbi_TX_STA IN ('A','B','K') THEN
4882 IF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
4883 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',34);
4884 trc_CalTyp := 'OvrCalc';
4885 trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
4886 py_za_tx_utl_01032000.SetRebates;
4887 ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
4888 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',35);
4889 trc_CalTyp := 'OvrCalc';
4890 trc_OvrWrn := 'WARNING: Tax Override - Forced Site Calculation';
4891 -- Force the Site Calculation
4892 SitCalc;
4893 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',36);
4894 ELSE
4895 IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
4896 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',37);
4897 trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
4898 -- Percentage taken into account in py_za_tx_utl_01032000.TaxLiability
4899 END IF;
4900
4901 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',38);
4902 IF py_za_tx_utl_01032000.LatePayPeriod THEN
4903 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',39);
4904 LteCalc;
4905 -- Is this a SITE Period?
4906 ELSIF py_za_tx_utl_01032000.EmpTermPrePeriod THEN
4907 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',40);
4908 SitCalc;
4909 ELSIF py_za_tx_utl_01032000.LstPeriod OR py_za_tx_utl_01032000.EmpTermInPeriod THEN
4910 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',41);
4911 IF py_za_tx_utl_01032000.PreErnPeriod THEN
4912 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',42);
4913 YtdCalc;
4914 ELSE
4915 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',43);
4916 SitCalc;
4917 END IF;
4918 ElSE
4919 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',44);
4920 -- The employee has NOT been terminated!
4921 IF py_za_tx_utl_01032000.PreErnPeriod THEN
4922 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',45);
4923 YtdCalc;
4924 ELSIF py_za_tx_utl_01032000.RetroInPrd THEN
4925 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',46);
4926 SitCalc;
4927 ELSE
4928 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',47);
4929 NorCalc;
4930 END IF;
4931 END IF;
4932 END IF;
4933 -- H = Zero Tax
4934 --
4935 ELSIF dbi_TX_STA = 'H' THEN
4936 IF trc_OvrTxCalc THEN
4937 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',48);
4938 IF xpt_Msg = 'No Error' THEN
4939 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',49);
4940 xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_H';
4941 END IF;
4942 RAISE xpt_E;
4943 ELSE
4944 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',50);
4945 trc_LibFpNI := 0;
4946 trc_LibFpFB := 0;
4947 trc_LibFpTA := 0;
4948 trc_LibFpBP := 0;
4949 trc_LibFpAB := 0;
4950 trc_LibFpAP := 0;
4951 trc_LibFpPO := 0;
4952 END IF;
4953 ELSE
4954 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',51);
4955 hr_utility.set_message(801, 'ERROR: Invalid Tax Status');
4956 hr_utility.raise_error;
4957 END IF;
4958
4959 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',52);
4960
4961 -- Post Calculation Steps
4962 --
4963 py_za_tx_utl_01032000.SitPaySplit;
4964
4965 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',53);
4966
4967 -- Execute the Arrear Processing
4968 --
4969 IF py_za_tx_utl_01032000.SitePeriod THEN
4970 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',54);
4971 py_za_tx_utl_01032000.ArrearExcess;
4972 END IF;
4973
4974 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',55);
4975
4976 -- Calculate Net Taxable Income
4977 --
4978 NetTxbIncCalc;
4979
4980 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',56);
4981
4982 -- Setup the Out Parameters
4983 --
4984 -- Messages
4985 p_LibWrn := trc_LibWrn;
4986
4987 -- Pay Values
4988 trc_PayValue :=
4989 ( trc_LibFpNI
4990 + trc_LibFpFB
4991 + trc_LibFpTA
4992 + trc_LibFpBP
4993 + trc_LibFpAB
4994 + trc_LibFpAP
4995 + trc_LibFpPO
4996 );
4997
4998 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',57);
4999
5000 -- Tax On's
5001 p_LibFpNI := trc_LibFpNI;
5002 p_LibFpFB := trc_LibFpFB;
5003 p_LibFpTA := trc_LibFpTA;
5004 p_LibFpBP := trc_LibFpBP;
5005 p_LibFpAB := trc_LibFpAB;
5006 p_LibFpAP := trc_LibFpAP;
5007 p_LibFpPO := trc_LibFpPO;
5008 p_PayValue := trc_PayValue;
5009
5010 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',58);
5011
5012 -- Indicators, Splits and Updates
5013 --
5014 -- Override Indicator
5015 IF trc_OvrTxCalc THEN
5016 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',59);
5017 -- Set Override Tax Value
5018 p_OvrWrn := trc_OvrWrn;
5019 END IF;
5020
5021 p_PayeVal := trc_PayeVal;
5022 p_SiteVal := trc_SiteVal;
5023 p_It3Ind := trc_It3Ind;
5024 p_PfUpdFig := trc_PfUpdFig;
5025 p_RaUpdFig := trc_RaUpdFig;
5026 p_OUpdFig := trc_OUpdFig;
5027 p_NtiUpdFig := trc_NtiUpdFig;
5028
5029 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',60);
5030
5031 -- Execute The Tax Trace
5032 --
5033 py_za_tx_utl_01032000.Trace;
5034
5035 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',61);
5036
5037 -- Clear Globals
5038 --
5039 py_za_tx_utl_01032000.ClearGlobals;
5040
5041 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',62);
5042
5043 -- End off Trace File
5044 py_za_tx_utl_01032000.WriteHrTrace('------------------------------------------------------------');
5045 py_za_tx_utl_01032000.WriteHrTrace('-- End of Trace File ');
5046 py_za_tx_utl_01032000.WriteHrTrace(' ');
5047
5048 -- Call hr_utility stop procedure
5049 py_za_tx_utl_01032000.StopHrTrace;
5050
5051 --dbms_debug.debug_off;
5052
5053 RETURN l_Dum;
5054
5055 EXCEPTION
5056 WHEN xpt_E THEN
5057 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',63);
5058 py_za_tx_utl_01032000.WriteHrTrace('xpt_Msg: '||xpt_Msg);
5059 py_za_tx_utl_01032000.StopHrTrace;
5060 hr_utility.set_message(801, xpt_Msg);
5061 py_za_tx_utl_01032000.ClearGlobals;
5062 hr_utility.raise_error;
5063 WHEN OTHERS THEN
5064 hr_utility.set_location('py_za_tx_01032000.ZaTx_01032000',64);
5065 py_za_tx_utl_01032000.WriteHrTrace('Sql error code: '||TO_CHAR(SQLCODE));
5066 py_za_tx_utl_01032000.WriteHrTrace('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
5067 py_za_tx_utl_01032000.StopHrTrace;
5068 hr_utility.set_message(801, 'ZaTx_01032000: '||TO_CHAR(SQLCODE));
5069 py_za_tx_utl_01032000.ClearGlobals;
5070 hr_utility.raise_error;
5071 END ZaTx_01032000;
5072
5073 END py_za_tx_01032000;
5074