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