[Home] [Help]
PACKAGE BODY: APPS.PY_ZA_TX_01032012
Source
1 PACKAGE BODY PY_ZA_TX_01032012 AS
2 /* $Header: pyzat013.pkb 120.35.12020000.6 2013/01/31 10:50:41 nchinnam noship $ */
3 /* Copyright (c) Oracle Corporation 2005. All rights reserved. */
4 /*
5 PRODUCT
6 Oracle Payroll - ZA Localisation Tax Module
7
8 NAME
9 py_za_tx_01032012.pkb
10
11 DESCRIPTION
12 This is the main tax package as used in the ZA Localisation Tax Module.
13 The public functions in this package are not for client use and is
14 only referenced by the tax formulae in the Application.
15
16 PUBLIC FUNCTIONS
17 Descriptions in package header
18 ZaTxOvr_01032012
19 ZaTxGlb_01032012
20 ZaTxDbi_01032012
21 ZaTxBal1_01032012
22 ZaTxBal2_01032012
23 ZaTxBal3_01032012
24 ZaTx_01032012
25
26 PRIVATE FUNCTIONS
27 <none>
28
29
30 PRIVATE PROCEDURES
31 WrtHrTrc
32 Wrapper procedure for py_za_tx_utl_01032012.WriteHrTrace
33 NetTxbIncCalc
34 Procedure to calculate a Net Taxable Income figure used
35 to properly calculate the Skills Development Levy
36 LteCalc
37 A main tax calculation.
38 For a complete description see the tax module design document.
39 SeaCalc
40 A main tax calculation.
41 For a complete description see the tax module design document.
42 SitCalc
43 A main tax calculation.
44 For a complete description see the tax module design document.
45 DirCalc
46 A main tax calculation.
47 For a complete description see the tax module design document.
48 BasCalc
49 A main tax calculation.
50 For a complete description see the tax module design document.
51 CalCalc
52 A main tax calculation.
53 For a complete description see the tax module design document.
54 YtdCalc
55 A main tax calculation.
56 For a complete description see the tax module design document.
57 NorCalc
58 A main tax calculation.
59 For a complete description see the tax module design document.
60
61 NOTES
62 .
63
64 MODIFICATION HISTORY
65 Person Date Version Bug Comments
66 ---------- ---------- -------------- ------- --------------------------------
67 R Babla 14/03/2008 115.0 8406456 Copied from pyzat008.pkb ver115.2
68 Changes done in Tax calculation
69 for code 4030.
70 R Babla 10/06/2009 115.1 8512751 Added a procedure NetPayeTxbIncCalc
71 which calculates Net PAYE Taxable Income
72 used for EMP201
73 P Arusia 17/7/2009 115.2 8691928 a) Removed newlines between various
74 operands of the expression
75 b) Changed the way of raising exception
76 else it would have got overwritten in
77 the OTHERS block
78 R Babla 28/7/2009 115.3 8526698 Changes done for Net to Gross processing.
79 NTG processing will occur after tax on other income
80 is calculated to ensure that tax on this tax free earnings
81 that is paid by the employer doesnt affect the tax paid by employee
82 on other incomes.
83 R Babla 20/8/2009 115.4 8824018 Net Taxable Income calculation modified for separate abatements for
84 NTG earnings.
85 New parameters passed to function ZaTxBal5_01032012
86 R Babla 01/09/2009 115.6 8844712 Procedure LteCalc re-written for Late Payments and new global passed
87 for the late payment tax percentage
88 R Babla 01/09/2009 115.7 9369895 Changes in the abatement calculation for Package structure employees
89 R Babla 26/02/2010 115.8 9397464 Removed reference of dbi_ZA_ASG_TX_YR%
90 R Babla 10/03/2009 115.9 9438325 Modified SitCalc to not override the value of trc_LibFpAPOvr while
91 calculating tax for Annual Bonus
92 NCHINNAM 03/11/2010 115.12 10245740 Non Cumilative tax method enhancement changes.
93 NCHINNAM 24/02/2011 115.1 11806660 2011/12 Tax Year End Legislative Changes.
94 NCHINNAM 17/03/2011 115.2 11879331 Fixed the issue.
95 ABDASH 24/06/2011 115.3 12351345 SOUTH AFRICA LEGISTATIVE - LUMP SUM TAX BALANCE
96 ABDASH 07/03/2012 115.13 13777759 CHANGES FOR MEDICAL AID TAX CREDIT FUNCTIONALIY
97 ABDASH 08/03/2012 115.15 13777759 CHANGES FOR MEDICAL AID TAX CREDIT FUNCTIONALIY
98 NCHINNAM 21/03/2012 115.16 13868867 Added initilization of package variables.
99 ABDASH 28/03/2012 115.23 13886791 PAYROLL TAX CALCULATION IS INCORRECT FOR EMPS RECEIVING MEDICAL AID TAX CREDITS
100 NCHINNAM 8/04/2012 115.28 Medical Tax credit is not applicable to Late Calculation
101 ABDASH 24/04/2012 115.30 13986697 Changed the alignment of the balances written into tax trace for clearer tax trace.
102 ABDASH 08/05/2012 115.31 14024624 APPLICATION OF MEDICAL TAX CREDIT ON DIRECTOR'S DEEMED REMUNERATION.
103 NCHINNAM 08/03/2012 115.13 14045928 MEDICAL TAX CREDIT For Lump sum Changes.\
104 ABDASH 21/05/2012 115.35 14062746 MEDICAL TAX CREDIT CALCULATION IN CASE OF TAX REFUND.
105 ABDASH 25/05/2012 115.36 14062746 MEDICAL TAX CREDIT CALCULATION IN CASE OF TAX REFUND WITH NEGATIVE PAYE.
106 ABDASH 12/06/2012 115.37 14168167 MAC ALLOWED TO BE REFUNDED INCASE OF EMPLOYEE ABOVE AGE 65 OR WHEN BALANCES FOR CODE 3810, 4005 AND 4474 ARE ZERO.
107 ABDASH 19/06/2012 115.38 14195352 Tax should be refunded only when net taxable income is below SITE limit and Med Abatement is not applicable for NI for employees above 65.
108 ABDASH 19/06/2012 115.39 14195352 Tax should be refunded only when net taxable income is below SITE limit and Med Abatement is not applicable for NI for employees above 65.
109 ABDASH 01/10/2012 115.40 14683909 Med Abatement is applicable for NI for employees above 65.
110 ABDASH 04/10/2012 115.42 14683909 Modified BasCalc for correct calculation.
111 ABDASH 04/10/2012 115.43 14376752 SDL Enh
112 ABDASH 19/10/2012 115.44 14376752 SDL Enh
113 ABDASH 19/10/2012 115.45 14376752 SDL Enh
114 ABDASH 19/10/2012 115.46 14376752 SDL Enh
115 ABDASH 19/10/2012 115.47 14376752 SDL Enh
116 ABDASH 30/01/2012 115.48 14536544 Performance Issue with Payrun fixed.
117 */
118
119 -------------------------------------------------------------------------------
120 -- PACKAGE BODY --
121 -------------------------------------------------------------------------------
122
123 FUNCTION get_def_bal_id (p_bal_name varchar2,
124 p_dim_name varchar2) return number is
125 cursor c_get_def_bal_id is
126 SELECT pdb.defined_balance_id
127 FROM pay_balance_types pbt
128 , pay_balance_dimensions pbd
129 , pay_defined_balances pdb
130 WHERE pbt.balance_name = p_bal_name
131 AND pbd.dimension_name = p_dim_name
132 AND pdb.balance_type_id = pbt.balance_type_id
133 AND pdb.balance_dimension_id = pbd.balance_dimension_id
134 AND pbd.legislation_code = 'ZA'
135 AND pbt.legislation_code = 'ZA';
136
137 l_def_bal_id number;
138 begin
139 open c_get_def_bal_id;
140 fetch c_get_def_bal_id into l_def_bal_id ;
141 close c_get_def_bal_id ;
142
143 return l_def_bal_id;
144 END get_def_bal_id;
145
146 -------------------------------------------------------------------------------
147 -- WrtHrTrc
148 -- Wrapper for py_za_tx_utl_01032012.WriteHrTrace
149 -------------------------------------------------------------------------------
150 PROCEDURE WrtHrTrc(
151 p_Buf IN VARCHAR2
152 )
153 AS
154
155 BEGIN
156
157 py_za_tx_utl_01032012.WriteHrTrace(p_Buf);
158 END WrtHrTrc;
159
160
161 -------------------------------------------------------------------------------
162 -- EMP201
163 -- NetPayeTxbIncCalc
164 -- Calculates the net Paye taxable income value for the calendar month
165 -------------------------------------------------------------------------------
166 PROCEDURE NetPayeTxbIncCalc (nti_PerTotAbm BALANCE
167 , nti_AnnTotAbm BALANCE
168 , nti_AnnTotNTGAbm BALANCE
169 , nti_SitFactor NUMBER) AS
170
171 -- Variable Declaration
172 nti_PerTypInc2 BALANCE default 0 ;
173 nti_PerTypErn2 BALANCE default 0 ;
174 nti_AnnTypErn2 BALANCE default 0 ;
175 nti_TxbPerTypInc2 BALANCE default 0 ;
176 nti_TxbAnnTypInc2 BALANCE default 0 ;
177 nti_NetPerTxbInc2 BALANCE default 0 ;
178 nti_NetAnnTxbInc2 BALANCE default 0 ;
179 nti_TxbAnnTypNTGInc2 BALANCE default 0 ;
180 nti_NetAnnTxbNTGInc2 BALANCE default 0 ;
181 nti_AnnTypNTGErn2 BALANCE default 0 ;
182
183 BEGIN
184
185 hr_utility.set_location('py_za_tx_01032012.NetPayeTxbIncCalc',1);
186 nti_PerTypInc2 := bal_GROSS_REMUNERATION_CMTD - bal_ANN_PAYMENTS_CMTD ;
187
188 -- Annualise by the Site Factor the Period Type Income
189 --
190 nti_PerTypErn2 := nti_PerTypInc2 * nti_SitFactor;
191
192 hr_utility.set_location('py_za_tx_01032012.NetPayeTxbIncCalc',2);
193
194 -- Sum Annual Type Income Calendar Month to Date Balances
195 --
196 nti_AnnTypErn2 := nti_PerTypErn2 + bal_ANN_PAYMENTS_CMTD - bal_TOT_TXB_EE_DBT_NTG_CMTD;
197
198 hr_utility.set_location('py_za_tx_01032012.NetPayeTxbIncCalc',3);
199
200 -- Sum Annual Type NTG Income Calendar Month to Date Balances
201 --
202 nti_AnnTypNTGErn2 := nti_AnnTypErn2 + bal_TOT_TXB_EE_DBT_NTG_CMTD;
203
204 hr_utility.set_location('py_za_tx_01032012.NetPayeTxbIncCalc',4);
205
206
207 -- Calculate New O Figures
208 --
209 nti_TxbPerTypInc2 := nti_PerTypErn2 - nti_PerTotAbm ;
210 nti_TxbAnnTypInc2 := nti_AnnTypErn2 - nti_AnnTotAbm;
211 nti_TxbAnnTypNTGInc2 := nti_AnnTypNTGErn2 - nti_AnnTotNTGAbm;
212
213
214 hr_utility.set_location('py_za_tx_01032012.NetPayeTxbIncCalc',5);
215 -- Deannualise Period O Figure
216 --
217 nti_NetPerTxbInc2 := nti_TxbPerTypInc2 / nti_SitFactor;
218
219 -- Calculate the Net Taxable Annual Type Income
220 --
221 nti_NetAnnTxbInc2 := nti_TxbAnnTypInc2 - nti_TxbPerTypInc2;
222 hr_utility.set_location('py_za_tx_01032012.NetPayeTxbIncCalc',6);
223
224 -- Calculate the Net Taxable NTG Annual Type Income
225 --
226 nti_NetAnnTxbNTGInc2 := nti_TxbAnnTypNTGInc2 - (nti_NetAnnTxbInc2 + nti_TxbPerTypInc2);
227 hr_utility.set_location('py_za_tx_01032012.NetPayeTxbIncCalc',7);
228
229 -- Calculate New Net Taxable Income Balance
230 --
231 trc_NPtiUpdFig := (nti_NetPerTxbInc2 + nti_NetAnnTxbInc2 + nti_NetAnnTxbNTGInc2) - bal_NET_PAYE_TXB_INC_CMTD;
232
233 WrtHrTrc('nti_SitFactor: '||to_char(nti_SitFactor));
234 WrtHrTrc('nti_PerTotAbm: '||to_char(nti_PerTotAbm));
235 WrtHrTrc('nti_AnnTotAbm: '||to_char(nti_AnnTotAbm));
236 WrtHrTrc('nti_AnnTotNTGAbm: '||to_char(nti_AnnTotNTGAbm));
237 WrtHrTrc('nti_PerTypErn2: '||to_char(nti_PerTypErn2));
238 WrtHrTrc('nti_AnnTypErn2: '||to_char(nti_AnnTypErn2));
239 WrtHrTrc('nti_TxbPerTypInc2: '||to_char(nti_TxbPerTypInc2));
240 WrtHrTrc('nti_NetPerTxbInc2: '||to_char(nti_NetPerTxbInc2));
241 WrtHrTrc('nti_TxbAnnTypInc2: '||to_char(nti_TxbAnnTypInc2));
242 WrtHrTrc('nti_AnnTypNTGErn2: '||to_char(nti_AnnTypNTGErn2));
243 WrtHrTrc('nti_TxbAnnTypNTGInc2: '||to_char(nti_TxbAnnTypNTGInc2));
244 WrtHrTrc('nti_NetAnnTxbNTGInc2: '||to_char(nti_NetAnnTxbNTGInc2));
245 WrtHrTrc('trc_NPtiUpdFig: '||to_char(trc_NPtiUpdFig));
246
247 END ;
248
249
250
251 -------------------------------------------------------------------------------
252 -- NetTxbIncCalc
253 -- Calculates the net taxable income value for the calendar month
254 -------------------------------------------------------------------------------
255 PROCEDURE NetTxbIncCalc(ASSIGNMENT_ACTION_ID IN NUMBER)
256 AS
257
258 -- Variable Declaration
259 nti_CurMthStrtDte DATE;
260 nti_CurMthEndDte DATE;
261 nti_SitFactor NUMBER;
262 nti_PerTypInc BALANCE DEFAULT 0;
263 nti_PerTypErn BALANCE DEFAULT 0;
264 nti_AnnTypErn BALANCE DEFAULT 0;
265 nti_PerPenFnd BALANCE DEFAULT 0;
266 nti_PerRfiCon BALANCE DEFAULT 0;
267 nti_PerPenFndMax BALANCE DEFAULT 0;
268 nti_PerPenFndAbm BALANCE DEFAULT 0;
269 nti_AnnPenFnd BALANCE DEFAULT 0;
270 nti_AnnRfiCon BALANCE DEFAULT 0;
271 nti_AnnPenFndMax BALANCE DEFAULT 0;
272 nti_AnnPenFndAbm BALANCE DEFAULT 0;
273 nti_PerArrPenFnd BALANCE DEFAULT 0;
274 nti_PerArrPenFndAbm BALANCE DEFAULT 0;
275 nti_PerRetAnu BALANCE DEFAULT 0;
276 nti_PerNrfiCon BALANCE DEFAULT 0;
277 nti_PerRetAnuMax BALANCE DEFAULT 0;
278 nti_PerRetAnuAbm BALANCE DEFAULT 0;
279 nti_PerArrRetAnu BALANCE DEFAULT 0;
280 nti_PerArrRetAnuAbm BALANCE DEFAULT 0;
281 nti_AnnArrPenFnd BALANCE DEFAULT 0;
282 nti_AnnArrPenFndAbm BALANCE DEFAULT 0;
283 nti_AnnRetAnu BALANCE DEFAULT 0;
284 nti_AnnNrfiCon BALANCE DEFAULT 0;
285 nti_AnnRetAnuMax BALANCE DEFAULT 0;
286 nti_AnnRetAnuAbm BALANCE DEFAULT 0;
287 nti_AnnArrRetAnu BALANCE DEFAULT 0;
288 nti_AnnArrRetAnuAbm BALANCE DEFAULT 0;
289 nti_PerMedAidAbm BALANCE DEFAULT 0;
290 nti_AnnMedAidAbm BALANCE DEFAULT 0;
291 nti_PerTotAbm BALANCE DEFAULT 0;
292 nti_AnnTotAbm BALANCE DEFAULT 0;
293 nti_TxbPerTypInc BALANCE DEFAULT 0;
294 nti_TxbAnnTypInc BALANCE DEFAULT 0;
295 nti_NetPerTxbInc BALANCE DEFAULT 0;
296 nti_NetAnnTxbInc BALANCE DEFAULT 0;
297 l_65Year DATE;
298 -- Income Protection Policy
299 nti_PerIncProPolAbm BALANCE DEFAULT 0;
300 nti_AnnIncProPolAbm BALANCE DEFAULT 0;
301 --TYS2010
302 nti_PerDonAmt BALANCE DEFAULT 0;
303 nti_AnnDonAmt BALANCE DEFAULT 0;
304 nti_TxbPerTypIncWoDon BALANCE DEFAULT 0;
305 nti_TxbAnnTypIncWoDon BALANCE DEFAULT 0;
306 --NTG
307 nti_AnnTypNTGErn BALANCE DEFAULT 0;
308 nti_NetAnnTxbNTGInc BALANCE DEFAULT 0;
309 nti_AnnRfiEEDbtNTGCon BALANCE DEFAULT 0;
310 nti_AnnNrfiEEDbtNTGCon BALANCE DEFAULT 0;
311 nti_AnnPenFndNTGMax BALANCE DEFAULT 0;
312 nti_AnnPenFndNTGAbm BALANCE DEFAULT 0;
313 nti_AnnRetAnuNTGMax BALANCE DEFAULT 0;
314 nti_AnnRetAnuNTGAbm BALANCE DEFAULT 0;
315 nti_AnnTotNTGAbm BALANCE DEFAULT 0;
316 nti_TxbAnnTypNTGIncWoDon BALANCE DEFAULT 0;
317 nti_TxbAnnTypNTGInc BALANCE DEFAULT 0;
318
319 --Bug 9369895
320 nti_TotTxbIncPkgYtd BALANCE DEFAULT 0;
321 nti_TotTxbIncEEDbtPkgYtd BALANCE DEFAULT 0;
322 nti_TotTxbNIYtd BALANCE DEFAULT 0;
323 nti_TotTxbFBYtd BALANCE DEFAULT 0;
324 nti_TotTxbTAYtd BALANCE DEFAULT 0;
325 nti_TotTxbPOYtd BALANCE DEFAULT 0;
326
327 /*
328 -- Total Non Taxable Travel Allowance
329 trc_TOT_NON_TXB_TA_CMTD BALANCE DEFAULT 0;
330 -- Total Non Taxable Public Office
331 trc_TOT_NON_TXB_PO_CMTD BALANCE DEFAULT 0;
332 */
333
334 -- Bug 14376752
335 l_SKL_INC_LMP_TAX_MTD BALANCE DEFAULT 0;
336 l_SKL_ANN_INC_LMP_TAX_MTD BALANCE DEFAULT 0;
337 nti_PerLSTypIncTot BALANCE DEFAULT 0;
338 nti_AnnLSTypIncTot BALANCE DEFAULT 0;
339 nti_LSTxbPerTypIncWoDon BALANCE DEFAULT 0;
340 nti_LSTxbPerTypInc BALANCE DEFAULT 0;
341 nti_LSNetPerTxbInc BALANCE DEFAULT 0;
342 nti_LSNetPerTxbErnTot BALANCE DEFAULT 0;
343 nti_LSTxbAnnTypIncWoDon BALANCE DEFAULT 0;
344 nti_LSTxbAnnTypInc BALANCE DEFAULT 0;
345 nti_LSNetAnnTxbInc BALANCE DEFAULT 0;
346 nti_LSTxbPerTypIncTot BALANCE DEFAULT 0;
347 nti_LSNetPerTxbIncTot BALANCE DEFAULT 0;
348 nti_LSNetAnnTxbIncTot BALANCE DEFAULT 0;
349 nti_LSNetPerTypErnTot BALANCE DEFAULT 0;
350 nti_LSNetAnnTypErnTot BALANCE DEFAULT 0;
351
352 LSNtiUpdFig BALANCE DEFAULT 0;
353 m NUMBER := 1;
354 ls_num varchar2(100);
355 -- Bug 14376752
356 -- cursor to fetch all Lumpsums with a Tax Directive Number in the month
357 cursor csr_get_tax_dir_info(p_assignment_id number)
358 is
359 select distinct dirnum from (
360 SELECT process.result_value dirnum
361 FROM pay_assignment_actions paa
362 , pay_payroll_actions ppa
363 , per_time_periods ptp
364 , per_time_periods ptp_all
365 , pay_assignment_actions paa_all
366 , pay_payroll_actions ppa_all
367 , pay_run_results prr_ls
368 , pay_run_result_values target
369 , pay_balance_feeds_f feed
370 , pay_run_result_values process
371 , pay_input_values_f process_iv
372 , pay_input_values_f piv
373 WHERE paa.assignment_action_id = p_assignment_id
374 AND ppa.payroll_action_id = paa.payroll_action_id
375 AND ptp.time_period_id = ppa.time_period_id
376 AND ptp_all.prd_information1 = ptp.prd_information1
377 AND ppa_all.time_period_id = ptp_all.time_period_id
378 AND paa_all.payroll_action_id = ppa_all.payroll_action_id
379 AND paa_all.assignment_id = paa.assignment_id
380 AND paa_all.action_sequence <= paa.action_sequence
381 AND prr_ls.assignment_action_id = paa_all.assignment_action_id
382 AND prr_ls.status IN ('P', 'PA')
383 AND target.run_result_id = prr_ls.run_result_id
384 AND feed.input_value_id = target.input_value_id
385 AND ppa_all.effective_date
386 BETWEEN feed.effective_start_date
387 AND feed.effective_end_date
388 AND process.run_result_id = prr_ls.run_result_id
389 AND process.input_value_id = process_iv.input_value_id
390 AND process_iv.name = 'Tax Directive Number'
391 AND ppa_all.effective_date BETWEEN process_iv.effective_start_date AND process_iv.effective_end_date
392 AND piv.input_value_id = target.input_value_id
393 AND ptp.pay_advice_date = ptp_all.pay_advice_date
394 AND nvl(process.result_value,'To Be Advised') <> 'To Be Advised'
395 ORDER BY paa_all.action_sequence , process.result_value);
396
397 -- Bug 14376752
398
399
400 BEGIN
401
402 trc_LScount := 0;
403
404 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',1);
405
406 -- Bug 14376752
407 -- to delete from both table
408 trc_LSDirMTDTab.delete;
409 trc_LSNetTxbIncTab.delete;
410 trc_LSSklDirNumTab.delete;
411 -- Calculate the Current Effective Calendar Month to Date Start Date
412 --
413 SELECT trunc(dbi_SES_DTE,'Month')
414 INTO nti_CurMthStrtDte
415 FROM dual;
416 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',2);
417
418 -- Calculate the Current Effective Calendar Month to Date End Date
419 --
420 SELECT last_day(dbi_SES_DTE)
421 INTO nti_CurMthEndDte
422 FROM dual;
423 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',3);
424
425 -- Calculate Site Factor
426 --
427 -- Based on the number of days in the calendar year over days in the calendar month
428 nti_SitFactor := dbi_ZA_DYS_IN_YR / (nti_CurMthEndDte - nti_CurMthStrtDte + 1);
429
430 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',4);
431
432 WrtHrTrc('nti_CurMthEndDte: '||to_char(nti_CurMthEndDte,'DD/MM/YYYY'));
433 WrtHrTrc('nti_CurMthStrtDte: '||to_char(nti_CurMthStrtDte,'DD/MM/YYYY'));
434
435 -- Calculate the Taxable Portion of the Not-Fully Taxable Income Balances
436 /* commented to revert the changes
437 -- For bug 6640212
438 trc_TOT_NON_TXB_TA_CMTD := bal_TOT_TXB_TA_CMTD * ( 100 - glb_ZA_TRV_ALL_TX_PRC ) / 100;
439
440 trc_TOT_NON_TXB_PO_CMTD := bal_TOT_TXB_PO_CMTD * ( 100 - glb_ZA_PBL_TX_PRC ) / 100;
441
442 WrtHrTrc('trc_TOT_NON_TXB_TA_CMTD: '||trc_TOT_NON_TXB_TA_CMTD);
443 WrtHrTrc('trc_TOT_NON_TXB_PO_CMTD: '||trc_TOT_NON_TXB_PO_CMTD);
444
445 nti_PerTypInc := bal_TOT_SKL_INC_CMTD - trc_TOT_NON_TXB_TA_CMTD - trc_TOT_NON_TXB_PO_CMTD;
446
447 */
448
449 -- Fix for bug#10372926.
450 --bal_TOT_TXB_TA_CMTD := bal_TOT_TXB_TA_CMTD * glb_ZA_TRV_ALL_TX_PRC / 100;
451
452 bal_TOT_TXB_PO_CMTD := bal_TOT_TXB_PO_CMTD * glb_ZA_PBL_TX_PRC / 100;
453
454 -- Sum Period Type Income Calendar Month to Date Balances
455 --
456
457 -- Bug 14376752
458
459 -- Get the directive numbers in this calendar month
460 -- store the Skills Levyable Periodic Income and
461 -- the Skills Levyable Annual Income in a table
462
463 FOR LSDirMTD in csr_get_tax_dir_info(ASSIGNMENT_ACTION_ID)
464 LOOP
465 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',40);
466 hr_utility.set_location('Processing Directive Number: '|| LSDirMTD.dirnum,40);
467
468 pay_balance_pkg.set_context('SOURCE_TEXT',LSDirMTD.dirnum);
469
470 l_SKL_INC_LMP_TAX_MTD := nvl(pay_balance_pkg.get_value(get_def_bal_id('Total Skills Levyable Income','_ASG_LMPSM_TAX_MTD'),ASSIGNMENT_ACTION_ID),0);
471 hr_utility.set_location('l_SKL_INC_LMP_TAX_MTD: '|| l_SKL_INC_LMP_TAX_MTD,40);
472 IF l_SKL_INC_LMP_TAX_MTD = 0 THEN
473 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',41);
474 l_SKL_ANN_INC_LMP_TAX_MTD := nvl(pay_balance_pkg.get_value(get_def_bal_id('Total Skills Levyable Annual Income','_ASG_LMPSM_TAX_MTD'),ASSIGNMENT_ACTION_ID),0);
475 trc_LSDirMTDTab(LSDirMTD.dirnum).inc_typ := 'A';
476 trc_LSDirMTDTab(LSDirMTD.dirnum).dir_value := l_SKL_ANN_INC_LMP_TAX_MTD;
477
478 nti_AnnLSTypIncTot := nti_AnnLSTypIncTot + l_SKL_ANN_INC_LMP_TAX_MTD;
479
480 hr_utility.set_location('l_SKL_ANN_INC_LMP_TAX_MTD: '|| l_SKL_ANN_INC_LMP_TAX_MTD,40);
481 ELSE
482 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',42);
483 trc_LSDirMTDTab(LSDirMTD.dirnum).inc_typ := 'P';
484 trc_LSDirMTDTab(LSDirMTD.dirnum).dir_value := l_SKL_INC_LMP_TAX_MTD;
485
486 nti_PerLSTypIncTot := nti_PerLSTypIncTot + l_SKL_INC_LMP_TAX_MTD;
487 END IF;
488
489 END LOOP;
490 hr_utility.set_location('nti_AnnLSTypIncTot: '|| nti_AnnLSTypIncTot,40);
491 hr_utility.set_location('nti_PerLSTypIncTot: '|| nti_PerLSTypIncTot,40);
492
493 -- Bug 14376752
494
495 nti_PerTypInc := bal_TOT_SKL_INC_CMTD - nti_PerLSTypIncTot;
496 -- Annualise by the Site Factor the Period Type Income
497 --
498 nti_PerTypErn := nti_PerTypInc * nti_SitFactor;
499 -- Sum Annual Type Income Calendar Month to Date Balances
500 --
501 nti_AnnTypErn := nti_PerTypErn + bal_TOT_SKL_ANN_INC_CMTD - nti_AnnLSTypIncTot;
502
503 -- NTG
504 -- Sum Annual Type NTG Calendar Month to Date Balances
505 nti_AnnTypNTGErn := nti_AnnTypErn + bal_TOT_SKL_ANN_INC_NTG_CMTD;
506 -----------------------------
507 -- Calculate Abatement Values
508 -----------------------------
509 -- Calculate the assignments 65 Year Date
510 l_65Year := add_months(py_za_tx_01032012.dbi_PER_DTE_OF_BRTH,780);
511
512 -------------------------
513 -- Pension Fund Abatement
514 -------------------------
515 ---------------------
516 -- Period Calculation
517 ---------------------
518 -- Annualise Period Pension Fund Contribution
519 nti_PerPenFnd := bal_CUR_PF_CMTD * nti_SitFactor;
520 -- Annualise Period Rfiable Contributions
521 nti_PerRfiCon := bal_TOT_RFI_INC_CMTD * nti_SitFactor;
522 ---------------------
523 -- Annual Calculation
524 ---------------------
525 -- Annual Pension Fund Contribution
526 nti_AnnPenFnd := nti_PerPenFnd + bal_ANN_PF_CMTD;
527 -- Annual Rfi Contribution
528 nti_AnnRfiCon := nti_PerRfiCon + bal_TOT_RFI_AN_INC_CMTD;
529
530 -----------------------------
531 -- NTG Annual RFI Calculation
532 ------------------------------
533 -- Annual NTG Rfi Contribution
534 nti_AnnRfiEEDbtNTGCon := nti_AnnRfiCon + bal_TOT_RFI_EE_DBT_NTG_CMTD;
535
536 --------------------------------
537 -- Arrear Pension Fund Abatement
538 --------------------------------
539 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',19);
540 -------------
541 -- Excess ITD
542 -------------
543 nti_PerArrPenFnd := bal_EXC_ARR_PEN_ITD;
544 ------------------------------------
545 -- Current/Annual based on frequency
546 ------------------------------------
547 nti_PerArrPenFnd :=
548 nti_PerArrPenFnd + ( bal_ARR_PF_CMTD * nti_SitFactor);
549 ---------
550 -- Annual
551 ---------
552 nti_AnnArrPenFnd := nti_PerArrPenFnd + bal_ANN_ARR_PF_CMTD;
553
554 -------------------------------
555 -- Retirement Annuity Abatement
556 -------------------------------
557 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',20);
558 -------------
559 -- Current RA
560 -------------
561 -- Calculate RA Contribution
562 nti_PerRetAnu := bal_CUR_RA_CMTD * nti_SitFactor;
563 ---------------------
564 -- Current NRFI Contr
565 ---------------------
566 IF bal_CUR_PF_CMTD + bal_ANN_PF_CMTD = 0 THEN
567 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',21);
568 nti_PerNrfiCon := (
569 bal_TOT_RFI_INC_CMTD + bal_TOT_NRFI_INC_CMTD
570 )
571 * nti_SitFactor;
572 ELSE
573 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',22);
574 nti_PerNrfiCon := bal_TOT_NRFI_INC_CMTD * nti_SitFactor;
575 END IF;
576 ------------
577 -- Annual RA
578 ------------
579 nti_AnnRetAnu := nti_PerRetAnu + bal_ANN_RA_CMTD;
580
581 IF bal_CUR_PF_CMTD + bal_ANN_PF_CMTD = 0 THEN
582 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',23);
583
584 nti_AnnNrfiCon := nti_PerNrfiCon
585 + bal_TOT_NRFI_AN_INC_CMTD
586 + bal_TOT_RFI_AN_INC_CMTD;
587 ELSE
588 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',24);
589 nti_AnnNrfiCon := nti_PerNrfiCon + bal_TOT_NRFI_AN_INC_CMTD;
590 END IF;
591
592 ------------------------------
593 --Annual NRFI NTG Contribution
594 ------------------------------
595 IF bal_CUR_PF_CMTD + bal_ANN_PF_CMTD = 0 THEN
596 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',23);
597
598 nti_AnnNrfiEEDbtNTGCon := nti_AnnNrfiCon
599 + bal_TOT_NRFI_EE_DBT_NTG_CMTD
600 + bal_TOT_RFI_EE_DBT_NTG_CMTD;
601 ELSE
602 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',24);
603 nti_AnnNrfiEEDbtNTGCon := nti_AnnNrfiCon + bal_TOT_NRFI_EE_DBT_NTG_CMTD;
604 END IF;
605
606 --------------------------------------
607 -- Arrear Retirement Annuity Abatement
608 --------------------------------------
609 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',25);
610 -------------
611 -- Excess ITD
612 -------------
613 nti_PerArrRetAnu := bal_EXC_ARR_RA_ITD;
614 ------------------------------------
615 -- Current/Annual based on frequency
616 ------------------------------------
617 nti_PerArrRetAnu := nti_PerArrRetAnu
618 + ( bal_ARR_RA_CMTD
619 * nti_SitFactor
620 );
621 ---------
622 -- Annual
623 ---------
624 nti_AnnArrRetAnu := nti_PerArrRetAnu
625 + nti_AnnArrRetAnu
626 + bal_ANN_ARR_RA_CMTD;
627
628 ------------------------
629 -- Medical Aid Abatement
630 ------------------------
631 -- If the person is not yet 65 this tax year
632 -- IF l_65Year > dbi_ZA_ASG_TX_YR_END THEN
633 IF l_65Year > dbi_ZA_TX_YR_END THEN
634
635 ----------
636 -- Current
637 ----------
638 nti_PerMedAidAbm :=
639 bal_MED_CNTRB_ABM_CMTD
640 * nti_SitFactor;
641 ---------
642 -- Annual
643 ---------
644 nti_AnnMedAidAbm :=
645 nti_PerMedAidAbm
646 + bal_ANN_MED_CNTRB_ABM_CMTD;
647 ELSE
648 -- if the person is over 65
649 ----------
650 -- Current
651 ----------
652 nti_PerMedAidAbm :=
653 -- Medical Aid Employer Contribution Changes
654 -- bal_MED_CONTR_CMTD
655 (bal_MED_CONTR_CMTD + bal_ER_MED_CONTR_CMTD)
656 * nti_SitFactor;
657 ---------
658 -- Annual
659 ---------
660 nti_AnnMedAidAbm := nti_PerMedAidAbm;
661 END IF;
662
663 ---------------------------
664 -- Income Protection Policy
665 ---------------------------
666 ---------------------
667 -- Period Calculation
668 ---------------------
669 -- Annualise Income Protection Policy Contributions
670 nti_PerIncProPolAbm := bal_EE_INC_PRO_POL_CMTD * nti_SitFactor;
671
672 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',26);
673
674 ---------------------
675 -- Annual Calculation
676 ---------------------
677 -- Annual Income Protection Policy Contributions
678 nti_AnnIncProPolAbm :=
679 nti_PerIncProPolAbm
680 + bal_ANN_EE_INC_PRO_POL_CMTD;
681
682 --TYE 2010
683 ---------------------------
684 -- Donation made by EE pd by ER
685 ---------------------------
686 ---------------------
687 -- Period Calculation
688 ---------------------
689 -- Annualise Donation Amount
690 nti_PerDonAmt := bal_DONAT_MD_EE_CMTD * nti_SitFactor;
691
692 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',27);
693
694 ---------------------
695 -- Annual Calculation
696 ---------------------
697 -- Annual Donation
698 nti_AnnDonAmt := nti_PerDonAmt + bal_ANN_DONAT_MD_EE_CMTD;
699
700 --Bug 9369895
701 if trc_PenBasis = 1 then --Fixed Percentage of Total Package
702 nti_TotTxbNIYtd := bal_TOT_TXB_NI_CMTD * nti_SitFactor;
703
704 nti_TotTxbFBYtd := bal_TOT_TXB_FB_CMTD * nti_SitFactor;
705
706 nti_TotTxbTAYtd := bal_TOT_TXB_TA_CMTD * nti_SitFactor;
707
708 nti_TotTxbPOYtd := bal_TOT_TXB_PO_CMTD * nti_SitFactor;
709
710 nti_TotTxbIncPkgYtd := ( nti_TotTxbNIYtd + nti_TotTxbFBYtd
711 + nti_TotTxbTAYtd + nti_TotTxbPOYtd
712 + bal_TOT_TXB_AB_CMTD
713 + bal_TOT_TXB_AP_CMTD
714 + bal_TOT_TXB_AP_NTG_CMTD );
715
716 nti_TotTxbIncEEDbtPkgYtd := ( nti_TotTxbIncPkgYtd
717 + bal_TOT_TXB_EE_DBT_NTG_CMTD );
718
719 end if;
720
721 ----------------------------------------------------------------------------
722 -- CALCULATE THE ABATEMENTS --
723 ----------------------------------------------------------------------------
724 -------------------------
725 -- Pension Fund Abatement
726 -------------------------
727
728 if trc_PenBasis = 2 then --Percentage of Specific Income
729 ---------------------
730 -- Period Calculation
731 ---------------------
732 -- Calculate the Pension Fund Maximum
733 nti_PerPenFndMax := GREATEST( glb_ZA_PF_AN_MX_ABT
734 , glb_ZA_PF_MX_PRC / 100 * nti_PerRfiCon
735 );
736 -- Calculate Period Pension Fund Abatement
737 nti_PerPenFndAbm := LEAST(nti_PerPenFnd, nti_PerPenFndMax);
738 ---------------------
739 -- Annual Calculation
740 ---------------------
741 -- Calculate the Pension Fund Maximum
742 nti_AnnPenFndMax := GREATEST( glb_ZA_PF_AN_MX_ABT
743 , glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiCon
744 );
745
746 -- Calculate Annual Pension Fund Abatement
747 nti_AnnPenFndAbm := LEAST(nti_AnnPenFnd, nti_AnnPenFndMax);
748 ----------------------------------------------
749 -- Annual NTG EE Debt Pension Fund Calculation
750 -----------------------------------------------
751 -- Calculate the Pension Fund Maximum for Net to Gross Pymt of EE Debt
752 nti_AnnPenFndNTGMax := GREATEST( glb_ZA_PF_AN_MX_ABT
753 , glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiEEDbtNTGCon
754 );
755
756 -- Calculate Annual Pension Fund Abatement for Net to Gross Pymt of EE Debt
757 nti_AnnPenFndNTGAbm := LEAST(nti_AnnPenFnd, nti_AnnPenFndNTGMax);
758
759 else
760 ---------------------
761 -- Annual Calculation
762 ---------------------
763 -- Calculate Annual Pension Fund Abatement
764 nti_AnnPenFndAbm := LEAST( nti_AnnPenFnd, glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiCon
765 , glb_ZA_PF_MX_PRC / 100 * nti_TotTxbIncPkgYtd);
766
767 ---------------------
768 -- Periodic Calculation
769 ---------------------
770 nti_PerPenFndAbm := nti_AnnPenFndAbm;
771 ----------------------------------------------
772 -- Annual NTG EE Debt Pension Fund Calculation
773 -----------------------------------------------
774 -- Calculate the Pension Fund Maximum for Net to Gross Pymt of EE Debt
775 nti_AnnPenFndNTGMax := GREATEST( glb_ZA_PF_AN_MX_ABT
776 , glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiEEDbtNTGCon
777 );
778
779 -- Calculate Annual Pension Fund Abatement for Net to Gross Pymt of EE Debt
780 nti_AnnPenFndNTGAbm := LEAST( nti_AnnPenFnd, glb_ZA_PF_MX_PRC / 100 * nti_AnnRfiEEDbtNTGCon
781 ,glb_ZA_PF_MX_PRC / 100 * nti_TotTxbIncEEDbtPkgYtd );
782
783 end if;
784
785 --------------------------------
786 -- Arrear Pension Fund Abatement
787 --------------------------------
788 ---------------------
789 -- Period Calculation
790 ---------------------
791 nti_PerArrPenFndAbm := LEAST(nti_PerArrPenFnd, glb_ZA_ARR_PF_AN_MX_ABT);
792 ---------------------
793 -- Annual Calculation
794 ---------------------
795 nti_AnnArrPenFndAbm := LEAST(nti_AnnArrPenFnd, glb_ZA_ARR_PF_AN_MX_ABT);
796 ---------------------------------
797 -- Retirement Annnnuity Abatement
798 ---------------------------------
799 ---------------------
800 -- Period Calculation
801 ---------------------
802 -- Calculate the Retirement Annuity Maximum
803 nti_PerRetAnuMax := GREATEST( glb_ZA_PF_AN_MX_ABT
804 , glb_ZA_RA_AN_MX_ABT - nti_PerPenFndAbm
805 , glb_ZA_RA_MX_PRC / 100 * nti_PerNrfiCon
806 );
807
808 -- Calculate Retirement Annuity Abatement
809 nti_PerRetAnuAbm := LEAST(nti_PerRetAnu, nti_PerRetAnuMax);
810 ---------------------
811 -- Annual Calculation
812 ---------------------
813 nti_AnnRetAnuMax := GREATEST( glb_ZA_PF_AN_MX_ABT
814 , glb_ZA_RA_AN_MX_ABT - nti_AnnPenFndAbm
815 , glb_ZA_RA_MX_PRC / 100 * nti_AnnNrfiCon
816 );
817
818 -- Calculate Retirement Annuity Abatement
819 nti_AnnRetAnuAbm := LEAST(nti_AnnRetAnu, nti_AnnRetAnuMax);
820
821 -----------------------------------------------------
822 -- Annual NTG EE Debt Retirement Annuity Calculation
823 -----------------------------------------------------
824 -- Calculate the Retirement Annuity Maximum for Net to Gross Pymt of EE Debt
825 nti_AnnRetAnuNTGMax := GREATEST( glb_ZA_PF_AN_MX_ABT
826 , glb_ZA_RA_AN_MX_ABT - nti_AnnPenFndAbm
827 , glb_ZA_RA_MX_PRC / 100 * nti_AnnNrfiEEDbtNTGCon
828 );
829
830 -- Calculate the Retirement Annuity Abatement for Net to Gross Pymt of EE Debt
831 nti_AnnRetAnuNTGAbm := LEAST(nti_AnnRetAnu, nti_AnnRetAnuNTGMax);
832
833
834 --------------------------------------
835 -- Arrear Retirement Annuity Abatement
836 --------------------------------------
837 ---------------------
838 -- Period Calculation
839 ---------------------
840 nti_PerArrRetAnuAbm := LEAST(nti_PerArrRetAnu, glb_ZA_ARR_RA_AN_MX_ABT);
841 ---------------------
842 -- Annual Calculation
843 ---------------------
844 nti_AnnArrRetAnuAbm := LEAST(nti_AnnArrRetAnu, glb_ZA_ARR_RA_AN_MX_ABT);
845
846 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',27);
847
848 -------------------
849 -- Total Abatements
850 -------------------
851 -- Period Total Abatement
852 nti_PerTotAbm := ( nti_PerPenFndAbm
853 + nti_PerArrPenFndAbm
854 + nti_PerRetAnuAbm
855 + nti_PerArrRetAnuAbm
856 + nti_PerMedAidAbm
857 + nti_PerIncProPolAbm
858 );
859 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',28);
860 -- Annual Total Abatements
861 nti_AnnTotAbm := ( nti_AnnPenFndAbm
862 + nti_AnnArrPenFndAbm
863 + nti_AnnRetAnuAbm
864 + nti_AnnArrRetAnuAbm
865 + nti_AnnMedAidAbm
866 + nti_AnnIncProPolAbm
867 );
868 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',29);
869 -- Annual NTG Total Abatements
870 nti_AnnTotNTGAbm := ( nti_AnnPenFndNTGAbm
871 + nti_AnnArrPenFndAbm
872 + nti_AnnRetAnuNTGAbm
873 + nti_AnnArrRetAnuAbm
874 + nti_AnnMedAidAbm
875 + nti_AnnIncProPolAbm
876 );
877
878
879 -- Calculate New O Figures
880 --
881 --TYS2010
882 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
883 nti_TxbPerTypIncWoDon := nti_PerTypErn - nti_PerTotAbm;
884 nti_TxbPerTypInc := nti_TxbPerTypIncWoDon - least(glb_ZA_ALLOW_DONATION_PERC*nti_TxbPerTypIncWoDon/100,nti_PerDonAmt);
885
886 nti_TxbAnnTypIncWoDon := nti_AnnTypErn - nti_AnnTotAbm;
887 nti_TxbAnnTypInc := nti_TxbAnnTypIncWoDon - least(glb_ZA_ALLOW_DONATION_PERC*nti_TxbAnnTypIncWoDon/100,nti_AnnDonAmt);
888
889 --NTG
890 nti_TxbAnnTypNTGIncWoDon := nti_AnnTypNTGErn - nti_AnnTotNTGAbm;
891 nti_TxbAnnTypNTGInc := nti_TxbAnnTypNTGIncWoDon - least(glb_ZA_ALLOW_DONATION_PERC*nti_TxbAnnTypNTGIncWoDon/100,nti_AnnDonAmt);
892
893
894 -- Deannualise Period O Figure
895 --
896 nti_NetPerTxbInc := nti_TxbPerTypInc / nti_SitFactor;
897 -- Calculate the Net Taxable Annual Type Income
898 --
899 nti_NetAnnTxbInc := nti_TxbAnnTypInc - nti_TxbPerTypInc;
900 -- Calculate the Net Taxable Annual Type NTG Income
901 --
902 if bal_TOT_SKL_ANN_INC_NTG_CMTD <> 0 then
903 nti_NetAnnTxbNTGInc := nti_TxbAnnTypNTGInc - (nti_NetAnnTxbInc + nti_TxbPerTypInc);
904 else
905 nti_NetAnnTxbNTGInc := 0;
906 end if;
907
908 -- Calculate the Net Taxable Type Income for each Lumpsum
909 -- Bug 14376752
910 nti_LSNetPerTypErnTot := nti_PerTypErn ;
911 nti_LSNetPerTxbIncTot := nti_NetPerTxbInc;
912 nti_LSTxbPerTypIncTot := nti_TxbPerTypInc;
913 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',37);
914 IF trc_LSDirMTDTab.COUNT > 0 THEN
915 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',38);
916 hr_utility.set_location('COUNT: '|| trc_LSDirMTDTab.COUNT,38);
917
918 ls_num := trc_LSDirMTDTab.first;
919 while(ls_num is not null)
920 loop
921 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',39);
922 IF trc_LSDirMTDTab(ls_num).inc_typ = 'P' THEN
923 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',40);
924 nti_LSTxbPerTypIncWoDon := (trc_LSDirMTDTab(ls_num).dir_value * nti_SitFactor) + nti_LSNetPerTypErnTot - nti_PerTotAbm;
925 nti_LSTxbPerTypInc := nti_LSTxbPerTypIncWoDon - least(glb_ZA_ALLOW_DONATION_PERC*nti_LSTxbPerTypIncWoDon/100,nti_PerDonAmt);
926 nti_LSNetPerTxbInc := (nti_LSTxbPerTypInc/nti_SitFactor) - nti_LSNetPerTxbIncTot;
927
928 trc_LSNetTxbIncTab(ls_num).LSTxbIncMTD := nti_LSNetPerTxbInc;
929 pay_balance_pkg.set_context('SOURCE_TEXT', ls_num);
930 LSNtiUpdFig := nvl(pay_balance_pkg.get_value(get_def_bal_id('Net Taxable Income LS','_ASG_LMPSM_TAX_MTD'),ASSIGNMENT_ACTION_ID),0);
931 hr_utility.set_location('ls_num '|| ls_num,38);
932 hr_utility.set_location('Net Taxable Income LS '|| LSNtiUpdFig,38);
933
934 trc_LSNetTxbIncTab(ls_num).LSNtiUpdFig := nti_LSNetPerTxbInc - LSNtiUpdFig;
935
936 hr_utility.set_location('Net Taxable Income LS UPD '|| trc_LSNetTxbIncTab(ls_num).LSNtiUpdFig,38);
937
938 LSNtiUpdFig := nvl(pay_balance_pkg.get_value(get_def_bal_id('Skills Levy LS','_ASG_LMPSM_TAX_MTD'),ASSIGNMENT_ACTION_ID),0);
939 hr_utility.set_location('ls_num '|| ls_num,38);
940 hr_utility.set_location('Skills Levy '|| LSNtiUpdFig,38);
941 trc_LSNetTxbIncTab(ls_num).LSSkl := LSNtiUpdFig;
942 hr_utility.set_location('Skills Levy LS '|| trc_LSNetTxbIncTab(ls_num).LSSkl,38);
943
944
945 nti_LSNetPerTypErnTot := nti_LSNetPerTypErnTot + (trc_LSDirMTDTab(ls_num).dir_value * nti_SitFactor);
946 nti_LSNetPerTxbIncTot := nti_LSNetPerTxbIncTot + nti_LSNetPerTxbInc;
947
948 nti_LSTxbPerTypIncTot := nti_LSTxbPerTypInc;
949
950 hr_utility.set_location('nti_LSNetPerTxbInc: '|| nti_LSNetPerTxbInc,40);
951 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',41);
952 END IF;
953 if ls_num <> trc_LSDirMTDTab.last then
954 ls_num := trc_LSDirMTDTab.next(ls_num);
955 else
956 ls_num := null;
957 end if;
958 end loop;
959
960 hr_utility.set_location('nti_LSNetPerTypErnTot: '|| nti_LSNetPerTypErnTot,42);
961 hr_utility.set_location('nti_LSNetPerTxbIncTot: '|| nti_LSNetPerTxbIncTot,43);
962 hr_utility.set_location('nti_LSTxbPerTypIncTot: '|| nti_LSTxbPerTypIncTot,44);
963
964 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',45);
965 nti_LSNetAnnTypErnTot := nti_AnnTypErn + (nti_PerLSTypIncTot * nti_SitFactor) ;
966 nti_LSNetAnnTxbIncTot := nti_NetAnnTxbInc + nti_LSTxbPerTypIncTot;
967
968 ls_num := trc_LSDirMTDTab.first;
969 while( ls_num is not null)
970 loop
971 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',46);
972 IF trc_LSDirMTDTab(ls_num).inc_typ = 'A' THEN
973 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',47);
974 nti_LSTxbAnnTypIncWoDon := trc_LSDirMTDTab(ls_num).dir_value + nti_LSNetAnnTypErnTot - nti_AnnTotAbm;
975 nti_LSTxbAnnTypInc := nti_LSTxbAnnTypIncWoDon - least(glb_ZA_ALLOW_DONATION_PERC*nti_LSTxbAnnTypIncWoDon/100,nti_AnnDonAmt);
976 nti_LSNetAnnTxbInc := nti_LSTxbAnnTypInc - nti_LSNetAnnTxbIncTot;
977
978 trc_LSNetTxbIncTab(ls_num).LSTxbIncMTD := nti_LSNetAnnTxbInc;
979 pay_balance_pkg.set_context('SOURCE_TEXT', ls_num);
980 LSNtiUpdFig := nvl(pay_balance_pkg.get_value(get_def_bal_id('Net Taxable Income LS','_ASG_LMPSM_TAX_MTD'),ASSIGNMENT_ACTION_ID),0);
981 hr_utility.set_location('ls_num '|| ls_num,47);
982 hr_utility.set_location('Net Taxable Income LS '|| LSNtiUpdFig,47);
983
984 trc_LSNetTxbIncTab(ls_num).LSNtiUpdFig := nti_LSNetAnnTxbInc - LSNtiUpdFig;
985 hr_utility.set_location('Net Taxable Income LS UPD '|| trc_LSNetTxbIncTab(ls_num).LSNtiUpdFig,47);
986
987 LSNtiUpdFig := nvl(pay_balance_pkg.get_value(get_def_bal_id('Skills Levy LS','_ASG_LMPSM_TAX_MTD'),ASSIGNMENT_ACTION_ID),0);
988 hr_utility.set_location('ls_num '|| ls_num,47);
989 hr_utility.set_location('Skills Levy '|| LSNtiUpdFig,47);
990 trc_LSNetTxbIncTab(ls_num).LSSkl := LSNtiUpdFig;
991 hr_utility.set_location('Skills Levy LS '|| trc_LSNetTxbIncTab(ls_num).LSSkl,47);
992
993 nti_LSNetAnnTypErnTot := nti_LSNetAnnTypErnTot + trc_LSDirMTDTab(ls_num).dir_value;
994 nti_LSNetAnnTxbIncTot := nti_LSNetAnnTxbIncTot + nti_LSNetAnnTxbInc;
995
996 hr_utility.set_location('nti_LSNetAnnTxbInc: '|| nti_LSNetAnnTxbInc,48);
997 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',48);
998 END IF;
999 if ls_num <> trc_LSDirMTDTab.last then
1000 ls_num := trc_LSDirMTDTab.next(ls_num);
1001 else
1002 ls_num := null;
1003 end if;
1004 end loop;
1005
1006 hr_utility.set_location('nti_LSNetAnnTypErnTot: '|| nti_LSNetAnnTypErnTot,49);
1007 hr_utility.set_location('nti_LSNetAnnTxbIncTot: '|| nti_LSNetAnnTxbIncTot,49);
1008
1009 END IF;
1010 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',50);
1011
1012 -- Loop to store 'To Be Advised' as default in a table
1013
1014 FOR k in 1 .. 30
1015 LOOP
1016 trc_LSSklDirNumTab(k):= 'To Be Advised';
1017 END LOOP;
1018 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',55);
1019 trc_LScount := trc_LSDirMTDTab.count;
1020 hr_utility.set_location('trc_LScount ' || trc_LScount,55);
1021
1022 -- Loop to store the Tax Directive Number in the table wherver it exits.
1023 FOR j in 1 .. trc_LScount
1024 LOOP
1025 hr_utility.set_location('j: ' || j,56);
1026 if j=1 then
1027 trc_LSSklDirNumTab(m) := trc_LSDirMTDTab.first;
1028 hr_utility.set_location('Value:' || trc_LSSklDirNumTab(m) ,57);
1029 else
1030 trc_LSSklDirNumTab(m) := trc_LSDirMTDTab.Next(trc_LSSklDirNumTab(m-1));
1031 hr_utility.set_location('Value:' || trc_LSSklDirNumTab(m) ,58);
1032 end if;
1033 m := m+1;
1034 END LOOP;
1035 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',59);
1036 -- Bug 14376752
1037 -- Calculate New Net Taxable Income Balance
1038 --
1039 trc_NtiUpdFig := (nti_NetPerTxbInc + nti_NetAnnTxbInc + nti_NetAnnTxbNTGInc) - bal_NET_TXB_INC_CMTD;
1040 hr_utility.set_location('trc_NtiUpdFig:' || trc_NtiUpdFig,57);
1041 hr_utility.set_location('py_za_tx_01032012.NetTxbIncCalc',57);
1042
1043 WrtHrTrc('nti_SitFactor: '||to_char(nti_SitFactor));
1044 WrtHrTrc('nti_PerTypErn: '||to_char(nti_PerTypErn));
1045 WrtHrTrc('nti_AnnTypErn: '||to_char(nti_AnnTypErn));
1046 WrtHrTrc('nti_NetPerTxbInc: '||to_char(nti_NetPerTxbInc));
1047 WrtHrTrc('nti_NetAnnTxbInc: '||to_char(nti_NetAnnTxbInc));
1048 WrtHrTrc('bal_NET_TXB_INC_CMTD: '||to_char(bal_NET_TXB_INC_CMTD));
1049 WrtHrTrc('trc_NtiUpdFig: '||to_char(trc_NtiUpdFig));
1050 WrtHrTrc(' ');
1051 WrtHrTrc('nti_PerTotAbm: '||to_char(nti_PerTotAbm));
1052 WrtHrTrc('nti_PerTotAbm consists of:');
1053 WrtHrTrc('nti_PerPenFndAbm: '||to_char(nti_PerPenFndAbm));
1054 WrtHrTrc('nti_PerArrPenFndAbm: '||to_char(nti_PerArrPenFndAbm));
1055 WrtHrTrc('nti_PerRetAnuAbm: '||to_char(nti_PerRetAnuAbm));
1056 WrtHrTrc('nti_PerArrRetAnuAbm: '||to_char(nti_PerArrRetAnuAbm));
1057 WrtHrTrc('nti_PerMedAidAbm: '||to_char(nti_PerMedAidAbm));
1058 WrtHrTrc('nti_PerIncProPolAbm: '||to_char(nti_PerIncProPolAbm));
1059 WrtHrTrc(' ');
1060 WrtHrTrc('nti_AnnTotAbm: '||to_char(nti_AnnTotAbm));
1061 WrtHrTrc('nti_AnnTotAbm consists of:');
1062 WrtHrTrc('nti_AnnPenFndAbm: '||to_char(nti_AnnPenFndAbm));
1063 WrtHrTrc('nti_AnnArrPenFndAbm: '||to_char(nti_AnnArrPenFndAbm));
1064 WrtHrTrc('nti_AnnRetAnuAbm: '||to_char(nti_AnnRetAnuAbm));
1065 WrtHrTrc('nti_AnnArrRetAnuAbm: '||to_char(nti_AnnArrRetAnuAbm));
1066 WrtHrTrc('nti_AnnMedAidAbm: '||to_char(nti_AnnMedAidAbm));
1067 WrtHrTrc('nti_AnnIncProPolAbm: '||to_char(nti_AnnIncProPolAbm));
1068 WrtHrTrc('nti_PerDonAmt: '||to_char(nti_PerDonAmt));
1069 WrtHrTrc('nti_AnnDonAmt: '||to_char(nti_AnnDonAmt));
1070 WrtHrTrc(' ');
1071 WrtHrTrc('nti_AnnTotNTGAbm: '||to_char(nti_AnnTotNTGAbm));
1072 WrtHrTrc('nti_AnnTotNTGAbm consists of:');
1073 WrtHrTrc('nti_AnnPenFndNTGAbm: '||to_char(nti_AnnPenFndNTGAbm));
1074 WrtHrTrc('nti_AnnArrPenFndAbm: '||to_char(nti_AnnArrPenFndAbm));
1075 WrtHrTrc('nti_AnnRetAnuNTGAbm: '||to_char(nti_AnnRetAnuNTGAbm));
1076 WrtHrTrc('nti_AnnArrRetAnuAbm: '||to_char(nti_AnnArrRetAnuAbm));
1077 WrtHrTrc('nti_AnnMedAidAbm: '||to_char(nti_AnnMedAidAbm));
1078 WrtHrTrc('nti_AnnIncProPolAbm: '||to_char(nti_AnnIncProPolAbm));
1079 WrtHrTrc('nti_PerDonAmt: '||to_char(nti_PerDonAmt));
1080 WrtHrTrc('nti_AnnDonAmt: '||to_char(nti_AnnDonAmt));
1081 WrtHrTrc('nti_TotTxbIncPkgYtd '||to_char(nti_TotTxbIncPkgYtd));
1082 WrtHrTrc('nti_TotTxbIncEEDbtPkgYtd '||to_char(nti_TotTxbIncEEDbtPkgYtd));
1083 WrtHrTrc('nti_TotTxbNIYtd '||to_char(nti_TotTxbNIYtd));
1084 WrtHrTrc('nti_TotTxbFBYtd '||to_char(nti_TotTxbFBYtd));
1085 WrtHrTrc('nti_TotTxbTAYtd '||to_char(nti_TotTxbTAYtd));
1086 WrtHrTrc('nti_TotTxbPOYtd '||to_char(nti_TotTxbPOYtd));
1087
1088
1089 -- EMP201
1090 -- Calculations for Net PAYE Taxable Income
1091 NetPayeTxbIncCalc (nti_PerTotAbm, nti_AnnTotAbm, nti_AnnTotNTGAbm, nti_SitFactor);
1092
1093
1094 EXCEPTION
1095 WHEN OTHERS THEN
1096 IF xpt_Msg = 'No Error' THEN
1097 xpt_Msg := 'NetTxbIncCalc: '||TO_CHAR(SQLCODE);
1098 END IF;
1099 RAISE xpt_E;
1100 END NetTxbIncCalc;
1101 -- Bug 14376752
1102 FUNCTION NetTxbSklDirNum(
1103 p_chunk_num IN NUMBER
1104 ,p_DirNum1 OUT NOCOPY VARCHAR2
1105 ,p_DirNum2 OUT NOCOPY VARCHAR2
1106 ,p_DirNum3 OUT NOCOPY VARCHAR2
1107 ,p_DirNum4 OUT NOCOPY VARCHAR2
1108 ,p_DirNum5 OUT NOCOPY VARCHAR2
1109 ,p_DirNum6 OUT NOCOPY VARCHAR2
1110 ,p_DirNum7 OUT NOCOPY VARCHAR2
1111 ,p_DirNum8 OUT NOCOPY VARCHAR2
1112 ,p_DirNum9 OUT NOCOPY VARCHAR2
1113 ,p_DirNum10 OUT NOCOPY VARCHAR2
1114 ,p_DirNum11 OUT NOCOPY VARCHAR2
1115 ,p_DirNum12 OUT NOCOPY VARCHAR2
1116 ,p_DirNum13 OUT NOCOPY VARCHAR2
1117 ,p_DirNum14 OUT NOCOPY VARCHAR2
1118 ,p_DirNum15 OUT NOCOPY VARCHAR2
1119 )RETURN NUMBER
1120 AS
1121
1122 BEGIN
1123
1124 IF p_chunk_num = 1 THEN
1125
1126 p_DirNum1 := trc_LSSklDirNumTab(1);
1127 p_DirNum2 := trc_LSSklDirNumTab(2);
1128 p_DirNum3 := trc_LSSklDirNumTab(3);
1129 p_DirNum4 := trc_LSSklDirNumTab(4);
1130 p_DirNum5 := trc_LSSklDirNumTab(5);
1131 p_DirNum6 := trc_LSSklDirNumTab(6);
1132 p_DirNum7 := trc_LSSklDirNumTab(7);
1133 p_DirNum8 := trc_LSSklDirNumTab(8);
1134 p_DirNum9 := trc_LSSklDirNumTab(9);
1135 p_DirNum10 := trc_LSSklDirNumTab(10);
1136 p_DirNum11 := trc_LSSklDirNumTab(11);
1137 p_DirNum12 := trc_LSSklDirNumTab(12);
1138 p_DirNum13 := trc_LSSklDirNumTab(13);
1139 p_DirNum14 := trc_LSSklDirNumTab(14);
1140 p_DirNum15 := trc_LSSklDirNumTab(15);
1141
1142 ELSIF p_chunk_num = 2 THEN
1143
1144 p_DirNum1 := trc_LSSklDirNumTab(16);
1145 p_DirNum2 := trc_LSSklDirNumTab(17);
1146 p_DirNum3 := trc_LSSklDirNumTab(18);
1147 p_DirNum4 := trc_LSSklDirNumTab(19);
1148 p_DirNum5 := trc_LSSklDirNumTab(20);
1149 p_DirNum6 := trc_LSSklDirNumTab(21);
1150 p_DirNum7 := trc_LSSklDirNumTab(22);
1151 p_DirNum8 := trc_LSSklDirNumTab(23);
1152 p_DirNum9 := trc_LSSklDirNumTab(24);
1153 p_DirNum10 := trc_LSSklDirNumTab(25);
1154 p_DirNum11 := trc_LSSklDirNumTab(26);
1155 p_DirNum12 := trc_LSSklDirNumTab(27);
1156 p_DirNum13 := trc_LSSklDirNumTab(28);
1157 p_DirNum14 := trc_LSSklDirNumTab(29);
1158 p_DirNum15 := trc_LSSklDirNumTab(30);
1159
1160 END IF;
1161
1162 RETURN trc_LScount ;
1163
1164 EXCEPTION
1165 WHEN OTHERS THEN
1166 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
1167 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
1168 py_za_tx_utl_01032012.StopHrTrace;
1169 hr_utility.raise_error;
1170 END NetTxbSklDirNum;
1171
1172 FUNCTION LSNetTxbInc(
1173 p_Dir_Num IN VARCHAR2
1174 ,p_Dir_LSNetTxbInc OUT NOCOPY NUMBER
1175 )RETURN NUMBER
1176 AS
1177 ls_num varchar2(100);
1178 BEGIN
1179
1180 p_Dir_LSNetTxbInc := trc_LSNetTxbIncTab(p_Dir_Num).LSTxbIncMTD;
1181
1182
1183 RETURN 1;
1184
1185 EXCEPTION
1186 WHEN OTHERS THEN
1187 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
1188 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
1189 py_za_tx_utl_01032012.StopHrTrace;
1190 hr_utility.raise_error;
1191 END LSNetTxbInc;
1192
1193 FUNCTION LSNetTxbIncUpd(
1194 p_Dir_Num IN VARCHAR2
1195 ,p_Dir_LSNetTxbInc OUT NOCOPY NUMBER
1196 )RETURN NUMBER
1197 AS
1198
1199 BEGIN
1200
1201 p_Dir_LSNetTxbInc := trc_LSNetTxbIncTab(p_Dir_Num).LSNtiUpdFig;
1202
1203 RETURN 1;
1204
1205 EXCEPTION
1206 WHEN OTHERS THEN
1207 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
1208 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
1209 py_za_tx_utl_01032012.StopHrTrace;
1210 hr_utility.raise_error;
1211 END LSNetTxbIncUpd;
1212
1213
1214
1215 FUNCTION LSSkillsLevy(
1216 p_Dir_Num IN VARCHAR2
1217 ,p_Dir_LSSkillsLevy OUT NOCOPY NUMBER
1218 )RETURN NUMBER
1219 AS
1220
1221 BEGIN
1222
1223 p_Dir_LSSkillsLevy := trc_LSNetTxbIncTab(p_Dir_Num).LSSkl;
1224
1225 RETURN 1;
1226
1227 EXCEPTION
1228 WHEN OTHERS THEN
1229 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
1230 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
1231 py_za_tx_utl_01032012.StopHrTrace;
1232 hr_utility.raise_error;
1233 END LSSkillsLevy;
1234
1235 FUNCTION LSDirCount RETURN NUMBER
1236 AS
1237 l_count NUMBER;
1238
1239 BEGIN
1240
1241 l_count := trc_LScount ;
1242
1243 RETURN l_count;
1244
1245 EXCEPTION
1246 WHEN OTHERS THEN
1247 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
1248 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
1249 py_za_tx_utl_01032012.StopHrTrace;
1250 hr_utility.raise_error;
1251 END LSDirCount;
1252
1253 FUNCTION LSDirNetTxbInc(
1254 p_Dir_Num IN VARCHAR2
1255 ,p_LSNetTxbInc OUT NOCOPY NUMBER
1256 ) RETURN NUMBER
1257 AS
1258
1259 BEGIN
1260
1261 hr_utility.set_location('py_za_tx_01032012.LSDirNetTxbInc',1);
1262 hr_utility.set_location('Processing Directive Number: '|| p_Dir_Num,1);
1263
1264 p_LSNetTxbInc := trc_LSNetTxbIncTab(p_Dir_Num).LSTxbIncMTD;
1265
1266 hr_utility.set_location('p_LSNetTxbInc: '|| p_LSNetTxbInc,1);
1267
1268 RETURN 1;
1269
1270 EXCEPTION
1271 WHEN OTHERS THEN
1272 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
1273 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
1274 py_za_tx_utl_01032012.StopHrTrace;
1275 hr_utility.raise_error;
1276 END LSDirNetTxbInc;
1277
1278 -- Bug 14376752
1279 -------------------------------------------------------------------------------
1280 -- Tax Override Function
1281 -------------------------------------------------------------------------------
1282 FUNCTION ZaTxOvr_01032012(
1283 p_OvrTyp IN VARCHAR2
1284 ,p_TxOnNI IN NUMBER
1285 ,p_TxOnAP IN NUMBER
1286 ,p_TxPrc IN NUMBER
1287 )RETURN NUMBER
1288 AS
1289 l_Dum NUMBER := 1;
1290 BEGIN
1291 -- Set the Override Global
1292 trc_OvrTxCalc := TRUE;
1293
1294 -- Set Override Values
1295 trc_OvrTyp := p_OvrTyp;
1296
1297 IF p_OvrTyp = 'V' THEN
1298 trc_LibFpNI := p_TxOnNI;
1299 trc_LibFpAP := p_TxOnAP;
1300 ELSIF p_OvrTyp = 'P' THEN
1301 trc_OvrPrc := p_TxPrc;
1302 END IF;
1303 RETURN l_Dum;
1304
1305 EXCEPTION
1306 WHEN OTHERS THEN
1307 hr_utility.set_message(801, 'ZaTxOvr_01032012: '||TO_CHAR(SQLCODE));
1308 hr_utility.raise_error;
1309 END ZaTxOvr_01032012;
1310
1311 -------------------------------------------------------------------------------
1312 -- Main Tax Calculation Procedures --
1313 -------------------------------------------------------------------------------
1314 -------------------------------------------------------------------------------
1315 -- LteCalc
1316 -- This procedure is not called for Late Payments. This is replaced with LteCalc
1317 -- provided below
1318 -- for Bug 8844712
1319 -------------------------------------------------------------------------------
1320 /*
1321 PROCEDURE LteCalc AS
1322
1323 -- Variables
1324 l_EndDate DATE;
1325 l_StrtDte DATE;
1326 l_65Year DATE;
1327 l_ZA_TX_YR_END DATE;
1328 l_ZA_ADL_TX_RBT NUMBER;
1329 l_ZA_PRI_TX_RBT NUMBER;
1330 l_ZA_PRI_TX_THRSHLD NUMBER;
1331 l_ZA_SC_TX_THRSHLD NUMBER;
1332
1333 l_Sl BOOLEAN;
1334 l_Np BALANCE DEFAULT 0;
1335
1336
1337 -- Private Functions
1338 --
1339 FUNCTION getBalVal
1340 (p_BalNme IN pay_balance_types.balance_name%TYPE
1341 ,p_EffDte IN DATE
1342 ) RETURN NUMBER
1343 AS
1344 -- Variables
1345 l_BalVal BALANCE;
1346 l_BalTypId pay_balance_types.balance_type_id%TYPE;
1347 l_dimension pay_balance_dimensions.dimension_name%TYPE ;
1348
1349 BEGIN
1350 hr_utility.set_location('py_za_tx_01032012.LteCalc',1);
1351 -- Get the Balance Type ID
1352 SELECT pbt.balance_type_id
1353 INTO l_BalTypId
1354 FROM pay_balance_types pbt
1355 WHERE pbt.balance_name = p_BalNme
1356 AND pbt.legislation_code = 'ZA';
1357
1358 hr_utility.set_location('py_za_tx_01032012.LteCalc',2);
1359
1360 -- Get the Balance Value
1361 l_dimension := '_ASG_TAX_YTD';
1362 l_BalVal := py_za_bal.get_balance_value
1363 ( con_ASG_ID
1364 , l_BalTypId
1365 , l_dimension
1366 , p_EffDte
1367 );
1368 RETURN l_BalVal;
1369 END getBalVal;
1370
1371 FUNCTION getBalVal2
1372 (p_BalNme IN pay_balance_types.balance_name%TYPE
1373 ,p_EffDte IN DATE
1374 ) RETURN NUMBER
1375 AS
1376 -- Variables
1377 l_BalVal BALANCE;
1378 l_BalTypId pay_balance_types.balance_type_id%TYPE;
1379 l_dimension pay_balance_dimensions.dimension_name%TYPE ;
1380 BEGIN
1381 hr_utility.set_location('py_za_tx_01032012.LteCalc',3);
1382 -- Get the Balance Type ID
1383 SELECT pbt.balance_type_id
1384 INTO l_BalTypId
1385 FROM pay_balance_types pbt
1386 WHERE pbt.balance_name = p_BalNme;
1387
1388 hr_utility.set_location('py_za_tx_01032012.LteCalc',4);
1389
1390 -- Get the Balance Value
1391 l_dimension := '_ASG_ITD';
1392 l_BalVal := py_za_bal.get_balance_value
1393 ( con_ASG_ID
1394 , l_BalTypId
1395 , l_dimension
1396 , p_EffDte
1397 );
1398 RETURN l_BalVal;
1399 END getBalVal2;
1400
1401 BEGIN
1402 hr_utility.set_location('py_za_tx_01032012.LteCalc',5);
1403 -- Does the Assignment have an OFigure?
1404 --
1405 IF bal_TOT_TXB_INC_ITD <= 0 THEN
1406 hr_utility.set_location('py_za_tx_01032012.LteCalc',6);
1407 -- Calculate the 'O' Figure
1408 -- Set the Global
1409 trc_CalTyp := 'PstCalc';
1410 -- Set the Site Factor to the value of the previous tax year
1411 l_StrtDte := dbi_ZA_ASG_TX_YR_STRT;
1412 l_EndDate := dbi_ZA_ASG_TX_YR_END;
1413 hr_utility.set_location('py_za_tx_01032012.LteCalc',8);
1414
1415 trc_SitFactor := (l_EndDate - l_StrtDte + 1) / py_za_tx_utl_01032012.DaysWorked;
1416 hr_utility.set_location('py_za_tx_01032012.LteCalc',9);
1417
1418 -- Populate Local Balance Variables
1419 -- The PTD Globals are used as dummy to store the previous tax year's
1420 -- Balance values
1421
1422 bal_ANN_ARR_PF_PTD := getBalVal('Annual Arrear Pension Fund',l_EndDate);
1423 bal_ANN_ARR_RA_PTD := getBalVal('Annual Arrear Retirement Annuity',l_EndDate);
1424 bal_ANN_PF_PTD := getBalVal('Annual Pension Fund',l_EndDate);
1425 bal_ANN_RA_PTD := getBalVal('Annual Retirement Annuity',l_EndDate);
1426 bal_ARR_PF_PTD := getBalVal('Arrear Pension Fund',l_EndDate);
1427 bal_ARR_RA_PTD := getBalVal('Arrear Retirement Annuity',l_EndDate);
1428 bal_BP_PTD := getBalVal('Bonus Provision',l_EndDate);
1429 bal_CUR_PF_PTD := getBalVal('Current Pension Fund',l_EndDate);
1430 bal_CUR_RA_PTD := getBalVal('Current Retirement Annuity',l_EndDate);
1431 bal_EXC_ARR_PEN_PTD := getBalVal2('Excess Arrear Pension',l_EndDate);
1432 bal_EXC_ARR_RA_PTD := getBalVal2('Excess Arrear Retirement Annuity',l_EndDate);
1433 bal_MED_CONTR_PTD := getBalVal('Medical Aid Contribution',l_EndDate);
1434 bal_MED_CNTRB_ABM_PTD := getBalVal('Medical Contributions Abatement',l_EndDate);
1435 bal_ANN_MED_CNTRB_ABM_PTD := getBalVal('Annual Medical Contributions Abatement',l_EndDate);
1436 bal_TOT_INC_PTD := getBalVal('Total Income',l_EndDate);
1437 bal_TOT_NRFI_AN_INC_PTD := getBalVal('Total NRFIable Annual Income',l_EndDate);
1438 bal_TOT_NRFI_INC_PTD := getBalVal('Total NRFIable Income',l_EndDate);
1439 bal_TOT_RFI_AN_INC_PTD := getBalVal('Total RFIable Annual Income',l_EndDate);
1440 bal_TOT_RFI_INC_PTD := getBalVal('Total RFIable Income',l_EndDate);
1441 bal_TOT_TXB_AB_PTD := getBalVal('ZATax Total Taxable Annual Bonus',l_EndDate);
1442 bal_TOT_TXB_AP_PTD := getBalVal('ZATax Total Taxable Annual Payments',l_EndDate);
1443 bal_TOT_TXB_FB_PTD := getBalVal('ZATax Total Taxable Fringe Benefits',l_EndDate);
1444 bal_TOT_TXB_NI_PTD := getBalVal('ZATax Total Taxable Normal Income',l_EndDate);
1445 bal_TOT_TXB_TA_PTD := getBalVal('ZATax Total Taxable Travel Allowance',l_EndDate);
1446 bal_TOT_TXB_PO_PTD := getBalVal('ZATax Total Taxable Public Office Allowance',l_EndDate);
1447 --NTG
1448 bal_TOT_TXB_AP_NTG_PTD := getBalVal('ZATax Total Taxable Annual Payments NTG',l_EndDate);
1449 bal_TOT_TXB_EE_DBT_NTG_PTD := getBalVal('ZATax Total Taxable Ann Pymnt of EE Debt NTG',l_EndDate);
1450 --End NTG
1451
1452 --TYS2010
1453 bal_ANN_DONAT_MD_EE_PTD := getBalVal('Annual Donations made by EE and paid by ER',l_EndDate);
1454 bal_DONAT_MD_EE_PTD := getBalVal('Donations made by EE and paid by ER',l_EndDate);
1455
1456
1457 hr_utility.set_location('py_za_tx_01032012.LteCalc',10);
1458
1459 -- Update Globals with Correct Taxable Values
1460 Fix for bug#10372926
1461 --py_za_tx_utl_01032012.TrvAll;
1462
1463 -- Bug 8691928
1464 -- removed newlines between various operands of the expression
1465 bal_TOT_TXB_PO_PTD := bal_TOT_TXB_PO_PTD * py_za_tx_utl_01032012.GlbVal('ZA_PUBL_TAX_PERC',l_EndDate) / 100;
1466 hr_utility.set_location('py_za_tx_01032012.LteCalc',11);
1467
1468 -- Rebates
1469 py_za_tx_utl_01032012.SetRebates;
1470 -- Abatements
1471 py_za_tx_utl_01032012.Abatements;
1472
1473 hr_utility.set_location('py_za_tx_01032012.LteCalc',12);
1474
1475 -- Base Earnings
1476 --
1477 trc_BseErn :=
1478 ( ( bal_TOT_TXB_NI_PTD
1479 + bal_TOT_TXB_FB_PTD
1480 + bal_TOT_TXB_TA_PTD
1481 + bal_TOT_TXB_PO_PTD
1482 + bal_BP_PTD
1483 )* trc_SitFactor
1484 )
1485 + bal_TOT_TXB_AB_PTD
1486 + bal_TOT_TXB_AP_PTD
1487 -- Added for NTG
1488 + bal_TOT_TXB_AP_NTG_PTD
1489 + bal_TOT_TXB_EE_DBT_NTG_PTD;
1490 -- Taxable Base Income
1491 --TYS2010
1492 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1493 /*
1494 trc_TxbBseIncWoDon := trc_BseErn - trc_AnnTotNTGAbm;
1495 trc_TxbBseInc :=trc_TxbBseIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbBseIncWoDon,trc_AnnDonAmt);
1496
1497 -- Threshold Check
1498 IF trc_TxbBseInc >= trc_Threshold THEN
1499 hr_utility.set_location('py_za_tx_01032012.LteCalc',13);
1500 -- Tax Liability
1501 trc_TotLibBse := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbBseInc);
1502 ELSE
1503 hr_utility.set_location('py_za_tx_01032012.LteCalc',14);
1504 trc_TotLibBse := 0;
1505 END IF;
1506
1507 -- Populate the O Figure
1508 trc_OUpdFig := trc_TxbBseInc - bal_TOT_TXB_INC_ITD;
1509
1510 -- Base Income
1511 WrtHrTrc('trc_BseErn: '||to_char(trc_BseErn));
1512 WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
1513 WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
1514
1515 ELSE
1516 hr_utility.set_location('py_za_tx_01032012.LteCalc',15);
1517 -- Use the 'O' Figure as Base
1518 -- Set the Global
1519 trc_CalTyp := 'LteCalc';
1520
1521 -- Get the assignment's previous tax year's
1522 -- threshold and rebate figures
1523 -- Employee Tax Year Start and End Dates
1524 l_EndDate := dbi_ZA_ASG_TX_YR_END;
1525
1526 hr_utility.set_location('py_za_tx_01032012.LteCalc',16);
1527
1528 -- Global Values
1529 l_ZA_TX_YR_END := l_EndDate;
1530 l_ZA_ADL_TX_RBT := py_za_tx_utl_01032012.GlbVal('ZA_ADDITIONAL_TAX_REBATE',l_EndDate);
1531 l_ZA_PRI_TX_RBT := py_za_tx_utl_01032012.GlbVal('ZA_PRIMARY_TAX_REBATE',l_EndDate);
1532 l_ZA_PRI_TX_THRSHLD := py_za_tx_utl_01032012.GlbVal('ZA_PRIM_TAX_THRESHOLD',l_EndDate);
1533 l_ZA_SC_TX_THRSHLD := py_za_tx_utl_01032012.GlbVal('ZA_SEC_TAX_THRESHOLD',l_EndDate);
1534
1535 -- Calculate the assignments 65 Year Date
1536 l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
1537
1538 IF l_65Year <= l_ZA_TX_YR_END THEN
1539 hr_utility.set_location('py_za_tx_01032012.LteCalc',17);
1540 -- give the extra abatement
1541 trc_Rebate := l_ZA_PRI_TX_RBT + l_ZA_ADL_TX_RBT;
1542 trc_Threshold := l_ZA_SC_TX_THRSHLD;
1543 ELSE
1544 hr_utility.set_location('py_za_tx_01032012.LteCalc',18);
1545 -- not eligable for extra abatement
1546 trc_Rebate := l_ZA_PRI_TX_RBT;
1547 trc_Threshold := l_ZA_PRI_TX_THRSHLD;
1548 END IF;
1549
1550
1551 -- Base Earnings
1552 --
1553 -- Take the OFigure as Taxable Base Income
1554 trc_TxbBseInc := bal_TOT_TXB_INC_ITD;
1555 -- Threshold Check
1556 IF trc_TxbBseInc >= trc_Threshold THEN
1557 hr_utility.set_location('py_za_tx_01032012.LteCalc',19);
1558 -- Tax Liability
1559 trc_TotLibBse := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbBseInc);
1560 ELSE
1561 hr_utility.set_location('py_za_tx_01032012.LteCalc',20);
1562 trc_TotLibBse := 0;
1563 END IF;
1564
1565 -- Base Income
1566 WrtHrTrc('trc_BseErn: '||to_char(trc_BseErn));
1567 WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
1568 WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
1569 END IF;
1570
1571 -- Override the Global
1572 trc_CalTyp := 'LteCalc';
1573 -- Set the SitFactor back to 1
1574 trc_SitFactor := 1;
1575
1576 hr_utility.set_location('py_za_tx_01032012.LteCalc',21);
1577
1578 -- Rebates
1579 py_za_tx_utl_01032012.SetRebates;
1580 -- Abatements
1581 py_za_tx_utl_01032012.Abatements;
1582
1583 hr_utility.set_location('py_za_tx_01032012.LteCalc',22);
1584
1585 -- Update Global Balance Values with correct TAXABLE values
1586 Fix for bug#10372926
1587 --py_za_tx_utl_01032012.TrvAll;
1588
1589 bal_TOT_TXB_PO_YTD := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
1590
1591 -- Normal Income
1592 --
1593 -- Ytd Normal Income
1594 trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
1595 -- Skip the calculation if there is No Income
1596 IF trc_NorIncYtd <> 0 THEN
1597 hr_utility.set_location('py_za_tx_01032012.LteCalc',23);
1598 -- Normal Earnings
1599 trc_NorErn := trc_NorIncYtd + trc_TxbBseInc;
1600 -- Taxable Normal Income
1601 --TYS2010
1602 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1603 trc_TxbNorIncWoDon := trc_NorErn - trc_PerTotAbm;
1604 trc_TxbNorInc :=trc_TxbNorIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbNorIncWoDon,trc_PerDonAmt);
1605
1606 -- Threshold Check
1607 IF trc_TxbNorInc >= trc_Threshold THEN
1608 hr_utility.set_location('py_za_tx_01032012.LteCalc',24);
1609 -- Tax Liability
1610 trc_TotLibNI := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbNorInc);
1611 trc_LibFyNI := trc_TotLibNI - least(trc_TotLibNI,trc_TotLibBse);
1612 trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibBse);
1613 trc_LibFpNI := trc_LibFyNI - bal_TX_ON_NI_YTD;
1614 ELSE
1615 hr_utility.set_location('py_za_tx_01032012.LteCalc',25);
1616 -- Set Cascade Figures and Refund
1617 trc_TotLibNI := 0;
1618 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
1619 trc_LibFpNIOvr := TRUE;
1620 END IF;
1621 ELSE
1622 hr_utility.set_location('py_za_tx_01032012.LteCalc',26);
1623 -- Set Cascade Figures and Refund
1624 trc_NorErn := trc_TxbBseInc;
1625 trc_TxbNorInc := 0;
1626 trc_TotLibNI := trc_TotLibBse;
1627 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
1628 trc_LibFpNIOvr := TRUE;
1629 END IF;
1630
1631 -- Fringe Benefits
1632 --
1633 trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
1634 -- Skip the calculation if there is No Income
1635 IF trc_FrnBenYtd <> 0 THEN
1636 hr_utility.set_location('py_za_tx_01032012.LteCalc',27);
1637 -- Fringe Benefit Earnings
1638 trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
1639 -- Taxable Fringe Income
1640 --TYS2010
1641 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1642 trc_TxbFrnIncWoDon := trc_FrnBenErn - trc_PerTotAbm;
1643 trc_TxbFrnInc :=trc_TxbFrnIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbFrnIncWoDon,trc_PerDonAmt);
1644
1645 -- Threshold Check
1646 IF trc_TxbFrnInc >= trc_Threshold THEN
1647 hr_utility.set_location('py_za_tx_01032012.LteCalc',28);
1648 -- Tax Liability
1649 trc_TotLibFB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbFrnInc);
1650 trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
1651 trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
1652 trc_LibFpFB := trc_LibFyFB - bal_TX_ON_FB_YTD;
1653 ElSE
1654 hr_utility.set_location('py_za_tx_01032012.LteCalc',29);
1655 -- Set Cascade Figures and Refund
1656 trc_TotLibFB := trc_TotLibNI;
1657 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
1658 trc_LibFpFBOvr := TRUE;
1659 END IF;
1660 ELSE
1661 hr_utility.set_location('py_za_tx_01032012.LteCalc',30);
1662 -- Set Cascade Figures and Refund
1663 trc_FrnBenErn := trc_NorErn;
1664 trc_TxbFrnInc := trc_TxbNorInc;
1665 trc_TotLibFB := trc_TotLibNI;
1666 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
1667 trc_LibFpFBOvr := TRUE;
1668 END IF;
1669
1670 -- Travel Allowance
1671 --
1672 -- Ytd Travel Allowance
1673 trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
1674 -- Skip the calculation if there is No Income
1675 IF trc_TrvAllYtd <> 0 THEN
1676 hr_utility.set_location('py_za_tx_01032012.LteCalc',31);
1677 -- Travel Earnings
1678 trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
1679 -- Taxable Travel Income
1680 --TYS2010
1681 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1682 trc_TxbTrvIncWoDon := trc_TrvAllErn - trc_PerTotAbm;
1683 trc_TxbTrvInc :=trc_TxbTrvIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbTrvIncWoDon,trc_PerDonAmt);
1684
1685 -- Threshold Check
1686 IF trc_TxbTrvInc >= trc_Threshold THEN
1687 hr_utility.set_location('py_za_tx_01032012.LteCalc',32);
1688 -- Tax Liability
1689 trc_TotLibTA := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbTrvInc);
1690 trc_LibFyTA := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
1691 trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
1692 trc_LibFpTA := trc_LibFyTA - bal_TX_ON_TA_YTD;
1693 ELSE
1694 hr_utility.set_location('py_za_tx_01032012.LteCalc',33);
1695 -- Set Cascade Figures and Refund
1696 trc_TotLibTA := trc_TotLibFB;
1697 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
1698 trc_LibFpTAOvr := TRUE;
1699 END IF;
1700 ELSE
1701 hr_utility.set_location('py_za_tx_01032012.LteCalc',34);
1702 -- Set Cascade Figures and Refund
1703 trc_TrvAllErn := trc_FrnBenErn;
1704 trc_TxbTrvInc := trc_TxbFrnInc;
1705 trc_TotLibTA := trc_TotLibFB;
1706 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
1707 trc_LibFpTAOvr := TRUE;
1708 END IF;
1709
1710 -- Annual Bonus
1711 --
1712 -- Ytd Annual Bonus
1713 trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
1714 -- Skip the calculation if there is No Income
1715 IF trc_AnnBonYtd <> 0 THEN
1716 hr_utility.set_location('py_za_tx_01032012.LteCalc',35);
1717 -- Annual Bonus Earnings
1718 trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
1719 -- Taxable Annual Bonus Income
1720 --TYS2010
1721 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1722 trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
1723 trc_TxbAnnBonInc :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
1724
1725 -- Threshold Check
1726 IF trc_TxbAnnBonInc >= trc_Threshold THEN
1727 hr_utility.set_location('py_za_tx_01032012.LteCalc',36);
1728 -- Tax Liability
1729 trc_TotLibAB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnBonInc);
1730 trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
1731 trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
1732 trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
1733 ELSE
1734 hr_utility.set_location('py_za_tx_01032012.LteCalc',39);
1735 -- Set Cascade Figures and Refund
1736 trc_TotLibAB := trc_TotLibTA;
1737 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1738 trc_LibFpABOvr := TRUE;
1739 END IF;
1740 ELSE
1741 hr_utility.set_location('py_za_tx_01032012.LteCalc',40);
1742 -- Set Cascade Figures and Refund
1743 trc_AnnBonErn := trc_TrvAllErn;
1744 trc_TxbAnnBonInc := trc_TxbTrvInc;
1745 trc_TotLibAB := trc_TotLibTA;
1746 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1747 trc_LibFpABOvr := TRUE;
1748 END IF;
1749
1750 -- Annual Payments
1751 --
1752 -- Ytd Annual Payments
1753 trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
1754 -- Skip the calculation if there is No Income
1755 IF trc_AnnPymYtd <> 0 THEN
1756 hr_utility.set_location('py_za_tx_01032012.LteCalc',41);
1757 -- Annual Payments Earnings
1758 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
1759 -- Taxable Annual Payments Income
1760 --TYS2010
1761 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1762 trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
1763 trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
1764
1765 -- Threshold Check
1766 IF trc_TxbAnnPymInc >= trc_Threshold THEN
1767 hr_utility.set_location('py_za_tx_01032012.LteCalc',42);
1768 -- Tax Liability
1769 trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1770 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
1771 trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
1772 trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
1773 ELSE
1774 hr_utility.set_location('py_za_tx_01032012.LteCalc',45);
1775 -- Set Cascade Figures and Refund
1776 trc_TotLibAP := trc_TotLibAB;
1777 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
1778 trc_LibFpAPOvr := TRUE;
1779 END IF;
1780 ELSE
1781 hr_utility.set_location('py_za_tx_01032012.LteCalc',46);
1782 -- Set Cascade Figures and Refund
1783 trc_AnnPymErn := trc_AnnBonErn;
1784 trc_TxbAnnPymInc := trc_TxbAnnBonInc;
1785 trc_TotLibAP := trc_TotLibAB;
1786 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
1787 trc_LibFpAPOvr := TRUE;
1788 END IF;
1789
1790 -- Public Office Allowance
1791 --
1792 -- Ytd Public Office Allowance
1793 trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
1794 -- Skip the calculation if there is No Income
1795 IF trc_PblOffYtd <> 0 THEN
1796 hr_utility.set_location('py_za_tx_01032012.LteCalc',47);
1797 -- Public Office Allowance Earnings
1798 trc_PblOffErn := trc_PblOffYtd + trc_AnnPymErn;
1799 -- Taxable Public Office Allowance
1800 --TYS2010
1801 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
1802 trc_TxbPblOffIncWoDon := trc_PblOffErn - trc_AnnTotAbm;
1803 trc_TxbPblOffInc :=trc_TxbPblOffIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbPblOffIncWoDon,trc_AnnDonAmt);
1804
1805 -- Threshold Check
1806 IF trc_TxbPblOffInc >= trc_Threshold THEN
1807 hr_utility.set_location('py_za_tx_01032012.LteCalc',48);
1808 -- Tax Liability
1809 trc_TotLibPO := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbPblOffInc);
1810 trc_LibFyPO := trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP);
1811 trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
1812 trc_LibFpPO := trc_LibFyPO - bal_TX_ON_PO_YTD;
1813 ElSE
1814 hr_utility.set_location('py_za_tx_01032012.LteCalc',49);
1815 -- Set Cascade Figures and Refund
1816 trc_TotLibPO := trc_TotLibPO;
1817 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
1818 trc_LibFpPOOvr := TRUE;
1819 END IF;
1820 ELSE
1821 hr_utility.set_location('py_za_tx_01032012.LteCalc',50);
1822 -- Set Cascade Figures and Refund
1823 trc_PblOffErn := trc_AnnPymErn;
1824 trc_TxbPblOffInc := trc_TxbAnnPymInc;
1825 trc_TotLibPO := trc_TotLibAP;
1826 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
1827 trc_LibFpPOOvr := TRUE;
1828 END IF;
1829
1830 -- Net Pay Validation
1831 --
1832 -- Net Pay of the Employee
1833 l_Np := bal_NET_PAY_RUN;
1834 -- Site Limit Check
1835 IF trc_TxbAnnPymInc + trc_PblOffErn < glb_ZA_SIT_LIM THEN
1836 hr_utility.set_location('py_za_tx_01032012.LteCalc',51);
1837 l_Sl := TRUE;
1838 ELSE
1839 hr_utility.set_location('py_za_tx_01032012.LteCalc',52);
1840 l_Sl := FALSE;
1841 END IF;
1842
1843 py_za_tx_utl_01032012.ValidateTaxOns(p_Rf => l_Sl);
1844
1845 -- Set IT3A Indicator
1846 --
1847 IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
1848 hr_utility.set_location('py_za_tx_01032012.LteCalc',53);
1849 trc_It3Ind := 0; -- Over Lim
1850 ELSE
1851 hr_utility.set_location('py_za_tx_01032012.LteCalc',54);
1852 trc_It3Ind := 1; -- Under Lim
1853 END IF;
1854
1855 -- Normal Income
1856 WrtHrTrc('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
1857 WrtHrTrc('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
1858 WrtHrTrc('trc_NorErn: '||to_char(trc_NorErn));
1859 WrtHrTrc('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
1860 WrtHrTrc('trc_TxbNorIncWoDon: '||to_char(trc_TxbNorIncWoDon));
1861 WrtHrTrc('trc_TotLibNI: '||to_char(trc_TotLibNI));
1862 WrtHrTrc('trc_LibFyNI: '||to_char(trc_LibFyNI));
1863 WrtHrTrc('trc_LibFpNI: '||to_char(trc_LibFpNI));
1864 -- Fringe Benefits
1865 WrtHrTrc('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
1866 WrtHrTrc('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
1867 WrtHrTrc('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
1868 WrtHrTrc('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
1869 WrtHrTrc('trc_TxbFrnIncWoDon: '||to_char(trc_TxbFrnIncWoDon));
1870 WrtHrTrc('trc_TotLibFB: '||to_char(trc_TotLibFB));
1871 WrtHrTrc('trc_LibFyFB: '||to_char(trc_LibFyFB));
1872 WrtHrTrc('trc_LibFpFB: '||to_char(trc_LibFpFB));
1873 -- Travel Allowance
1874 WrtHrTrc('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
1875 WrtHrTrc('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
1876 WrtHrTrc('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
1877 WrtHrTrc('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
1878 WrtHrTrc('trc_TxbTrvIncWoDon: '||to_char(trc_TxbTrvIncWoDon));
1879 WrtHrTrc('trc_TotLibTA: '||to_char(trc_TotLibTA));
1880 WrtHrTrc('trc_LibFyTA: '||to_char(trc_LibFyTA));
1881 WrtHrTrc('trc_LibFpTA: '||to_char(trc_LibFpTA));
1882 -- Annual Bonus
1883 WrtHrTrc('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
1884 WrtHrTrc('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
1885 WrtHrTrc('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
1886 WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
1887 WrtHrTrc('trc_TxbAnnBonIncWoDon:'||to_char(trc_TxbAnnBonIncWoDon));
1888 WrtHrTrc('trc_TotLibAB: '||to_char(trc_TotLibAB));
1889 WrtHrTrc('trc_LibFyAB: '||to_char(trc_LibFyAB));
1890 WrtHrTrc('trc_LibFpAB: '||to_char(trc_LibFpAB));
1891 -- Annual Payments
1892 WrtHrTrc('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
1893 WrtHrTrc('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
1894 WrtHrTrc('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
1895 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
1896 WrtHrTrc('trc_TxbAnnPymIncWoDon:'||to_char(trc_TxbAnnPymIncWoDon));
1897 WrtHrTrc('trc_TotLibAP: '||to_char(trc_TotLibAP));
1898 WrtHrTrc('trc_LibFyAP: '||to_char(trc_LibFyAP));
1899 WrtHrTrc('trc_LibFpAP: '||to_char(trc_LibFpAP));
1900 -- Pubilc Office Allowance
1901 WrtHrTrc('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
1902 WrtHrTrc('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
1903 WrtHrTrc('trc_PblOffErn: '||to_char(trc_PblOffErn));
1904 WrtHrTrc('trc_TxbPblOffInc: '||to_char(trc_TxbPblOffInc));
1905 WrtHrTrc('trc_TxbPblOffIncWoDon:'||to_char(trc_TxbPblOffIncWoDon));
1906 WrtHrTrc('trc_TotLibPO: '||to_char(trc_TotLibPO));
1907 WrtHrTrc('trc_LibFyPO: '||to_char(trc_LibFyPO));
1908 WrtHrTrc('trc_LibFpPO: '||to_char(trc_LibFpPO));
1909
1910
1911
1912 EXCEPTION
1913 WHEN OTHERS THEN
1914 IF xpt_Msg = 'No Error' THEN
1915 xpt_Msg := 'LteCalc: '||TO_CHAR(SQLCODE);
1916 END IF;
1917 RAISE xpt_E;
1918 END LteCalc;
1919 */
1920
1921 --New procedure for Bug 8844712
1922 --Late Payments must be taxed per 25% for tax statuses for which tax table is used.
1923 PROCEDURE LteCalc AS
1924 l_Sl BOOLEAN;
1925 l_Np BALANCE DEFAULT 0;
1926 BEGIN
1927 hr_utility.set_location('py_za_tx_01032012.LteCalc',1);
1928 trc_CalTyp := 'LteCalc';
1929 trc_SitFactor := 1;
1930 trc_LateSitePaye := 0;
1931
1932 --Fix for bug#10372926
1933 --py_za_tx_utl_01032012.TrvAll;
1934 py_za_tx_utl_01032012.SetRebates;
1935
1936 hr_utility.set_location('py_za_tx_01032012.LteCalc',2);
1937
1938 bal_TOT_TXB_PO_YTD := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
1939
1940 -- Normal Income
1941 --
1942 -- Ytd Normal Income
1943 trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
1944 -- Skip the calculation if there is No Income
1945 IF trc_NorIncYtd <> 0 THEN
1946 hr_utility.set_location('py_za_tx_01032012.LteCalc',3);
1947 -- Normal Earnings
1948 trc_NorErn := trc_NorIncYtd;
1949 -- Tax Liability
1950 trc_TotLibNI := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_NorErn);
1951 trc_LibFyNI := trc_TotLibNI - 0;
1952 trc_TotLibNI := greatest(trc_TotLibNI,0);
1953 trc_LibFpNI := trc_LibFyNI - bal_TX_ON_NI_YTD;
1954 ELSE
1955 hr_utility.set_location('py_za_tx_01032012.LteCalc',4);
1956 -- Set Cascade Figures and Refund
1957 trc_NorErn := 0;
1958 trc_TotLibNI := 0;
1959 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
1960 trc_LibFpNIOvr := TRUE;
1961 END IF;
1962
1963 -- Fringe Benefits
1964 --
1965 -- Ytd Fringe Benefits
1966 trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
1967 -- Skip the calculation if there is No Income
1968 IF trc_FrnBenYtd <> 0 THEN
1969 hr_utility.set_location('py_za_tx_01032012.LteCalc',5);
1970 -- Fringe Benefit Earnings
1971 trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
1972 -- Tax Liability
1973 trc_TotLibFB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_FrnBenErn);
1974 trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
1975 trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
1976 trc_LibFpFB := trc_LibFyFB - bal_TX_ON_FB_YTD;
1977 ELSE
1978 hr_utility.set_location('py_za_tx_01032012.LteCalc',6);
1979 -- Set Cascade Figures and Refund
1980 trc_FrnBenErn := trc_NorErn;
1981 trc_TotLibFB := trc_TotLibNI;
1982 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
1983 trc_LibFpFBOvr := TRUE;
1984 END IF;
1985
1986 -- Travel Allowance
1987 --
1988 -- Ytd Travel Allowance
1989 trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
1990 -- Skip the calculation if there is No Income
1991 IF trc_TrvAllYtd <> 0 THEN
1992 hr_utility.set_location('py_za_tx_01032012.LteCalc',7);
1993 -- Travel Allowance Earnings
1994 trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
1995 -- Tax Liability
1996 trc_TotLibTA := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TrvAllErn);
1997 trc_LibFyTA := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
1998 trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
1999 trc_LibFpTA := trc_LibFyTA - bal_TX_ON_TA_YTD;
2000 ELSE
2001 hr_utility.set_location('py_za_tx_01032012.LteCalc',8);
2002 -- Set Cascade Figures and Refund
2003 trc_TrvAllErn := trc_FrnBenErn; --Cascade Figure
2004 trc_TotLibTA := trc_TotLibFB;
2005 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
2006 trc_LibFpTAOvr := TRUE;
2007 END IF;
2008
2009 -- Annual Bonus
2010 --
2011 -- Ytd Annual Bonus
2012 trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
2013 -- Skip the calculation if there is No Income
2014 IF trc_AnnBonYtd <> 0 THEN
2015 hr_utility.set_location('py_za_tx_01032012.LteCalc',9);
2016 -- Annual Bonus Earnings
2017 trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
2018 -- Tax Liability
2019 trc_TotLibAB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_AnnBonErn);
2020 trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
2021 trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
2022 -- Check Bonus Provision
2023 trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
2024 ELSE
2025 hr_utility.set_location('py_za_tx_01032012.LteCalc',10);
2026 trc_AnnBonErn := trc_TrvAllErn;
2027 trc_TotLibAB := trc_TotLibTA;
2028 trc_LibFpAB := -1 * bal_TX_ON_BP_YTD;
2029 trc_LibFpABOvr := TRUE;
2030 END IF;
2031
2032 -- Annual Payments
2033 --
2034 -- Ytd Annual Payments
2035 trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
2036 -- Skip the calculation if there is No Income
2037 IF trc_AnnPymYtd <> 0 THEN
2038 hr_utility.set_location('py_za_tx_01032012.LteCalc',11);
2039 -- Annual Payments Earnings
2040 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
2041 -- Tax Liability
2042 trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_AnnPymErn);
2043 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
2044 trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
2045 trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
2046 ElSE
2047 hr_utility.set_location('py_za_tx_01032012.LteCalc',12);
2048 -- Set Cascade Figures and Refund
2049 trc_AnnPymErn := trc_AnnBonErn;
2050 trc_TotLibAP := trc_TotLibAB;
2051 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
2052 trc_LibFpAPOvr := TRUE;
2053 END IF;
2054
2055
2056
2057 -- Public Office Allowance
2058 --
2059 -- Ytd Public Office Allowance
2060 trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
2061 -- Skip the calculation if there is No Income
2062 IF trc_PblOffYtd <> 0 THEN
2063 hr_utility.set_location('py_za_tx_01032012.LteCalc',13);
2064 -- Public Office Allowance Earnings
2065 trc_PblOffErn := trc_PblOffYtd + trc_AnnPymErn;
2066 -- Tax Liability
2067 trc_TotLibPO := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_PblOffErn);
2068 trc_LibFyPO := trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP);
2069 trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
2070 trc_LibFpPO := trc_LibFyPO - bal_TX_ON_PO_YTD;
2071 ELSE
2072 hr_utility.set_location('py_za_tx_01032012.LteCalc',14);
2073 -- Set Cascade Figures and Refund
2074 trc_PblOffErn := trc_AnnPymErn;
2075 trc_TotLibPO := trc_TotLibAP;
2076 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
2077 trc_LibFpPOOvr := TRUE;
2078 END IF;
2079
2080 l_Np := bal_NET_PAY_RUN;
2081 -- Site Limit Check
2082 IF trc_PblOffErn < glb_ZA_SIT_LIM THEN
2083 hr_utility.set_location('py_za_tx_01032012.LteCalc',51);
2084 l_Sl := TRUE;
2085 ELSE
2086 hr_utility.set_location('py_za_tx_01032012.LteCalc',52);
2087 l_Sl := FALSE;
2088 END IF;
2089
2090 py_za_tx_utl_01032012.ValidateTaxOns(p_Rf => l_Sl);
2091
2092 -- Set IT3A Indicator
2093 --
2094 IF trc_PblOffErn >= trc_Threshold THEN
2095 hr_utility.set_location('py_za_tx_01032012.LteCalc',53);
2096 trc_It3Ind := 0; -- Over Lim
2097 ELSE
2098 hr_utility.set_location('py_za_tx_01032012.LteCalc',54);
2099 trc_It3Ind := 1; -- Under Lim
2100 END IF;
2101
2102 -- Normal Income
2103 WrtHrTrc('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
2104 WrtHrTrc('trc_NorErn: '||to_char(trc_NorErn));
2105 WrtHrTrc('trc_TotLibNI: '||to_char(trc_TotLibNI));
2106 WrtHrTrc('trc_LibFyNI: '||to_char(trc_LibFyNI));
2107 WrtHrTrc('trc_LibFpNI: '||to_char(trc_LibFpNI));
2108 -- Fringe Benefits
2109 WrtHrTrc('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
2110 WrtHrTrc('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
2111 WrtHrTrc('trc_TotLibFB: '||to_char(trc_TotLibFB));
2112 WrtHrTrc('trc_LibFyFB: '||to_char(trc_LibFyFB));
2113 WrtHrTrc('trc_LibFpFB: '||to_char(trc_LibFpFB));
2114 -- Travel Allowance
2115 WrtHrTrc('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
2116 WrtHrTrc('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
2117 WrtHrTrc('trc_TotLibTA: '||to_char(trc_TotLibTA));
2118 WrtHrTrc('trc_LibFyTA: '||to_char(trc_LibFyTA));
2119 WrtHrTrc('trc_LibFpTA: '||to_char(trc_LibFpTA));
2120 -- Annual Bonus
2121 WrtHrTrc('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
2122 WrtHrTrc('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
2123 WrtHrTrc('trc_TotLibAB: '||to_char(trc_TotLibAB));
2124 WrtHrTrc('trc_LibFyAB: '||to_char(trc_LibFyAB));
2125 WrtHrTrc('trc_LibFpAB: '||to_char(trc_LibFpAB));
2126 -- Annual Payments
2127 WrtHrTrc('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
2128 WrtHrTrc('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
2129 WrtHrTrc('trc_TotLibAP: '||to_char(trc_TotLibAP));
2130 WrtHrTrc('trc_LibFyAP: '||to_char(trc_LibFyAP));
2131 WrtHrTrc('trc_LibFpAP: '||to_char(trc_LibFpAP));
2132 -- Pubilc Office Allowance
2133 WrtHrTrc('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
2134 WrtHrTrc('trc_PblOffErn: '||to_char(trc_PblOffErn));
2135 WrtHrTrc('trc_TotLibPO: '||to_char(trc_TotLibPO));
2136 WrtHrTrc('trc_LibFyPO: '||to_char(trc_LibFyPO));
2137 WrtHrTrc('trc_LibFpPO: '||to_char(trc_LibFpPO));
2138
2139 EXCEPTION
2140 WHEN OTHERS THEN
2141 IF xpt_Msg = 'No Error' THEN
2142 xpt_Msg := 'LteCalc: '||TO_CHAR(SQLCODE);
2143 END IF;
2144 RAISE xpt_E;
2145
2146 END LteCalc;
2147
2148 -------------------------------------------------------------------------------
2149 -- SeaCalc --
2150 -- Tax Calculation for Seasonal Workers --
2151 -------------------------------------------------------------------------------
2152 PROCEDURE SeaCalc AS
2153 -- Variables
2154 --
2155 l_Np BALANCE DEFAULT 0;
2156 l_65Year DATE;
2157 l_75Year DATE;
2158 BEGIN
2159 hr_utility.set_location('py_za_tx_01032012.SeaCalc',1);
2160 -- Identify the calculation
2161 --
2162 trc_CalTyp := 'SeaCalc';
2163
2164 -- Period Type Income
2165 --
2166 trc_TxbIncPtd :=
2167 ( bal_TOT_TXB_NI_RUN
2168 + bal_TOT_TXB_FB_RUN
2169 );
2170 -- Check if any Period Income Exists
2171 --
2172 hr_utility.set_location('py_za_tx_01032012.SeaCalc',2);
2173 IF trc_TxbIncPtd = 0 THEN -- Pre-Earnings Calc
2174 hr_utility.set_location('py_za_tx_01032012.SeaCalc',3);
2175 -- Site Factor
2176 --
2177 trc_SitFactor := glb_ZA_WRK_DYS_PR_YR / dbi_SEA_WRK_DYS_WRK;
2178
2179 -- Tax Rebates, Threshold Figure and Medical Aid
2180 -- Abatements
2181 -- Calculate the assignments 65 Year Date
2182 l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
2183 l_75Year := add_months(dbi_PER_DTE_OF_BRTH,900);
2184
2185 IF l_75Year BETWEEN dbi_ZA_TX_YR_STRT AND dbi_ZA_TX_YR_END THEN
2186 hr_utility.set_location('py_za_tx_01032012.SeaCalc',31);
2187 -- give the extra abatement
2188 trc_Rebate := glb_ZA_PRI_TX_RBT + glb_ZA_ADL_TX_RBT+glb_ZA_TRI_TX_RBT;
2189 trc_Threshold := glb_ZA_TRI_TX_THRSHLD;
2190 ELSIF l_65Year BETWEEN dbi_ZA_TX_YR_STRT AND dbi_ZA_TX_YR_END THEN
2191 hr_utility.set_location('py_za_tx_01032012.SeaCalc',4);
2192 -- give the extra abatement
2193 trc_Rebate := glb_ZA_PRI_TX_RBT + glb_ZA_ADL_TX_RBT;
2194 trc_Threshold := glb_ZA_SC_TX_THRSHLD;
2195 ELSE
2196 hr_utility.set_location('py_za_tx_01032012.SeaCalc',5);
2197 -- not eligable for extra abatement
2198 trc_Rebate := glb_ZA_PRI_TX_RBT;
2199 trc_Threshold := glb_ZA_PRI_TX_THRSHLD;
2200 END IF;
2201
2202 -- Base Income
2203 --
2204 -- Base Income
2205 trc_BseErn := bal_TOT_TXB_AP_RUN;
2206 -- Taxable Base Income
2207 trc_TxbBseInc := trc_BseErn * trc_SitFactor;
2208 -- Threshold Check
2209 IF trc_TxbBseInc >= trc_Threshold THEN
2210 hr_utility.set_location('py_za_tx_01032012.SeaCalc',6);
2211 -- Tax Liability
2212 trc_TotLibBse := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbBseInc);
2213 ELSE
2214 hr_utility.set_location('py_za_tx_01032012.SeaCalc',7);
2215 trc_TotLibBse := 0;
2216 END IF;
2217
2218 -- Annual Payments
2219 --
2220 -- Taxable Annual Payments Income
2221 trc_TxbAnnPymInc := trc_BseErn + trc_TxbBseInc;-- AP was taken as base!
2222 -- Threshold Check
2223 IF trc_TxbAnnPymInc >= trc_Threshold THEN
2224 hr_utility.set_location('py_za_tx_01032012.SeaCalc',8);
2225 -- Tax Liability
2226 trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2227 trc_LibFpAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibBse);
2228 ElSE
2229 hr_utility.set_location('py_za_tx_01032012.SeaCalc',9);
2230 trc_LibFpAP := 0;
2231 END IF;
2232
2233 -- Base Income
2234 WrtHrTrc('trc_BseErn: ' ||to_char(trc_BseErn));
2235 WrtHrTrc('trc_TxbBseInc: ' ||to_char(trc_TxbBseInc));
2236 WrtHrTrc('trc_TotLibBse: ' ||to_char(trc_TotLibBse));
2237 -- Annual Payments
2238 WrtHrTrc('trc_AnnPymYtd: ' ||to_char(trc_AnnPymYtd));
2239 WrtHrTrc('trc_AnnPymPtd: ' ||to_char(trc_AnnPymPtd));
2240 WrtHrTrc('trc_AnnPymErn: ' ||to_char(trc_AnnPymErn));
2241 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2242 WrtHrTrc('trc_TotLibAP: ' ||to_char(trc_TotLibAP));
2243 WrtHrTrc('trc_LibFyAP: ' ||to_char(trc_LibFyAP));
2244 WrtHrTrc('trc_LibFpAP: ' ||to_char(trc_LibFpAP));
2245
2246
2247 ELSE
2248 hr_utility.set_location('py_za_tx_01032012.SeaCalc',10);
2249 -- Site Factor
2250 --
2251 trc_SitFactor := glb_ZA_WRK_DYS_PR_YR / dbi_SEA_WRK_DYS_WRK;
2252
2253 -- Rebates
2254 py_za_tx_utl_01032012.SetRebates;
2255
2256 -- Abatements
2257 py_za_tx_utl_01032012.Abatements;
2258
2259
2260 trc_curMedTxCrEle := greatest(bal_MED_AID_TAX_CR_RUN + bal_ANN_MED_AID_TAX_CR_RUN,0);
2261
2262 hr_utility.set_location('py_za_tx_01032012.SeaCalc',11);
2263
2264 -- Normal Income
2265 --
2266 -- Run Normal Income
2267 trc_NorIncPtd := bal_TOT_TXB_NI_RUN;
2268 -- Skip the calculation if there is No Income
2269 IF trc_NorIncPtd <> 0 THEN
2270 hr_utility.set_location('py_za_tx_01032012.SeaCalc',12);
2271 -- Normal Earnings
2272 trc_NorErn := trc_NorIncPtd * trc_SitFactor;
2273 --TYS2010
2274 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2275 -- Taxable Normal Income
2276 trc_TxbNorIncWoDon := trc_NorErn - trc_PerTotAbm;
2277 trc_TxbNorInc :=trc_TxbNorIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbNorIncWoDon,trc_PerDonAmt);
2278
2279 -- Threshold Check
2280 IF trc_TxbNorInc >= trc_Threshold THEN
2281 hr_utility.set_location('py_za_tx_01032012.SeaCalc',13);
2282 -- Tax Liability
2283 trc_TotLibNI := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbNorInc);
2284 trc_LibFyNI := trc_TotLibNI - 0;
2285 trc_TotLibNI := greatest(trc_TotLibNI,0);
2286 trc_LibFpNI := (trc_LibFyNI / trc_SitFactor) + bal_MED_TAX_CR_USED_NI_RUN;
2287
2288 -- Start Medical Tax Credit Changes
2289 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2290 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
2291 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_NI_RUN
2292 ,p_Tx_RUN => trc_LibFpNI
2293 ,p_Tx_YTD => 0
2294 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedNI
2295 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedNI_Upd
2296 );
2297 trc_LibFpNI_Upd := trc_LibFpNI - trc_MedTxCrUsedNI_Upd;
2298 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNI,0);
2299 hr_utility.set_location(' trc_MedTxCrUsedNI:'||trc_MedTxCrUsedNI,10);
2300 hr_utility.set_location('trc_MedTxCrUsedNI_Upd:'||trc_MedTxCrUsedNI_Upd,10);
2301 hr_utility.set_location(' trc_LibFpNI_Upd:'||trc_LibFpNI_Upd,10);
2302 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2303 -- End Medical Tax Credit Changes
2304
2305 ELSE
2306 hr_utility.set_location('py_za_tx_01032012.SeaCalc',14);
2307 trc_TotLibNI := 0;
2308 END IF;
2309 ELSE
2310 hr_utility.set_location('py_za_tx_01032012.SeaCalc',15);
2311 trc_NorErn := 0;
2312 trc_TxbNorInc := 0;
2313 trc_TotLibNI := 0;
2314 END IF;
2315
2316 -- Fringe Benefits
2317 --
2318 -- Run Fringe Benefits
2319 trc_FrnBenPtd := bal_TOT_TXB_FB_RUN;
2320 -- Skip the calculation if there is No Income
2321 IF trc_FrnBenPtd <> 0 THEN
2322 hr_utility.set_location('py_za_tx_01032012.SeaCalc',16);
2323 -- Fringe Benefit Earnings
2324 trc_FrnBenErn := trc_FrnBenPtd * trc_SitFactor + trc_NorErn;
2325 --TYS2010
2326 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2327 -- Taxable Fringe Income
2328 trc_TxbFrnIncWoDon := trc_FrnBenErn - trc_PerTotAbm;
2329 trc_TxbFrnInc :=trc_TxbFrnIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbFrnIncWoDon,trc_PerDonAmt);
2330 -- Threshold Check
2331 IF trc_TxbFrnInc >= trc_Threshold THEN
2332 hr_utility.set_location('py_za_tx_01032012.SeaCalc',17);
2333 -- Tax Liability
2334 trc_TotLibFB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbFrnInc);
2335 trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
2336 trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
2337 trc_LibFpFB := (trc_LibFyFB / trc_SitFactor) + bal_MED_TAX_CR_USED_FB_RUN;
2338
2339 -- Start Medical Tax Credit Changes
2340 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2341 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
2342 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_FB_RUN
2343 ,p_Tx_RUN => trc_LibFpFB
2344 ,p_Tx_YTD => 0
2345 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedFB
2346 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedFB_Upd
2347 );
2348 trc_LibFpFB_Upd := trc_LibFpFB - trc_MedTxCrUsedFB_Upd;
2349 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedFB,0);
2350 hr_utility.set_location(' trc_MedTxCrUsedFB:'||trc_MedTxCrUsedFB,10);
2351 hr_utility.set_location('trc_MedTxCrUsedFB_Upd:'||trc_MedTxCrUsedFB_Upd,10);
2352 hr_utility.set_location(' trc_LibFpFB_Upd:'||trc_LibFpFB_Upd,10);
2353 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2354 -- End Medical Tax Credit Changes
2355
2356 ELSE
2357 hr_utility.set_location('py_za_tx_01032012.SeaCalc',18);
2358 trc_TotLibFB := trc_TotLibNI;
2359 END IF;
2360 ELSE
2361 hr_utility.set_location('py_za_tx_01032012.SeaCalc',19);
2362 trc_FrnBenErn := trc_NorErn;
2363 trc_TxbFrnInc := trc_TxbNorInc;
2364 trc_TotLibFB := trc_TotLibNI;
2365 END IF;
2366
2367 -- Annual Payments
2368 --
2369 -- Run Annual Payments
2370 trc_AnnPymPtd := bal_TOT_TXB_AP_RUN;
2371 -- Skip the calculation if there is No Income
2372 IF trc_AnnPymPtd <> 0 THEN
2373 hr_utility.set_location('py_za_tx_01032012.SeaCalc',20);
2374 -- Annual Payments Earnings
2375 trc_AnnPymErn := trc_AnnPymPtd + trc_FrnBenErn;
2376
2377 --TYS2010
2378 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2379 -- Taxable Annual Payments Income
2380 trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
2381 trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
2382
2383 -- Threshold Check
2384 IF trc_TxbAnnPymInc >= trc_Threshold THEN
2385 hr_utility.set_location('py_za_tx_01032012.SeaCalc',21);
2386 -- Tax Liability
2387 trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2388 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibFB);
2389 trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibFB);
2390 trc_LibFpAP := trc_LibFyAP + bal_MED_TAX_CR_USED_AP_RUN;
2391
2392 -- Start Medical Tax Credit Changes
2393 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2394 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
2395 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AP_RUN
2396 ,p_Tx_RUN => trc_LibFpAP
2397 ,p_Tx_YTD => 0
2398 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAP
2399 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAP_Upd
2400 );
2401 trc_LibFpAP_Upd := trc_LibFpAP - trc_MedTxCrUsedAP_Upd;
2402 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAP,0);
2403 hr_utility.set_location(' trc_MedTxCrUsedAP:'||trc_MedTxCrUsedAP,10);
2404 hr_utility.set_location('trc_MedTxCrUsedAP_Upd:'||trc_MedTxCrUsedAP_Upd,10);
2405 hr_utility.set_location(' trc_LibFpAP_Upd:'||trc_LibFpAP_Upd,10);
2406 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2407 -- End Medical Tax Credit Changes
2408
2409 ELSE
2410 hr_utility.set_location('py_za_tx_01032012.SeaCalc',22);
2411 trc_TotLibAP := trc_TotLibFB;
2412 END IF;
2413 ELSE
2414 hr_utility.set_location('py_za_tx_01032012.SeaCalc',23);
2415 trc_AnnPymErn := trc_FrnBenErn;
2416 trc_TxbAnnPymInc := trc_TxbFrnInc;
2417 trc_TotLibAP := trc_TotLibFB;
2418 END IF;
2419
2420 trc_LibFpNI := trc_LibFpNI_Upd;
2421 trc_LibFpFB := trc_LibFpFB_Upd;
2422 trc_LibFpAP := trc_LibFpAP_Upd;
2423
2424 -- Net Pay Validation
2425 --
2426 py_za_tx_utl_01032012.ValidateTaxOns;
2427
2428 hr_utility.set_location('py_za_tx_01032012.SeaCalc',24);
2429
2430 -- Set IT3A Indicator
2431 --
2432 IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
2433 hr_utility.set_location('py_za_tx_01032012.SeaCalc',25);
2434 trc_It3Ind := 0; -- Over Lim
2435 ELSE
2436 hr_utility.set_location('py_za_tx_01032012.SeaCalc',26);
2437 trc_It3Ind := 1; -- Under Lim
2438 END IF;
2439 END IF;
2440
2441 -- Normal Income
2442 WrtHrTrc('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
2443 WrtHrTrc('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
2444 WrtHrTrc('trc_NorErn: '||to_char(trc_NorErn));
2445 WrtHrTrc('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
2446 WrtHrTrc('trc_TxbNorIncWoDon:'||to_char(trc_TxbNorIncWoDon));
2447 WrtHrTrc('trc_TotLibNI: '||to_char(trc_TotLibNI));
2448 WrtHrTrc('trc_LibFyNI: '||to_char(trc_LibFyNI));
2449 WrtHrTrc('trc_LibFpNI: '||to_char(trc_LibFpNI));
2450 -- Fringe Benefits
2451 WrtHrTrc('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
2452 WrtHrTrc('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
2453 WrtHrTrc('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
2454 WrtHrTrc('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
2455 WrtHrTrc('trc_TxbFrnIncWoDon:'||to_char(trc_TxbFrnIncWoDon));
2456 WrtHrTrc('trc_TotLibFB: '||to_char(trc_TotLibFB));
2457 WrtHrTrc('trc_LibFyFB: '||to_char(trc_LibFyFB));
2458 WrtHrTrc('trc_LibFpFB: '||to_char(trc_LibFpFB));
2459 -- Annual Payments
2460 WrtHrTrc('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
2461 WrtHrTrc('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
2462 WrtHrTrc('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
2463 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
2464 WrtHrTrc('trc_TxbAnnPymIncWoDon:'||to_char(trc_TxbAnnPymIncWoDon));
2465 WrtHrTrc('trc_TotLibAP: '||to_char(trc_TotLibAP));
2466 WrtHrTrc('trc_LibFyAP: '||to_char(trc_LibFyAP));
2467 WrtHrTrc('trc_LibFpAP: '||to_char(trc_LibFpAP));
2468
2469 EXCEPTION
2470 WHEN OTHERS THEN
2471 IF xpt_Msg = 'No Error' THEN
2472 xpt_Msg := 'SeaCalc: '||TO_CHAR(SQLCODE);
2473 END IF;
2474 RAISE xpt_E;
2475 END SeaCalc;
2476
2477 -------------------------------------------------------------------------------
2478 -- SitCalc --
2479 -- End of Year Tax Calculation --
2480 -------------------------------------------------------------------------------
2481 PROCEDURE SitCalc AS
2482 -- Variables
2483 --
2484 l_Sl BOOLEAN;
2485 l_Np BALANCE;
2486
2487 BEGIN
2488
2489 hr_utility.set_location('py_za_tx_01032012.SitCalc',1);
2490 -- Identify the calculation
2491 --
2492 trc_CalTyp := 'SitCalc';
2493
2494 -- Update Global Balance Values with correct TAXABLE values
2495 --
2496 --Fix for bug#10372926
2497 --py_za_tx_utl_01032012.TrvAll;
2498
2499 hr_utility.set_location('py_za_tx_01032012.SitCalc',2);
2500
2501 bal_TOT_TXB_PO_YTD := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
2502
2503 -- Ytd Taxable Income
2504 --
2505 trc_TxbIncYtd :=
2506 ( bal_TOT_TXB_NI_YTD
2507 + bal_TOT_TXB_FB_YTD
2508 + bal_TOT_TXB_TA_YTD
2509 + bal_BP_YTD
2510 );
2511 hr_utility.set_location('py_za_tx_01032012.SitCalc',3);
2512
2513 -- Site Factor
2514 --
2515 trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032012.DaysWorked;
2516
2517 hr_utility.set_location('py_za_tx_01032012.SitCalc',4);
2518
2519 -- Rebates
2520 py_za_tx_utl_01032012.SetRebates;
2521
2522 -- Abatements
2523 py_za_tx_utl_01032012.Abatements;
2524
2525
2526 trc_curMedTxCrEle := greatest(bal_MED_AID_TAX_CR_YTD + bal_ANN_MED_AID_TAX_CR_YTD,0,bal_MED_AID_TAX_CR_USED_YTD + bal_MED_AID_TAX_CR_USED_LS_YTD);
2527
2528 hr_utility.set_location('py_za_tx_01032012.SitCalc',5);
2529
2530 -- Deemed Remuneration
2531 --
2532 -- Run Deemed Remuneration
2533 trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
2534
2535 -- Skip the calculation if there is No Income
2536 IF trc_DmdRmnRun <> 0 THEN
2537 hr_utility.set_location('py_za_tx_01032012.SitCalc',6);
2538 -- Taxable Deemed Remuneration
2539 trc_TxbDmdRmn := trc_DmdRmnRun;
2540 -- Threshold Check
2541 IF trc_TxbDmdRmn >= trc_Threshold THEN
2542 hr_utility.set_location('py_za_tx_01032012.SitCalc',7);
2543 -- Tax Liability
2544 trc_TotLibDR := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbDmdRmn);
2545 trc_LibFyDR := (trc_TotLibDR - 0) / trc_SitFactor;
2546 trc_TotLibDR := greatest(trc_TotLibDR,0);
2547 trc_LibFpDR := trc_LibFyDR - (bal_TX_ON_DR_YTD + bal_MED_TAX_CR_USED_DR_YTD);
2548
2549 -- Start Medical Tax Credit Changes
2550 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2551 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
2552 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_DR_YTD
2553 ,p_Tx_RUN => trc_LibFpDR
2554 ,p_Tx_YTD => bal_TX_ON_DR_YTD
2555 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedDR
2556 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedDR_Upd
2557 );
2558 trc_LibFpDR_Upd := trc_LibFpDR - trc_MedTxCrUsedDR_Upd;
2559 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedDR,0);
2560 hr_utility.set_location(' trc_MedTxCrUsedDR:'||trc_MedTxCrUsedDR,10);
2561 hr_utility.set_location('trc_MedTxCrUsedDR_Upd:'||trc_MedTxCrUsedDR_Upd,10);
2562 hr_utility.set_location(' trc_LibFpDR_Upd:'||trc_LibFpDR_Upd,10);
2563 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2564 -- End Medical Tax Credit Changes
2565
2566 ELSE
2567 hr_utility.set_location('py_za_tx_01032012.SitCalc',8);
2568 -- Set Cascade Figures and Refund
2569 trc_TotLibDR := 0;
2570 trc_LibFpDR := -1 * bal_TX_ON_DR_YTD;
2571 trc_MedTxCrUsedDR_Upd := -1 * bal_MED_TAX_CR_USED_DR_YTD;
2572 trc_LibFpDR_Upd := trc_LibFpDR;
2573 trc_LibFpDROvr := TRUE;
2574 END IF;
2575 ELSE
2576 hr_utility.set_location('py_za_tx_01032012.SitCalc',9);
2577 -- Set Cascade Figures and Refund
2578 trc_TxbDmdRmn := 0;
2579 trc_TotLibDR := 0;
2580 trc_LibFpDR := -1 * bal_TX_ON_DR_YTD;
2581 trc_MedTxCrUsedDR_Upd := -1 * bal_MED_TAX_CR_USED_DR_YTD;
2582 trc_LibFpDR_Upd := trc_LibFpDR;
2583 trc_LibFpDROvr := TRUE;
2584 END IF;
2585
2586 hr_utility.set_location('py_za_tx_01032012.SitCalc',10);
2587
2588 -- Normal Income
2589 --
2590 -- Ytd Normal Income
2591 trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
2592 -- Skip the calculation if there is No Income
2593 IF trc_NorIncYtd <> 0 THEN
2594 hr_utility.set_location('py_za_tx_01032012.SitCalc',11);
2595 -- Normal Earnings
2596 trc_NorErn := trc_NorIncYtd * trc_SitFactor;
2597 -- Taxable Normal Income
2598 --TYS2010
2599 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2600 trc_TxbNorIncWoDon := trc_NorErn - trc_PerTotAbm;
2601 trc_TxbNorInc :=trc_TxbNorIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbNorIncWoDon,trc_PerDonAmt);
2602
2603 -- Threshold Check
2604 IF trc_TxbNorInc >= trc_Threshold THEN
2605 hr_utility.set_location('py_za_tx_01032012.SitCalc',12);
2606 -- Tax Liability
2607 trc_TotLibNI := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbNorInc);
2608 trc_LibFyNI := (trc_TotLibNI - least(trc_TotLibNI,trc_TotLibDR)) / trc_SitFactor;
2609 trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibDR);
2610 trc_LibFpNI := trc_LibFyNI - (bal_TX_ON_NI_YTD + bal_MED_TAX_CR_USED_NI_YTD);
2611
2612 -- Start Medical Tax Credit Changes
2613 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2614 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
2615 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_NI_YTD
2616 ,p_Tx_RUN => trc_LibFpNI
2617 ,p_Tx_YTD => bal_TX_ON_NI_YTD
2618 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedNI
2619 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedNI_Upd
2620 );
2621 trc_LibFpNI_Upd := trc_LibFpNI - trc_MedTxCrUsedNI_Upd;
2622 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNI,0);
2623 hr_utility.set_location(' trc_MedTxCrUsedNI:'||trc_MedTxCrUsedNI,10);
2624 hr_utility.set_location('trc_MedTxCrUsedNI_Upd:'||trc_MedTxCrUsedNI_Upd,10);
2625 hr_utility.set_location(' trc_LibFpNI_Upd:'||trc_LibFpNI_Upd,10);
2626 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2627 -- End Medical Tax Credit Changes
2628
2629 ELSE
2630 hr_utility.set_location('py_za_tx_01032012.SitCalc',13);
2631 -- Set Cascade Figures and Refund
2632 trc_TotLibNI := trc_TotLibDR;
2633
2634 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
2635 trc_MedTxCrUsedNI_Upd := -1 * bal_MED_TAX_CR_USED_NI_YTD;
2636 trc_LibFpNI_Upd := trc_LibFpNI;
2637 trc_LibFpNIOvr := TRUE;
2638 END IF;
2639 ELSE
2640 hr_utility.set_location('py_za_tx_01032012.SitCalc',14);
2641 -- Set Cascade Figures and Refund
2642 trc_NorErn := 0;
2643 trc_TxbNorInc := 0;
2644 trc_TotLibNI := trc_TotLibDR;
2645 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
2646 trc_MedTxCrUsedNI_Upd := -1 * bal_MED_TAX_CR_USED_NI_YTD;
2647 trc_LibFpNI_Upd := trc_LibFpNI;
2648 trc_LibFpNIOvr := TRUE;
2649 END IF;
2650
2651 -- Fringe Benefits
2652 --
2653 -- Ytd Fringe Benefits
2654 trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
2655 -- Skip the calculation if there is No Income
2656 IF trc_FrnBenYtd <> 0 THEN
2657 hr_utility.set_location('py_za_tx_01032012.SitCalc',15);
2658 -- Fringe Benefit Earnings
2659 trc_FrnBenErn := trc_FrnBenYtd * trc_SitFactor + trc_NorErn;
2660 -- Taxable Fringe Income
2661 --TYS2010
2662 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2663 trc_TxbFrnIncWoDon := trc_FrnBenErn - trc_PerTotAbm;
2664 trc_TxbFrnInc :=trc_TxbFrnIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbFrnIncWoDon,trc_PerDonAmt);
2665
2666 -- Threshold Check
2667 IF trc_TxbFrnInc >= trc_Threshold THEN
2668 hr_utility.set_location('py_za_tx_01032012.SitCalc',16);
2669 -- Tax Liability
2670 trc_TotLibFB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbFrnInc);
2671 trc_LibFyFB := (trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI)) / trc_SitFactor;
2672 trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
2673 trc_LibFpFB := trc_LibFyFB - (bal_TX_ON_FB_YTD + bal_MED_TAX_CR_USED_FB_YTD);
2674
2675 -- Start Medical Tax Credit Changes
2676 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2677 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
2678 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_FB_YTD
2679 ,p_Tx_RUN => trc_LibFpFB
2680 ,p_Tx_YTD => bal_TX_ON_FB_YTD
2681 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedFB
2682 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedFB_Upd
2683 );
2684 trc_LibFpFB_Upd := trc_LibFpFB - trc_MedTxCrUsedFB_Upd;
2685 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedFB,0);
2686 hr_utility.set_location(' trc_MedTxCrUsedFB:'||trc_MedTxCrUsedFB,10);
2687 hr_utility.set_location('trc_MedTxCrUsedFB_Upd:'||trc_MedTxCrUsedFB_Upd,10);
2688 hr_utility.set_location(' trc_LibFpFB_Upd:'||trc_LibFpFB_Upd,10);
2689 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2690 -- End Medical Tax Credit Changes
2691
2692 ElSE
2693 hr_utility.set_location('py_za_tx_01032012.SitCalc',17);
2694 -- Set Cascade Figures and Refund
2695 trc_TotLibFB := trc_TotLibNI;
2696
2697 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
2698 trc_MedTxCrUsedFB_Upd := -1 * bal_MED_TAX_CR_USED_FB_YTD;
2699 trc_LibFpFB_Upd := trc_LibFpFB;
2700 trc_LibFpFBOvr := TRUE;
2701 END IF;
2702 ELSE
2703 hr_utility.set_location('py_za_tx_01032012.SitCalc',18);
2704 -- Set Cascade Figures and Refund
2705 trc_FrnBenErn := trc_NorErn;
2706 trc_TxbFrnInc := trc_TxbNorInc;
2707 trc_TotLibFB := trc_TotLibNI;
2708 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
2709 trc_MedTxCrUsedFB_Upd := -1 * bal_MED_TAX_CR_USED_FB_YTD;
2710 trc_LibFpFB_Upd := trc_LibFpFB;
2711 trc_LibFpFBOvr := TRUE;
2712 END IF;
2713
2714 -- Travel Allowance
2715 --
2716 -- Ytd Travel Allowance
2717 trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
2718 -- Skip the calculation if there is No Income
2719 IF trc_TrvAllYtd <> 0 THEN
2720 hr_utility.set_location('py_za_tx_01032012.SitCalc',19);
2721 -- Travel Earnings
2722 trc_TrvAllErn := trc_TrvAllYtd * trc_SitFactor + trc_FrnBenErn;
2723 -- Taxable Travel Income
2724 --TYS2010
2725 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2726 trc_TxbTrvIncWoDon := trc_TrvAllErn - trc_PerTotAbm;
2727 trc_TxbTrvInc :=trc_TxbTrvIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbTrvIncWoDon,trc_PerDonAmt);
2728
2729 -- Threshold Check
2730 IF trc_TxbTrvInc >= trc_Threshold THEN
2731 hr_utility.set_location('py_za_tx_01032012.SitCalc',20);
2732 -- Tax Liability
2733 trc_TotLibTA := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbTrvInc);
2734 trc_LibFyTA := (trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB)) / trc_SitFactor;
2735 trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
2736 trc_LibFpTA := trc_LibFyTA - (bal_TX_ON_TA_YTD + bal_MED_TAX_CR_USED_TA_YTD);
2737
2738 -- Start Medical Tax Credit Changes
2739 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2740 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
2741 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_TA_YTD
2742 ,p_Tx_RUN => trc_LibFpTA
2743 ,p_Tx_YTD => bal_TX_ON_TA_YTD
2744 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedTA
2745 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedTA_Upd
2746 );
2747 trc_LibFpTA_Upd := trc_LibFpTA - trc_MedTxCrUsedTA_Upd;
2748 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedTA,0);
2749 hr_utility.set_location(' trc_MedTxCrUsedTA:'||trc_MedTxCrUsedTA,10);
2750 hr_utility.set_location('trc_MedTxCrUsedTA_Upd:'||trc_MedTxCrUsedTA_Upd,10);
2751 hr_utility.set_location(' trc_LibFpTA_Upd:'||trc_LibFpTA_Upd,10);
2752 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2753 -- End Medical Tax Credit Changes
2754
2755 ELSE
2756 hr_utility.set_location('py_za_tx_01032012.SitCalc',21);
2757 -- Set Cascade Figures and Refund
2758 trc_TotLibTA := trc_TotLibFB;
2759 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
2760 trc_MedTxCrUsedTA_Upd := -1 * bal_MED_TAX_CR_USED_TA_YTD;
2761 trc_LibFpTA_Upd := trc_LibFpTA;
2762 trc_LibFpTAOvr := TRUE;
2763 END IF;
2764 ELSE
2765 hr_utility.set_location('py_za_tx_01032012.SitCalc',22);
2766 -- Set Cascade Figures and Refund
2767 trc_TrvAllErn := trc_FrnBenErn;
2768 trc_TxbTrvInc := trc_TxbFrnInc;
2769 trc_TotLibTA := trc_TotLibFB;
2770 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
2771 trc_MedTxCrUsedTA_Upd := -1 * bal_MED_TAX_CR_USED_TA_YTD;
2772 trc_LibFpTA_Upd := trc_LibFpTA;
2773 trc_LibFpTAOvr := TRUE;
2774 END IF;
2775
2776 -- Bonus Provision
2777 --
2778 -- Ytd Bonus Prvision
2779 trc_BonProYtd := bal_BP_YTD;
2780 -- Skip the calculation if there is No Income
2781 IF trc_BonProYtd <> 0 THEN
2782 hr_utility.set_location('py_za_tx_01032012.SitCalc',23);
2783 -- Bonus Provision Earnings
2784 trc_BonProErn := trc_BonProYtd * trc_SitFactor + trc_TrvAllErn;
2785 -- Taxable Bonus Provision Income
2786 --TYS2010
2787 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2788 trc_TxbBonProIncWoDon := trc_BonProErn - trc_PerTotAbm;
2789 trc_TxbBonProInc :=trc_TxbBonProIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbBonProIncWoDon,trc_PerDonAmt);
2790
2791 -- Threshold Check
2792 IF trc_TxbBonProInc >= trc_Threshold THEN
2793 hr_utility.set_location('py_za_tx_01032012.SitCalc',24);
2794 -- Tax Liability
2795 trc_TotLibBP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbBonProInc);
2796 trc_LibFyBP := (trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA)) / trc_SitFactor;
2797 trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
2798 trc_LibFpBP := trc_LibFyBP - (bal_TX_ON_BP_YTD + bal_MED_TAX_CR_USED_BP_YTD);
2799
2800 -- Start Medical Tax Credit Changes
2801 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2802 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
2803 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_BP_YTD
2804 ,p_Tx_RUN => trc_LibFpBP
2805 ,p_Tx_YTD => bal_TX_ON_BP_YTD
2806 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedBP
2807 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedBP_Upd
2808 );
2809 trc_LibFpBP_Upd := trc_LibFpBP - trc_MedTxCrUsedBP_Upd;
2810 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedBP,0);
2811 hr_utility.set_location(' trc_MedTxCrUsedBP:'||trc_MedTxCrUsedBP,10);
2812 hr_utility.set_location('trc_MedTxCrUsedBP_Upd:'||trc_MedTxCrUsedBP_Upd,10);
2813 hr_utility.set_location(' trc_LibFpBP_Upd:'||trc_LibFpBP_Upd,10);
2814 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2815 -- End Medical Tax Credit Changes
2816
2817 ELSE
2818 hr_utility.set_location('py_za_tx_01032012.SitCalc',25);
2819 -- Set Cascade Figures and Refund
2820 trc_TotLibBP := trc_TotLibTA;
2821 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
2822 trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_YTD;
2823 trc_LibFpBP_Upd := trc_LibFpBP;
2824 trc_LibFpBPOvr := TRUE;
2825 END IF;
2826 ELSE
2827 hr_utility.set_location('py_za_tx_01032012.SitCalc',26);
2828 -- Set Cascade Figures and Refund
2829 trc_BonProErn := trc_TrvAllErn;
2830 trc_TxbBonProInc := trc_TxbTrvInc;
2831 trc_TotLibBP := trc_TotLibTA;
2832 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
2833 trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_YTD;
2834 trc_LibFpBP_Upd := trc_LibFpBP;
2835 trc_LibFpBPOvr := TRUE;
2836 END IF;
2837
2838 -- Annual Bonus
2839 --
2840 -- Ytd Annual Bonus
2841 trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
2842 -- Skip the calculation if there is No Income
2843 IF trc_AnnBonYtd <> 0 THEN
2844 hr_utility.set_location('py_za_tx_01032012.SitCalc',27);
2845 -- Annual Bonus Earnings
2846 trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
2847 -- Taxable Annual Bonus Income
2848 --TYS2010
2849 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2850 trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
2851 trc_TxbAnnBonInc :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
2852
2853 -- Threshold Check
2854 IF trc_TxbAnnBonInc >= trc_Threshold THEN
2855 hr_utility.set_location('py_za_tx_01032012.SitCalc',28);
2856 -- Tax Liability
2857 trc_TotLibAB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnBonInc);
2858 trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
2859 trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
2860 hr_utility.set_location('py_za_tx_01032012.SitCalc',29);
2861 -- Check Bonus Provision
2862 IF trc_BonProYtd <> 0 THEN
2863 hr_utility.set_location('py_za_tx_01032012.SitCalc',30);
2864 -- Check Bonus Provision Frequency
2865 IF dbi_BP_TX_RCV = 'B' OR py_za_tx_utl_01032012.SitePeriod THEN
2866 hr_utility.set_location('py_za_tx_01032012.SitCalc',31);
2867 trc_LibFpAB :=
2868 trc_LibFyAB - (bal_TX_ON_BP_YTD
2869 + bal_MED_TAX_CR_USED_BP_YTD
2870 + trc_LibFpBP
2871 + bal_TX_ON_AB_YTD
2872 + bal_MED_TAX_CR_USED_AB_YTD);
2873
2874 -- Start Medical Tax Credit Changes
2875 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2876 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
2877 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AB_YTD
2878 ,p_Tx_RUN => trc_LibFpAB
2879 ,p_Tx_YTD => bal_TX_ON_AB_YTD
2880 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAB
2881 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAB_Upd
2882 );
2883 trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
2884 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
2885 hr_utility.set_location(' trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
2886 hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
2887 hr_utility.set_location(' trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
2888 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2889 -- End Medical Tax Credit Changes
2890
2891 ELSE
2892 hr_utility.set_location('py_za_tx_01032012.SitCalc',32);
2893 trc_LibFpAB := 0;
2894 END IF;
2895 ELSE
2896 hr_utility.set_location('py_za_tx_01032012.SitCalc',33);
2897 trc_LibFpAB := trc_LibFyAB - (bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
2898
2899 -- Start Medical Tax Credit Changes
2900 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2901 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
2902 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AB_YTD
2903 ,p_Tx_RUN => trc_LibFpAB
2904 ,p_Tx_YTD => bal_TX_ON_AB_YTD
2905 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAB
2906 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAB_Upd
2907 );
2908 trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
2909 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
2910 hr_utility.set_location(' trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
2911 hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
2912 hr_utility.set_location(' trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
2913 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2914 -- End Medical Tax Credit Changes
2915
2916 END IF;
2917 ELSE
2918 hr_utility.set_location('py_za_tx_01032012.SitCalc',34);
2919 -- Set Cascade Figures and Refund
2920 trc_TotLibAB := trc_TotLibTA;
2921 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
2922 trc_MedTxCrUsedAB_Upd := -1 * bal_MED_TAX_CR_USED_AB_YTD;
2923 trc_LibFpAB_Upd := trc_LibFpAB ;
2924 trc_LibFpABOvr := TRUE;
2925 END IF;
2926 ELSE
2927 hr_utility.set_location('py_za_tx_01032012.SitCalc',35);
2928 -- Set Cascade Figures and Refund
2929 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
2930 trc_MedTxCrUsedAB_Upd := -1 * bal_MED_TAX_CR_USED_AB_YTD;
2931 trc_LibFpAB_Upd := trc_LibFpAB ;
2932 trc_LibFpABOvr := TRUE;
2933
2934 IF dbi_BP_TX_RCV = 'A' AND py_za_tx_utl_01032012.SitePeriod THEN
2935 hr_utility.set_location('py_za_tx_01032012.SitCalc',36);
2936 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
2937 trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_PTD;
2938 trc_LibFpBP_Upd := trc_LibFpBP;
2939 trc_LibFpBPOvr := TRUE;
2940 --Commented below line for bug 9438325
2941 --trc_LibFpAPOvr := TRUE;
2942 trc_AnnBonErn := trc_TrvAllErn;
2943 trc_TxbAnnBonInc := trc_TxbTrvInc;
2944 trc_TotLibAB := trc_TotLibTA;
2945 ELSE
2946 hr_utility.set_location('py_za_tx_01032012.SitCalc',37);
2947 trc_AnnBonErn := trc_BonProErn;
2948 trc_TxbAnnBonInc := trc_TxbBonProInc;
2949 trc_TotLibAB := trc_TotLibBP;
2950 END IF;
2951 END IF;
2952
2953 -- Annual Payments
2954 --
2955 -- Ytd Annual Payments
2956 trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
2957 -- Skip the calculation if there is No Income
2958 IF trc_AnnPymYtd <> 0 THEN
2959 hr_utility.set_location('py_za_tx_01032012.SitCalc',38);
2960 -- Annual Payments Earnings
2961 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
2962 --TYS2010
2963 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
2964 -- Taxable Annual Payments Income
2965 trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
2966
2967 trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
2968
2969 -- Threshold Check
2970 IF trc_TxbAnnPymInc >= trc_Threshold THEN
2971 hr_utility.set_location('py_za_tx_01032012.SitCalc',39);
2972 -- Tax Liability
2973 trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2974 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
2975 trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
2976 trc_LibFpAP := trc_LibFyAP - (bal_TX_ON_AP_YTD + bal_MED_TAX_CR_USED_AP_YTD);
2977
2978 -- Start Medical Tax Credit Changes
2979 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
2980 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
2981 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AP_YTD
2982 ,p_Tx_RUN => trc_LibFpAP
2983 ,p_Tx_YTD => bal_TX_ON_AP_YTD
2984 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAP
2985 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAP_Upd
2986 );
2987 trc_LibFpAP_Upd := trc_LibFpAP - trc_MedTxCrUsedAP_Upd;
2988 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAP,0);
2989 hr_utility.set_location(' trc_MedTxCrUsedAP:'||trc_MedTxCrUsedAP,10);
2990 hr_utility.set_location('trc_MedTxCrUsedAP_Upd:'||trc_MedTxCrUsedAP_Upd,10);
2991 hr_utility.set_location(' trc_LibFpAP_Upd:'||trc_LibFpAP_Upd,10);
2992 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
2993 -- End Medical Tax Credit Changes
2994
2995 ELSE
2996 hr_utility.set_location('py_za_tx_01032012.SitCalc',40);
2997 -- Set Cascade Figures and Refund
2998 trc_TotLibAP := trc_TotLibAB;
2999 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
3000 trc_MedTxCrUsedAP_Upd := -1 * bal_MED_TAX_CR_USED_AP_YTD;
3001 trc_LibFpAP_Upd := trc_LibFpAP ;
3002 trc_LibFpAPOvr := TRUE;
3003 END IF;
3004 ELSE
3005 hr_utility.set_location('py_za_tx_01032012.SitCalc',41);
3006 -- Set Cascade Figures and Refund
3007 trc_AnnPymErn := trc_AnnBonErn;
3008 trc_TxbAnnPymInc := trc_TxbAnnBonInc;
3009 trc_TotLibAP := trc_TotLibAB;
3010 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
3011 trc_MedTxCrUsedAP_Upd := -1 * bal_MED_TAX_CR_USED_AP_YTD;
3012 trc_LibFpAP_Upd := trc_LibFpAP ;
3013 trc_LibFpAPOvr := TRUE;
3014 END IF;
3015
3016 -- Public Office Allowance
3017 --
3018 -- Ytd Public Office Allowance
3019 trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
3020 -- Skip the calculation if there is No Income
3021 IF trc_PblOffYtd <> 0 THEN
3022 hr_utility.set_location('py_za_tx_01032012.SitCalc',42);
3023 -- Public Office Allowance Earnings
3024 trc_PblOffErn := trc_PblOffYtd * trc_SitFactor + trc_AnnPymErn;
3025 -- Taxable Public Office Allowance
3026 --TYS2010
3027 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3028 trc_TxbPblOffIncWoDon := trc_PblOffErn - trc_AnnTotAbm;
3029
3030 trc_TxbPblOffInc :=trc_TxbPblOffIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbPblOffIncWoDon,trc_AnnDonAmt);
3031
3032 -- Threshold Check
3033 IF trc_TxbPblOffInc >= trc_Threshold THEN
3034 hr_utility.set_location('py_za_tx_01032012.SitCalc',43);
3035 -- Tax Liability
3036 trc_TotLibPO := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbPblOffInc);
3037 trc_LibFyPO := (trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP)) / trc_SitFactor;
3038 trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
3039 trc_LibFpPO := trc_LibFyPO - (bal_TX_ON_PO_YTD + bal_MED_TAX_CR_USED_PO_YTD);
3040
3041 -- Start Medical Tax Credit Changes
3042 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3043 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
3044 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_PO_YTD
3045 ,p_Tx_RUN => trc_LibFpPO
3046 ,p_Tx_YTD => bal_TX_ON_PO_YTD
3047 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedPO
3048 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedPO_Upd
3049 );
3050 trc_LibFpPO_Upd := trc_LibFpPO - trc_MedTxCrUsedPO_Upd;
3051 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedPO,0);
3052 hr_utility.set_location(' trc_MedTxCrUsedPO:'||trc_MedTxCrUsedPO,10);
3053 hr_utility.set_location('trc_MedTxCrUsedPO_Upd:'||trc_MedTxCrUsedPO_Upd,10);
3054 hr_utility.set_location(' trc_LibFpPO_Upd:'||trc_LibFpPO_Upd,10);
3055 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3056 -- End Medical Tax Credit Changes
3057
3058 ElSE
3059 hr_utility.set_location('py_za_tx_01032012.SitCalc',44);
3060 -- Set Cascade Figures and Refund
3061 trc_TotLibPO := trc_TotLibAP;
3062 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
3063 trc_MedTxCrUsedPO_Upd := -1 * bal_MED_TAX_CR_USED_PO_YTD;
3064 trc_LibFpPO_Upd := trc_LibFpPO;
3065 trc_LibFpPOOvr := TRUE;
3066 END IF;
3067 ELSE
3068 hr_utility.set_location('py_za_tx_01032012.SitCalc',45);
3069 -- Set Cascade Figures and Refund
3070 trc_PblOffErn := trc_AnnPymErn;
3071 trc_TxbPblOffInc := trc_TxbAnnPymInc;
3072 trc_TotLibPO := trc_TotLibAP;
3073 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
3074 trc_MedTxCrUsedPO_Upd := -1 * bal_MED_TAX_CR_USED_PO_YTD;
3075 trc_LibFpPO_Upd := trc_LibFpPO;
3076 trc_LibFpPOOvr := TRUE;
3077 END IF;
3078
3079 -- Net to Gross Annual Payments.
3080 -- Ytd Net to Gross Annual Payments
3081 trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
3082 -- Skip the calculation if there is No Income
3083 IF trc_AnnPymNtgYtd <> 0 THEN
3084 hr_utility.set_location('py_za_tx_01032012.SitCalc',46);
3085 -- Annual Payments Net to Gross Earnings
3086 trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_PblOffErn;
3087
3088 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3089 -- Taxable Annual Payments Income
3090 trc_TxbAnnPymNtgIncWoDon := trc_AnnPymNtgErn - trc_AnnTotAbm;
3091 trc_TxbAnnPymNtgInc :=trc_TxbAnnPymNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymNtgIncWoDon,trc_AnnDonAmt);
3092
3093 -- Threshold Check
3094 IF trc_TxbAnnPymNtgInc >= trc_Threshold THEN
3095 hr_utility.set_location('py_za_tx_01032012.SitCalc',47);
3096 -- Tax Liability
3097 trc_TotLibNtgAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymNtgInc);
3098 trc_LibFyNtgAP := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibPO);
3099 trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibPO);
3100
3101 trc_LibFpNtgAP := trc_LibFyNtgAP - (bal_TX_ON_AP_NTG_YTD+ bal_MED_TAX_CR_USED_NG_YTD);
3102
3103 -- Start Medical Tax Credit Changes
3104 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3105 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
3106 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_NG_YTD
3107 ,p_Tx_RUN => trc_LibFpNtgAP
3108 ,p_Tx_YTD => bal_TX_ON_AP_NTG_YTD
3109 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedNtgAP
3110 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedNtgAP_Upd
3111 );
3112 trc_LibFpNtgAP_Upd := trc_LibFpNtgAP - trc_MedTxCrUsedNtgAP_Upd;
3113 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgAP,0);
3114 hr_utility.set_location(' trc_MedTxCrUsedNtgAP:'||trc_MedTxCrUsedNtgAP,10);
3115 hr_utility.set_location('trc_MedTxCrUsedNtgAP_Upd:'||trc_MedTxCrUsedNtgAP_Upd,10);
3116 hr_utility.set_location(' trc_LibFpNtgAP_Upd:'||trc_LibFpNtgAP_Upd,10);
3117 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3118 -- End Medical Tax Credit Changes
3119
3120 ELSE
3121 hr_utility.set_location('py_za_tx_01032012.SitCalc',48);
3122 -- Set Cascade Figures and Refund
3123 trc_TotLibNtgAP := trc_TotLibPO;
3124 trc_LibFpNtgAP := -1 * bal_TX_ON_AP_NTG_YTD;
3125 trc_MedTxCrUsedNtgAP_Upd := -1 * bal_MED_TAX_CR_USED_NG_YTD;
3126 trc_LibFpNtgAP_Upd := trc_LibFpNtgAP;
3127 trc_LibFpNtgAPOvr := TRUE;
3128 END IF;
3129 ELSE
3130 hr_utility.set_location('py_za_tx_01032012.SitCalc',49);
3131 -- Set Cascade Figures and Refund
3132 trc_AnnPymNtgErn := trc_PblOffErn;
3133 trc_TxbAnnPymNtgInc := trc_TxbPblOffInc;
3134 trc_TotLibNtgAP := trc_TotLibPO;
3135 trc_LibFpNtgAP := -1 * bal_TX_ON_AP_NTG_YTD;
3136 trc_MedTxCrUsedNtgAP_Upd := -1 * bal_MED_TAX_CR_USED_NG_YTD;
3137 trc_LibFpNtgAP_Upd := trc_LibFpNtgAP;
3138 trc_LibFpNtgAPOvr := TRUE;
3139 END IF;
3140
3141 -- Ytd Net to Gross EE Debt due to Net to Gross Annual Payments
3142 trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
3143 -- Skip the calculation if there is No Income
3144 IF trc_AnnEEDbtNtgYtd <> 0 THEN
3145 hr_utility.set_location('py_za_tx_01032012.SitCalc',50);
3146 -- Annual EE Debt Net to Gross Earnings
3147 trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
3148
3149 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
3150 trc_TxbAnnEEDbtNtgIncWoDon := trc_AnnEEDbtNtgErn - trc_AnnTotNTGAbm;
3151 trc_TxbAnnEEDbtNtgInc :=trc_TxbAnnEEDbtNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnEEDbtNtgIncWoDon,trc_AnnDonAmt);
3152
3153 -- Threshold Check
3154 IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
3155 hr_utility.set_location('py_za_tx_01032012.SitCalc',51);
3156 -- Tax Liability
3157 trc_TotLibNtgEEDbt := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnEEDbtNtgInc);
3158 trc_LibFyNtgEEDbt := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
3159 trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
3160 trc_LibFpNtgEEDbt := trc_LibFyNtgEEDbt - (bal_TX_ON_EE_DBT_NTG_YTD + bal_MED_TAX_CR_USED_EE_YTD);
3161
3162 -- Start Medical Tax Credit Changes
3163 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3164 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
3165 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_EE_YTD
3166 ,p_Tx_RUN => trc_LibFpNtgEEDbt
3167 ,p_Tx_YTD => bal_TX_ON_EE_DBT_NTG_YTD
3168 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedNtgEEDbt
3169 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedNtgEEDbt_Upd
3170 );
3171 trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt - trc_MedTxCrUsedNtgEEDbt_Upd;
3172 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgEEDbt,0);
3173 hr_utility.set_location(' trc_MedTxCrUsedNtgEEDbt:'||trc_MedTxCrUsedNtgEEDbt,10);
3174 hr_utility.set_location('trc_MedTxCrUsedNtgEEDbt_Upd:'||trc_MedTxCrUsedNtgEEDbt_Upd,10);
3175 hr_utility.set_location(' trc_LibFpNtgEEDbt_Upd:'||trc_LibFpNtgEEDbt_Upd,10);
3176 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3177 -- End Medical Tax Credit Changes
3178
3179 ELSE
3180 hr_utility.set_location('py_za_tx_01032012.SitCalc',52);
3181 -- Set Cascade Figures and Refund
3182 trc_TotLibNtgEEDbt := trc_TotLibNtgAP;
3183 trc_LibFpNtgEEDbt := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
3184 trc_MedTxCrUsedNtgEEDbt_Upd := -1 * bal_MED_TAX_CR_USED_EE_YTD;
3185 trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt;
3186 trc_LibFpNtgEEDbtOvr := TRUE;
3187 END IF;
3188 ELSE
3189 hr_utility.set_location('py_za_tx_01032012.SitCalc',53);
3190 -- Set Cascade Figures and Refund
3191 trc_AnnEEDbtNtgErn := trc_AnnPymNtgErn;
3192 trc_TxbAnnEEDbtNtgInc := trc_TxbAnnPymNtgInc;
3193 trc_TotLibNtgEEDbt := trc_TotLibNtgAP;
3194 trc_LibFpNtgEEDbt := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
3195 trc_MedTxCrUsedNtgEEDbt_Upd := -1 * bal_MED_TAX_CR_USED_EE_YTD;
3196 trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt;
3197 trc_LibFpNtgEEDbtOvr := TRUE;
3198 END IF;
3199
3200 trc_LibFpDR := trc_LibFpDR_Upd;
3201 trc_LibFpNI := trc_LibFpNI_Upd;
3202 trc_LibFpFB := trc_LibFpFB_Upd;
3203 trc_LibFpTA := trc_LibFpTA_Upd;
3204 trc_LibFpBP := trc_LibFpBP_Upd;
3205 trc_LibFpAB := trc_LibFpAB_Upd;
3206 trc_LibFpAP := trc_LibFpAP_Upd;
3207 trc_LibFpPO := trc_LibFpPO_Upd;
3208 trc_LibFpNtgAP := trc_LibFpNtgAP_Upd;
3209 trc_LibFpNtgEEDbt := trc_LibFpNtgEEDbt_Upd;
3210
3211 -- Net Pay Validation
3212 --
3213 -- Net Pay of the Employee
3214 l_Np := bal_NET_PAY_RUN;
3215 -- Site Limit Check
3216 /* Commented for bug 8751513 as the value in trc_PblOffErn is duplicated because trc_TxbAnnPymInc holds that value
3217 IF trc_TxbAnnPymInc + trc_PblOffErn < glb_ZA_SIT_LIM THEN
3218 hr_utility.set_location('py_za_tx_01032012.SitCalc',54);
3219 l_Sl := TRUE;
3220 ELSE
3221 hr_utility.set_location('py_za_tx_01032012.SitCalc',47);
3222 l_Sl := FALSE;
3223 END IF;
3224 */
3225
3226 --Added for Net to Gross
3227 IF trc_TxbAnnEEDbtNtgInc < glb_ZA_SIT_LIM THEN
3228 hr_utility.set_location('py_za_tx_01032012.SitCalc',54);
3229 l_Sl := TRUE;
3230 ELSE
3231 hr_utility.set_location('py_za_tx_01032012.SitCalc',55);
3232 l_Sl := FALSE;
3233 END IF;
3234
3235 -- Allow Refund at last period for Non Cumulative Tax method
3236 -- Commented out for Bug 14195352
3237 /*
3238 IF (dbi_TX_MTD = 'N') THEN
3239 l_Sl := TRUE;
3240 END IF;
3241 */
3242
3243 py_za_tx_utl_01032012.ValidateTaxOns(p_Rf => l_Sl);
3244
3245 hr_utility.set_location('py_za_tx_01032012.SitCalc',56);
3246
3247 -- Set IT3A Indicator
3248 --
3249 /* Commented for bug 8751513 as the value in trc_PblOffErn is duplicated because trc_TxbAnnPymInc holds that value
3250 IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN */
3251 IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
3252 hr_utility.set_location('py_za_tx_01032012.SitCalc',57);
3253 trc_It3Ind := 0; -- Over Lim
3254 ELSE
3255 hr_utility.set_location('py_za_tx_01032012.SitCalc',58);
3256 trc_It3Ind := 1; -- Under Lim
3257 END IF;
3258
3259 -- Calculate Total Taxable Income and pass out
3260 --
3261 /* Commented for bug 8751513 as the value in trc_PblOffErn is duplicated because trc_TxbAnnPymInc holds that value
3262 trc_OUpdFig := (trc_TxbAnnPymInc + trc_PblOffErn) - bal_TOT_TXB_INC_ITD; */
3263 trc_OUpdFig := trc_TxbAnnEEDbtNtgInc - bal_TOT_TXB_INC_ITD;
3264
3265 hr_utility.set_location('py_za_tx_01032012.SitCalc',59);
3266
3267 -- Deemed Remuneration
3268 WrtHrTrc('trc_TxbDmdRmn: '||to_char(trc_TxbDmdRmn));
3269 WrtHrTrc('trc_TotLibDR: '||to_char(trc_TotLibDR));
3270 WrtHrTrc('trc_LibFyDR: '||to_char(trc_LibFyDR));
3271 WrtHrTrc('trc_LibFpDR: '||to_char(trc_LibFpDR));
3272 -- Base Income
3273 WrtHrTrc('trc_BseErn: '||to_char(trc_BseErn));
3274 WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
3275 WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
3276 -- Normal Income
3277 WrtHrTrc('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
3278 WrtHrTrc('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
3279 WrtHrTrc('trc_NorErn: '||to_char(trc_NorErn));
3280 WrtHrTrc('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
3281 WrtHrTrc('trc_TxbNorIncWoDon: '||to_char(trc_TxbNorIncWoDon));
3282 WrtHrTrc('trc_TotLibNI: '||to_char(trc_TotLibNI));
3283 WrtHrTrc('trc_LibFyNI: '||to_char(trc_LibFyNI));
3284 WrtHrTrc('trc_LibFpNI: '||to_char(trc_LibFpNI));
3285 -- Fringe Benefits
3286 WrtHrTrc('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
3287 WrtHrTrc('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
3288 WrtHrTrc('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
3289 WrtHrTrc('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
3290 WrtHrTrc('trc_TxbFrnIncWoDon: '||to_char(trc_TxbFrnIncWoDon));
3291 WrtHrTrc('trc_TotLibFB: '||to_char(trc_TotLibFB));
3292 WrtHrTrc('trc_LibFyFB: '||to_char(trc_LibFyFB));
3293 WrtHrTrc('trc_LibFpFB: '||to_char(trc_LibFpFB));
3294 -- Travel Allowance
3295 WrtHrTrc('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
3296 WrtHrTrc('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
3297 WrtHrTrc('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
3298 WrtHrTrc('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
3299 WrtHrTrc('trc_TxbTrvIncWoDon: '||to_char(trc_TxbTrvIncWoDon));
3300 WrtHrTrc('trc_TotLibTA: '||to_char(trc_TotLibTA));
3301 WrtHrTrc('trc_LibFyTA: '||to_char(trc_LibFyTA));
3302 WrtHrTrc('trc_LibFpTA: '||to_char(trc_LibFpTA));
3303 -- Bonus Provision
3304 WrtHrTrc('trc_BonProYtd: '||to_char(trc_BonProYtd));
3305 WrtHrTrc('trc_BonProPtd: '||to_char(trc_BonProPtd));
3306 WrtHrTrc('trc_BonProErn: '||to_char(trc_BonProErn));
3307 WrtHrTrc('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
3308 WrtHrTrc('trc_TxbBonProIncWoDon:'||to_char(trc_TxbBonProIncWoDon));
3309 WrtHrTrc('trc_TotLibBP: '||to_char(trc_TotLibBP));
3310 WrtHrTrc('trc_LibFyBP: '||to_char(trc_LibFyBP));
3311 WrtHrTrc('trc_LibFpBP: '||to_char(trc_LibFpBP));
3312 -- Annual Bonus
3313 WrtHrTrc('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
3314 WrtHrTrc('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
3315 WrtHrTrc('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
3316 WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
3317 WrtHrTrc('trc_TxbAnnBonIncWoDon:'||to_char(trc_TxbAnnBonIncWoDon));
3318 WrtHrTrc('trc_TotLibAB: '||to_char(trc_TotLibAB));
3319 WrtHrTrc('trc_LibFyAB: '||to_char(trc_LibFyAB));
3320 WrtHrTrc('trc_LibFpAB: '||to_char(trc_LibFpAB));
3321 -- Annual Payments
3322 WrtHrTrc('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
3323 WrtHrTrc('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
3324 WrtHrTrc('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
3325 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
3326 WrtHrTrc('trc_TxbAnnPymIncWoDon:'||to_char(trc_TxbAnnPymIncWoDon));
3327 WrtHrTrc('trc_TotLibAP: '||to_char(trc_TotLibAP));
3328 WrtHrTrc('trc_LibFyAP: '||to_char(trc_LibFyAP));
3329 WrtHrTrc('trc_LibFpAP: '||to_char(trc_LibFpAP));
3330 -- Pubilc Office Allowance
3331 WrtHrTrc('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
3332 WrtHrTrc('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
3333 WrtHrTrc('trc_PblOffErn: '||to_char(trc_PblOffErn));
3334 WrtHrTrc('trc_TxbPblOffInc: '||to_char(trc_TxbPblOffInc));
3335 WrtHrTrc('trc_TxbPblOffIncWoDon:'||to_char(trc_TxbPblOffIncWoDon));
3336 WrtHrTrc('trc_TotLibPO: '||to_char(trc_TotLibPO));
3337 WrtHrTrc('trc_LibFyPO: '||to_char(trc_LibFyPO));
3338 WrtHrTrc('trc_LibFpPO: '||to_char(trc_LibFpPO));
3339
3340 -- NTG
3341 WrtHrTrc('trc_AnnPymNtgYtd: '||to_char(trc_AnnPymNtgYtd));
3342 WrtHrTrc('trc_AnnPymNtgPtd: '||to_char(trc_AnnPymNtgPtd));
3343 WrtHrTrc('trc_AnnPymNtgErn: '||to_char(trc_AnnPymNtgErn));
3344 WrtHrTrc('trc_TxbAnnPymNtgInc: '||to_char(trc_TxbAnnPymNtgInc));
3345 WrtHrTrc('trc_TxbAnnPymNtgIncWoDon: '||to_char(trc_TxbAnnPymNtgIncWoDon));
3346 WrtHrTrc('trc_TotLibNtgAP: '||to_char(trc_TotLibNtgAP ));
3347 WrtHrTrc('trc_LibFyNtgAP: '||to_char(trc_LibFyNtgAP ));
3348 WrtHrTrc('trc_LibFpNtgAP: '||to_char(trc_LibFpNtgAP ));
3349
3350 WrtHrTrc('trc_AnnEEDbtNTGYtd: '||to_char(trc_AnnEEDbtNTGYtd));
3351 WrtHrTrc('trc_AnnEEDbtNtgPtd: '||to_char(trc_AnnEEDbtNtgPtd));
3352 WrtHrTrc('trc_AnnEEDbtNtgErn: '||to_char(trc_AnnEEDbtNtgErn));
3353 WrtHrTrc('trc_TxbAnnEEDbtNtgInc: '||to_char(trc_TxbAnnEEDbtNtgInc));
3354 WrtHrTrc('trc_TxbAnnEEDbtNtgIncWoDon:'||to_char(trc_TxbAnnEEDbtNtgIncWoDon));
3355 WrtHrTrc('trc_TotLibNtgEEDbt: '||to_char(trc_TotLibNtgEEDbt ));
3356 WrtHrTrc('trc_LibFyNtgEEDbt: '||to_char(trc_LibFyNtgEEDbt ));
3357 WrtHrTrc('trc_LibFpNtgEEDbt: '||to_char(trc_LibFpNtgEEDbt ));
3358
3359
3360 EXCEPTION
3361 WHEN OTHERS THEN
3362 IF xpt_Msg = 'No Error' THEN
3363 xpt_Msg := 'SitCalc: '||TO_CHAR(SQLCODE);
3364 END IF;
3365 RAISE xpt_E;
3366 END SitCalc;
3367
3368 -------------------------------------------------------------------------------
3369 -- DirCalc --
3370 -- Tax Calculation for Directive Assignments --
3371 -------------------------------------------------------------------------------
3372 PROCEDURE DirCalc AS
3373 -- Variables
3374 --
3375 l_Np BALANCE DEFAULT 0;
3376 l_Sl BOOLEAN ; -- Bug 14195352
3377
3378 BEGIN
3379
3380 hr_utility.set_location('py_za_tx_01032012.DirCalc',1);
3381 -- Identify the calculation
3382 --
3383 trc_CalTyp := 'DirCalc';
3384
3385 -- Update Global Balance Values with correct TAXABLE values
3386 --
3387 --Fix for bug#10372926
3388 --py_za_tx_utl_01032012.TrvAll;
3389
3390 hr_utility.set_location('py_za_tx_01032012.DirCalc',2);
3391
3392 bal_TOT_TXB_PO_YTD := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
3393
3394 trc_curMedTxCrEle := greatest(bal_MED_AID_TAX_CR_YTD + bal_ANN_MED_AID_TAX_CR_YTD,0,bal_MED_AID_TAX_CR_USED_YTD + bal_MED_AID_TAX_CR_USED_LS_YTD) ;
3395 -- Normal Income
3396 --
3397 -- Ytd Normal Income
3398 trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
3399 -- Skip the calculation if there is No Income
3400 IF trc_NorIncYtd <> 0 THEN
3401 hr_utility.set_location('py_za_tx_01032012.DirCalc',3);
3402 -- Normal Earnings
3403 trc_NorErn := trc_NorIncYtd;
3404 -- Tax Liability
3405 trc_TotLibNI := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_NorErn);
3406 trc_LibFyNI := trc_TotLibNI - 0;
3407 trc_TotLibNI := greatest(trc_TotLibNI,0);
3408 trc_LibFpNI := trc_LibFyNI - (bal_TX_ON_NI_YTD + bal_MED_TAX_CR_USED_NI_YTD);
3409
3410 -- Start Medical Tax Credit Changes
3411 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3412 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
3413 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_NI_YTD
3414 ,p_Tx_RUN => trc_LibFpNI
3415 ,p_Tx_YTD => bal_TX_ON_NI_YTD
3416 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedNI
3417 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedNI_Upd
3418 );
3419 trc_LibFpNI_Upd := trc_LibFpNI - trc_MedTxCrUsedNI_Upd;
3420 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNI,0);
3421 hr_utility.set_location(' trc_MedTxCrUsedNI:'||trc_MedTxCrUsedNI,10);
3422 hr_utility.set_location('trc_MedTxCrUsedNI_Upd:'||trc_MedTxCrUsedNI_Upd,10);
3423 hr_utility.set_location(' trc_LibFpNI_Upd:'||trc_LibFpNI_Upd,10);
3424 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3425 -- End Medical Tax Credit Changes
3426
3427 ELSE
3428 hr_utility.set_location('py_za_tx_01032012.DirCalc',4);
3429 -- Set Cascade Figures and Refund
3430 trc_NorErn := 0;
3431 trc_TotLibNI := 0;
3432 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
3433 trc_MedTxCrUsedNI_Upd := -1 * bal_MED_TAX_CR_USED_NI_YTD;
3434 trc_LibFpNI_Upd := trc_LibFpNI;
3435 trc_LibFpNIOvr := TRUE;
3436 END IF;
3437
3438
3439 -- Fringe Benefits
3440 --
3441 -- Ytd Fringe Benefits
3442 trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
3443 -- Skip the calculation if there is No Income
3444 IF trc_FrnBenYtd <> 0 THEN
3445 hr_utility.set_location('py_za_tx_01032012.DirCalc',5);
3446 -- Fringe Benefit Earnings
3447 trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
3448 -- Tax Liability
3449 trc_TotLibFB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_FrnBenErn);
3450 trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
3451 trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
3452 trc_LibFpFB := trc_LibFyFB - (bal_TX_ON_FB_YTD + bal_MED_TAX_CR_USED_FB_YTD);
3453
3454 -- Start Medical Tax Credit Changes
3455 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3456 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
3457 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_FB_YTD
3458 ,p_Tx_RUN => trc_LibFpFB
3459 ,p_Tx_YTD => bal_TX_ON_FB_YTD
3460 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedFB
3461 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedFB_Upd
3462 );
3463 trc_LibFpFB_Upd := trc_LibFpFB - trc_MedTxCrUsedFB_Upd;
3464 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedFB,0);
3465 hr_utility.set_location(' trc_MedTxCrUsedFB:'||trc_MedTxCrUsedFB,10);
3466 hr_utility.set_location('trc_MedTxCrUsedFB_Upd:'||trc_MedTxCrUsedFB_Upd,10);
3467 hr_utility.set_location(' trc_LibFpFB_Upd:'||trc_LibFpFB_Upd,10);
3468 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3469 -- End Medical Tax Credit Changes
3470
3471 ELSE
3472 hr_utility.set_location('py_za_tx_01032012.DirCalc',6);
3473 -- Set Cascade Figures and Refund
3474 trc_FrnBenErn := trc_NorErn;
3475 trc_TotLibFB := trc_TotLibNI;
3476 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
3477 trc_MedTxCrUsedFB_Upd := -1 * bal_MED_TAX_CR_USED_FB_YTD;
3478 trc_LibFpFB_Upd := trc_LibFpFB;
3479 trc_LibFpFBOvr := TRUE;
3480 END IF;
3481
3482
3483 -- Travel Allowance
3484 --
3485 -- Ytd Travel Allowance
3486 trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
3487 -- Skip the calculation if there is No Income
3488 IF trc_TrvAllYtd <> 0 THEN
3489 hr_utility.set_location('py_za_tx_01032012.DirCalc',7);
3490 -- Travel Allowance Earnings
3491 trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
3492 -- Tax Liability
3493 trc_TotLibTA := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TrvAllErn);
3494 trc_LibFyTA := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
3495 trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
3496 trc_LibFpTA := trc_LibFyTA - (bal_TX_ON_TA_YTD + bal_MED_TAX_CR_USED_TA_YTD) ;
3497
3498 -- Start Medical Tax Credit Changes
3499 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3500 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
3501 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_TA_YTD
3502 ,p_Tx_RUN => trc_LibFpTA
3503 ,p_Tx_YTD => bal_TX_ON_TA_YTD
3504 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedTA
3505 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedTA_Upd
3506 );
3507 trc_LibFpTA_Upd := trc_LibFpTA - trc_MedTxCrUsedTA_Upd;
3508 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedTA,0);
3509 hr_utility.set_location(' trc_MedTxCrUsedTA:'||trc_MedTxCrUsedTA,10);
3510 hr_utility.set_location('trc_MedTxCrUsedTA_Upd:'||trc_MedTxCrUsedTA_Upd,10);
3511 hr_utility.set_location(' trc_LibFpTA_Upd:'||trc_LibFpTA_Upd,10);
3512 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3513 -- End Medical Tax Credit Changes
3514
3515 ELSE
3516 hr_utility.set_location('py_za_tx_01032012.DirCalc',8);
3517 -- Set Cascade Figures and Refund
3518 trc_TrvAllErn := trc_FrnBenErn; --Cascade Figure
3519 trc_TotLibTA := trc_TotLibFB;
3520 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
3521 trc_MedTxCrUsedTA_Upd := -1 * bal_MED_TAX_CR_USED_TA_YTD;
3522 trc_LibFpTA_Upd := trc_LibFpTA;
3523 trc_LibFpTAOvr := TRUE;
3524 END IF;
3525
3526 -- Bonus Provision
3527 --
3528 -- Ytd Bonus Provision
3529 trc_BonProYtd := bal_BP_YTD;
3530 -- Skip the calculation if there is No Income
3531 IF trc_BonProYtd <> 0 THEN
3532 hr_utility.set_location('py_za_tx_01032012.DirCalc',9);
3533 -- Bonus Provision Earnings
3534 trc_BonProErn := trc_BonProYtd + trc_TrvAllErn;
3535 -- Tax Liability
3536 trc_TotLibBP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_BonProErn);
3537 trc_LibFyBP := trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA);
3538 trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
3539 trc_LibFpBP := trc_LibFyBP - (bal_TX_ON_BP_YTD + bal_MED_TAX_CR_USED_BP_YTD);
3540
3541 -- Start Medical Tax Credit Changes
3542 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3543 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
3544 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_BP_YTD
3545 ,p_Tx_RUN => trc_LibFpBP
3546 ,p_Tx_YTD => bal_TX_ON_BP_YTD
3547 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedBP
3548 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedBP_Upd
3549 );
3550 trc_LibFpBP_Upd := trc_LibFpBP - trc_MedTxCrUsedBP_Upd;
3551 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedBP,0);
3552 hr_utility.set_location(' trc_MedTxCrUsedBP:'||trc_MedTxCrUsedBP,10);
3553 hr_utility.set_location('trc_MedTxCrUsedBP_Upd:'||trc_MedTxCrUsedBP_Upd,10);
3554 hr_utility.set_location(' trc_LibFpBP_Upd:'||trc_LibFpBP_Upd,10);
3555 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3556 -- End Medical Tax Credit Changes
3557
3558 ELSE
3559 hr_utility.set_location('py_za_tx_01032012.DirCalc',10);
3560 -- Set Cascade Figures and Refund
3561 trc_BonProErn := trc_TrvAllErn;
3562 trc_TotLibBP := trc_TotLibTA;
3563 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
3564 trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_YTD;
3565 trc_LibFpBP_Upd := trc_LibFpBP;
3566 trc_LibFpBPOvr := TRUE;
3567 END IF;
3568
3569 -- Annual Bonus
3570 --
3571 -- Ytd Annual Bonus
3572 trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
3573 -- Skip the calculation if there is No Income
3574 IF trc_AnnBonYtd <> 0 THEN
3575 hr_utility.set_location('py_za_tx_01032012.DirCalc',11);
3576 -- Annual Bonus Earnings
3577 trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
3578 -- Tax Liability
3579 trc_TotLibAB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_AnnBonErn);
3580 trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
3581 trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
3582 -- Check Bonus Provision
3583 IF trc_BonProYtd <> 0 THEN
3584 hr_utility.set_location('py_za_tx_01032012.DirCalc',12);
3585 -- Check Bonus Provision Frequency
3586 IF dbi_BP_TX_RCV = 'B' OR py_za_tx_utl_01032012.SitePeriod THEN
3587 hr_utility.set_location('py_za_tx_01032012.DirCalc',13);
3588 trc_LibFpAB :=
3589 trc_LibFyAB - (bal_TX_ON_BP_YTD
3590 + bal_MED_TAX_CR_USED_BP_YTD
3591 + trc_LibFpBP
3592 + bal_TX_ON_AB_YTD
3593 + bal_MED_TAX_CR_USED_AB_YTD
3594 );
3595
3596 -- Start Medical Tax Credit Changes
3597 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3598 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
3599 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AB_YTD
3600 ,p_Tx_RUN => trc_LibFpAB
3601 ,p_Tx_YTD => bal_TX_ON_AB_YTD
3602 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAB
3603 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAB_Upd
3604 );
3605 trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
3606 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
3607 hr_utility.set_location(' trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
3608 hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
3609 hr_utility.set_location(' trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
3610 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3611 -- End Medical Tax Credit Changes
3612
3613 ELSE
3614 hr_utility.set_location('py_za_tx_01032012.DirCalc',14);
3615 trc_LibFpAB := 0;
3616 END IF;
3617 ELSE
3618 hr_utility.set_location('py_za_tx_01032012.DirCalc',15);
3619 trc_LibFpAB := trc_LibFyAB - (bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
3620
3621 -- Start Medical Tax Credit Changes
3622 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3623 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
3624 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AB_YTD
3625 ,p_Tx_RUN => trc_LibFpAB
3626 ,p_Tx_YTD => bal_TX_ON_AB_YTD
3627 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAB
3628 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAB_Upd
3629 );
3630 trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
3631 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
3632 hr_utility.set_location(' trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
3633 hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
3634 hr_utility.set_location(' trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
3635 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3636 -- End Medical Tax Credit Changes
3637
3638 END IF;
3639 ELSE
3640 hr_utility.set_location('py_za_tx_01032012.DirCalc',16);
3641 -- Set Cascade Figures and Refund
3642 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
3643 trc_LibFpABOvr := TRUE;
3644 trc_MedTxCrUsedAB_Upd := -1 * bal_MED_TAX_CR_USED_AB_YTD;
3645 trc_LibFpAB_Upd := trc_LibFpAB ;
3646 IF dbi_BP_TX_RCV = 'A' AND py_za_tx_utl_01032012.SitePeriod THEN
3647 hr_utility.set_location('py_za_tx_01032012.DirCalc',17);
3648 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
3649 trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_YTD;
3650 trc_LibFpBPOvr := TRUE;
3651 trc_LibFpAPOvr := TRUE;
3652 trc_LibFpBP_Upd := trc_LibFpBP;
3653 trc_AnnBonErn := trc_TrvAllErn;
3654 trc_TotLibAB := trc_TotLibTA;
3655 ELSE
3656 hr_utility.set_location('py_za_tx_01032012.DirCalc',18);
3657 trc_AnnBonErn := trc_BonProErn;
3658 trc_TotLibAB := trc_TotLibBP;
3659 END IF;
3660 END IF;
3661
3662
3663 -- Annual Payments
3664 --
3665 -- Ytd Annual Payments
3666 trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
3667 -- Skip the calculation if there is No Income
3668 IF trc_AnnPymYtd <> 0 THEN
3669 hr_utility.set_location('py_za_tx_01032012.DirCalc',19);
3670 -- Annual Payments Earnings
3671 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
3672 -- Tax Liability
3673 trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_AnnPymErn);
3674 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
3675 trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
3676 trc_LibFpAP := trc_LibFyAP - (bal_TX_ON_AP_YTD + bal_MED_TAX_CR_USED_AP_YTD);
3677
3678 -- Start Medical Tax Credit Changes
3679 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3680 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
3681 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AP_YTD
3682 ,p_Tx_RUN => trc_LibFpAP
3683 ,p_Tx_YTD => bal_TX_ON_AP_YTD
3684 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAP
3685 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAP_Upd
3686 );
3687 trc_LibFpAP_Upd := trc_LibFpAP - trc_MedTxCrUsedAP_Upd;
3688 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAP,0);
3689 hr_utility.set_location(' trc_MedTxCrUsedAP:'||trc_MedTxCrUsedAP,10);
3690 hr_utility.set_location('trc_MedTxCrUsedAP_Upd:'||trc_MedTxCrUsedAP_Upd,10);
3691 hr_utility.set_location(' trc_LibFpAP_Upd:'||trc_LibFpAP_Upd,10);
3692 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3693 -- End Medical Tax Credit Changes
3694
3695 ElSE
3696 hr_utility.set_location('py_za_tx_01032012.DirCalc',20);
3697 -- Set Cascade Figures and Refund
3698 trc_AnnPymErn := trc_AnnBonErn;
3699 trc_MedTxCrUsedAP_Upd := -1 * bal_MED_TAX_CR_USED_AP_YTD;
3700 trc_TotLibAP := trc_TotLibAB;
3701 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
3702 trc_LibFpAP_Upd := trc_LibFpAP ;
3703 trc_LibFpAPOvr := TRUE;
3704 END IF;
3705
3706 -- Public Office Allowance
3707 --
3708 -- Ytd Public Office Allowance
3709 trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
3710 -- Skip the calculation if there is No Income
3711 IF trc_PblOffYtd <> 0 THEN
3712 hr_utility.set_location('py_za_tx_01032012.DirCalc',21);
3713 -- Public Office Allowance Earnings
3714 trc_PblOffErn := trc_PblOffYtd + trc_AnnPymErn;
3715 -- Tax Liability
3716 trc_TotLibPO := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_PblOffErn);
3717 trc_LibFyPO := trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP);
3718 trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
3719 trc_LibFpPO := trc_LibFyPO - (bal_TX_ON_PO_YTD + bal_MED_TAX_CR_USED_PO_YTD);
3720
3721 -- Start Medical Tax Credit Changes
3722 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3723 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
3724 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_PO_YTD
3725 ,p_Tx_RUN => trc_LibFpPO
3726 ,p_Tx_YTD => bal_TX_ON_PO_YTD
3727 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedPO
3728 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedPO_Upd
3729 );
3730 trc_LibFpPO_Upd := trc_LibFpPO - trc_MedTxCrUsedPO_Upd;
3731 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedPO,0);
3732 hr_utility.set_location(' trc_MedTxCrUsedPO:'||trc_MedTxCrUsedPO,10);
3733 hr_utility.set_location('trc_MedTxCrUsedPO_Upd:'||trc_MedTxCrUsedPO_Upd,10);
3734 hr_utility.set_location(' trc_LibFpPO_Upd:'||trc_LibFpPO_Upd,10);
3735 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3736 -- End Medical Tax Credit Changes
3737
3738 ELSE
3739 hr_utility.set_location('py_za_tx_01032012.DirCalc',22);
3740 -- Set Cascade Figures and Refund
3741 trc_PblOffErn := trc_AnnPymErn;
3742 trc_TotLibPO := trc_TotLibAP;
3743 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
3744 trc_MedTxCrUsedPO_Upd := -1 * bal_MED_TAX_CR_USED_PO_YTD;
3745 trc_LibFpPO_Upd := trc_LibFpPO;
3746 trc_LibFpPOOvr := TRUE;
3747 END IF;
3748
3749 -- Net to Gross Annual Payments.
3750 -- Ytd Net to Gross Annual Payments
3751 trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
3752 -- Skip the calculation if there is No Income
3753 IF trc_AnnPymNtgYtd <> 0 THEN
3754 hr_utility.set_location('py_za_tx_01032012.DirCalc',23);
3755 -- Annual Payments Net to Gross Earnings
3756 trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_PblOffErn;
3757 -- Tax Liability
3758 trc_TotLibNtgAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_AnnPymNtgErn);
3759 trc_LibFyNtgAP := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibPO);
3760 trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibPO);
3761 trc_LibFpNtgAP := trc_LibFyNtgAP - (bal_TX_ON_AP_NTG_YTD + bal_MED_TAX_CR_USED_NG_YTD);
3762
3763 -- Start Medical Tax Credit Changes
3764 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3765 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
3766 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_NG_YTD
3767 ,p_Tx_RUN => trc_LibFpNtgAP
3768 ,p_Tx_YTD => bal_TX_ON_AP_NTG_YTD
3769 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedNtgAP
3770 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedNtgAP_Upd
3771 );
3772 trc_LibFpNtgAP_Upd := trc_LibFpNtgAP - trc_MedTxCrUsedNtgAP_Upd;
3773 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgAP,0);
3774 hr_utility.set_location(' trc_MedTxCrUsedNtgAP:'||trc_MedTxCrUsedNtgAP,10);
3775 hr_utility.set_location('trc_MedTxCrUsedNtgAP_Upd:'||trc_MedTxCrUsedNtgAP_Upd,10);
3776 hr_utility.set_location(' trc_LibFpNtgAP_Upd:'||trc_LibFpNtgAP_Upd,10);
3777 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3778 -- End Medical Tax Credit Changes
3779
3780 ELSE
3781 hr_utility.set_location('py_za_tx_01032012.DirCalc',24);
3782 -- Set Cascade Figures and Refund
3783 trc_AnnPymNtgErn := trc_PblOffErn;
3784 trc_TotLibNtgAP := trc_TotLibPO;
3785 trc_MedTxCrUsedNtgAP_Upd := -1 * bal_MED_TAX_CR_USED_NG_YTD;
3786 trc_LibFpNtgAP := -1 * bal_TX_ON_AP_NTG_YTD;
3787 trc_LibFpNtgAP_Upd := trc_LibFpNtgAP;
3788 trc_LibFpNtgAPOvr := TRUE;
3789 END IF;
3790
3791 -- Ytd Net to Gross EE Debt arised due to Net to Gross Annual Payments
3792 trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
3793 -- Skip the calculation if there is No Income
3794 IF trc_AnnEEDbtNtgYtd <> 0 THEN
3795 hr_utility.set_location('py_za_tx_01032012.DirCalc',25);
3796 -- Annual EE Debt Net to Gross Earnings
3797 trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
3798
3799 -- Tax Liability
3800 trc_TotLibNtgEEDbt := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_AnnEEDbtNtgErn);
3801 trc_LibFyNtgEEDbt := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
3802 trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
3803 trc_LibFpNtgEEDbt := trc_LibFyNtgEEDbt - (bal_TX_ON_EE_DBT_NTG_YTD + bal_MED_TAX_CR_USED_EE_YTD);
3804
3805 -- Start Medical Tax Credit Changes
3806 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
3807 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
3808 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_EE_YTD
3809 ,p_Tx_RUN => trc_LibFpNtgEEDbt
3810 ,p_Tx_YTD => bal_TX_ON_EE_DBT_NTG_YTD
3811 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedNtgEEDbt
3812 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedNtgEEDbt_Upd
3813 );
3814 trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt - trc_MedTxCrUsedNtgEEDbt_Upd;
3815 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgEEDbt,0);
3816 hr_utility.set_location(' trc_MedTxCrUsedNtgEEDbt:'||trc_MedTxCrUsedNtgEEDbt,10);
3817 hr_utility.set_location('trc_MedTxCrUsedNtgEEDbt_Upd:'||trc_MedTxCrUsedNtgEEDbt_Upd,10);
3818 hr_utility.set_location(' trc_LibFpNtgEEDbt_Upd:'||trc_LibFpNtgEEDbt_Upd,10);
3819 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
3820 -- End Medical Tax Credit Changes
3821
3822 ELSE
3823 hr_utility.set_location('py_za_tx_01032012.DirCalc',26);
3824 -- Set Cascade Figures and Refund
3825 trc_AnnEEDbtNtgErn := trc_AnnPymNtgErn;
3826 trc_TotLibNtgEEDbt := trc_TotLibNtgAP;
3827 trc_LibFpNtgEEDbt := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
3828 trc_MedTxCrUsedNtgEEDbt_Upd := -1 * bal_MED_TAX_CR_USED_EE_YTD;
3829 trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt;
3830 trc_LibFpNtgEEDbtOvr := TRUE;
3831 END IF;
3832
3833 trc_LibFpNI := trc_LibFpNI_Upd;
3834 trc_LibFpFB := trc_LibFpFB_Upd;
3835 trc_LibFpTA := trc_LibFpTA_Upd;
3836 trc_LibFpBP := trc_LibFpBP_Upd;
3837 trc_LibFpAB := trc_LibFpAB_Upd;
3838 trc_LibFpAP := trc_LibFpAP_Upd;
3839 trc_LibFpPO := trc_LibFpPO_Upd;
3840 trc_LibFpNtgAP := trc_LibFpNtgAP_Upd;
3841 trc_LibFpNtgEEDbt := trc_LibFpNtgEEDbt_Upd;
3842
3843 -- Net Pay Validation
3844 --
3845 -- Bug 14195352
3846 -- Tax to be refunded only if net taxable earning is below SITE limit
3847
3848 IF trc_AnnEEDbtNtgErn < glb_ZA_SIT_LIM THEN
3849 l_Sl := TRUE;
3850 ELSE
3851 l_Sl := FALSE;
3852 END IF;
3853 py_za_tx_utl_01032012.ValidateTaxOns(p_Rf => l_Sl);
3854
3855 hr_utility.set_location('py_za_tx_01032012.DirCalc',27);
3856
3857 -- Tax Percentage Indicator
3858 --
3859 IF dbi_TX_STA IN ('D','P') THEN
3860 hr_utility.set_location('py_za_tx_01032012.DirCalc',28);
3861 trc_TxPercVal := dbi_TX_DIR_VAL;
3862 ELSIF dbi_TX_STA = 'E' THEN
3863 hr_utility.set_location('py_za_tx_01032012.DirCalc',29);
3864 trc_TxPercVal := glb_ZA_CC_TX_PRC;
3865 ELSIF dbi_TX_STA = 'F' THEN
3866 hr_utility.set_location('py_za_tx_01032012.DirCalc',30);
3867 trc_TxPercVal := glb_ZA_TMP_TX_RTE;
3868 ELSIF dbi_TX_STA = 'J' THEN
3869 hr_utility.set_location('py_za_tx_01032012.DirCalc',31);
3870 trc_TxPercVal := glb_ZA_PER_SERV_COMP_PERC;
3871 ELSIF dbi_TX_STA = 'K' THEN
3872 hr_utility.set_location('py_za_tx_01032012.DirCalc',32);
3873 trc_TxPercVal := glb_ZA_PER_SERV_TRST_PERC;
3874 ELSIF dbi_TX_STA = 'L' THEN
3875 hr_utility.set_location('py_za_tx_01032012.DirCalc',33);
3876 trc_TxPercVal := glb_ZA_PER_SERV_COMP_PERC;
3877 ELSE
3878 hr_utility.set_location('py_za_tx_01032012.DirCalc',34);
3879 trc_TxPercVal := 0;
3880 END IF;
3881
3882 hr_utility.set_location('py_za_tx_01032012.DirCalc',35);
3883
3884 -- Base Income
3885 WrtHrTrc('trc_BseErn: '||to_char(trc_BseErn));
3886 WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
3887 WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
3888 -- Normal Income
3889 WrtHrTrc('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
3890 WrtHrTrc('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
3891 WrtHrTrc('trc_NorErn: '||to_char(trc_NorErn));
3892 WrtHrTrc('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
3893 WrtHrTrc('trc_TotLibNI: '||to_char(trc_TotLibNI));
3894 WrtHrTrc('trc_LibFyNI: '||to_char(trc_LibFyNI));
3895 WrtHrTrc('trc_LibFpNI: '||to_char(trc_LibFpNI));
3896 -- Fringe Benefits
3897 WrtHrTrc('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
3898 WrtHrTrc('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
3899 WrtHrTrc('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
3900 WrtHrTrc('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
3901 WrtHrTrc('trc_TotLibFB: '||to_char(trc_TotLibFB));
3902 WrtHrTrc('trc_LibFyFB: '||to_char(trc_LibFyFB));
3903 WrtHrTrc('trc_LibFpFB: '||to_char(trc_LibFpFB));
3904 -- Travel Allowance
3905 WrtHrTrc('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
3906 WrtHrTrc('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
3907 WrtHrTrc('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
3908 WrtHrTrc('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
3909 WrtHrTrc('trc_TotLibTA: '||to_char(trc_TotLibTA));
3910 WrtHrTrc('trc_LibFyTA: '||to_char(trc_LibFyTA));
3911 WrtHrTrc('trc_LibFpTA: '||to_char(trc_LibFpTA));
3912 -- Bonus Provision
3913 WrtHrTrc('trc_BonProYtd: '||to_char(trc_BonProYtd));
3914 WrtHrTrc('trc_BonProPtd: '||to_char(trc_BonProPtd));
3915 WrtHrTrc('trc_BonProErn: '||to_char(trc_BonProErn));
3916 WrtHrTrc('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
3917 WrtHrTrc('trc_TotLibBP: '||to_char(trc_TotLibBP));
3918 WrtHrTrc('trc_LibFyBP: '||to_char(trc_LibFyBP));
3919 WrtHrTrc('trc_LibFpBP: '||to_char(trc_LibFpBP));
3920 -- Annual Bonus
3921 WrtHrTrc('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
3922 WrtHrTrc('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
3923 WrtHrTrc('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
3924 WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
3925 WrtHrTrc('trc_TotLibAB: '||to_char(trc_TotLibAB));
3926 WrtHrTrc('trc_LibFyAB: '||to_char(trc_LibFyAB));
3927 WrtHrTrc('trc_LibFpAB: '||to_char(trc_LibFpAB));
3928 -- Annual Payments
3929 WrtHrTrc('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
3930 WrtHrTrc('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
3931 WrtHrTrc('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
3932 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
3933 WrtHrTrc('trc_TotLibAP: '||to_char(trc_TotLibAP));
3934 WrtHrTrc('trc_LibFyAP: '||to_char(trc_LibFyAP));
3935 WrtHrTrc('trc_LibFpAP: '||to_char(trc_LibFpAP));
3936 -- Pubilc Office Allowance
3937 WrtHrTrc('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
3938 WrtHrTrc('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
3939 WrtHrTrc('trc_PblOffErn: '||to_char(trc_PblOffErn));
3940 WrtHrTrc('trc_TxbPblOffInc: '||to_char(trc_TxbPblOffInc));
3941 WrtHrTrc('trc_TotLibPO: '||to_char(trc_TotLibPO));
3942 WrtHrTrc('trc_LibFyPO: '||to_char(trc_LibFyPO));
3943 WrtHrTrc('trc_LibFpPO: '||to_char(trc_LibFpPO));
3944
3945 -- NTG
3946 WrtHrTrc('trc_AnnPymNtgYtd: '||to_char(trc_AnnPymNtgYtd));
3947 WrtHrTrc('trc_AnnPymNtgPtd: '||to_char(trc_AnnPymNtgPtd));
3948 WrtHrTrc('trc_AnnPymNtgErn: '||to_char(trc_AnnPymNtgErn));
3949 WrtHrTrc('trc_TxbAnnPymNtgInc: '||to_char(trc_TxbAnnPymNtgInc));
3950 WrtHrTrc('trc_TotLibNtgAP: '||to_char(trc_TotLibNtgAP ));
3951 WrtHrTrc('trc_LibFyNtgAP: '||to_char(trc_LibFyNtgAP ));
3952 WrtHrTrc('trc_LibFpNtgAP: '||to_char(trc_LibFpNtgAP ));
3953
3954 WrtHrTrc('trc_AnnEEDbtNTGYtd: '||to_char(trc_AnnEEDbtNTGYtd));
3955 WrtHrTrc('trc_AnnEEDbtNtgPtd: '||to_char(trc_AnnEEDbtNtgPtd));
3956 WrtHrTrc('trc_AnnEEDbtNtgErn: '||to_char(trc_AnnEEDbtNtgErn));
3957 WrtHrTrc('trc_TxbAnnEEDbtNtgInc: '||to_char(trc_TxbAnnEEDbtNtgInc));
3958 WrtHrTrc('trc_TotLibNtgEEDbt: '||to_char(trc_TotLibNtgEEDbt ));
3959 WrtHrTrc('trc_LibFyNtgEEDbt: '||to_char(trc_LibFyNtgEEDbt ));
3960 WrtHrTrc('trc_LibFpNtgEEDbt: '||to_char(trc_LibFpNtgEEDbt ));
3961
3962 EXCEPTION
3963 WHEN OTHERS THEN
3964 IF xpt_Msg = 'No Error' THEN
3965 xpt_Msg := 'DirCalc: '||TO_CHAR(SQLCODE);
3966 END IF;
3967 RAISE xpt_E;
3968 END DirCalc;
3969
3970 -------------------------------------------------------------------------------
3971 -- BasCalc --
3972 -- Pre-Earnings Tax Calculation --
3973 -------------------------------------------------------------------------------
3974 PROCEDURE BasCalc AS
3975 -- Variables
3976 --
3977 l_Np BALANCE;
3978 l_65Year DATE;
3979
3980 BEGIN
3981
3982 hr_utility.set_location('py_za_tx_01032012.BasCalc',1);
3983 -- Identify the Calculation
3984 --
3985 trc_CalTyp := 'BasCalc';
3986
3987 -- Rebates
3988 py_za_tx_utl_01032012.SetRebates;
3989
3990 -- Abatements
3991 py_za_tx_utl_01032012.Abatements;
3992
3993 trc_curMedTxCrEle := greatest(bal_MED_AID_TAX_CR_YTD + bal_ANN_MED_AID_TAX_CR_YTD,0,bal_MED_AID_TAX_CR_USED_YTD + bal_MED_AID_TAX_CR_USED_LS_YTD);
3994
3995 -- Deemed Remuneration
3996 --
3997 -- Run Deemed Remuneration
3998 trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
3999
4000 -- Skip the calculation if there is No Income
4001 IF trc_DmdRmnRun <> 0 THEN
4002 hr_utility.set_location('py_za_tx_01032012.BasCalc',2);
4003 -- Taxable Deemed Remuneration
4004 trc_TxbDmdRmn := trc_DmdRmnRun;
4005 -- Threshold Check
4006 IF trc_TxbDmdRmn >= trc_Threshold THEN
4007 hr_utility.set_location('py_za_tx_01032012.BasCalc',3);
4008 -- Tax Liability
4009 trc_TotLibDR := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbDmdRmn);
4010 ELSE
4011 hr_utility.set_location('py_za_tx_01032012.BasCalc',4);
4012 trc_TotLibDR := 0;
4013 END IF;
4014 ELSE
4015 hr_utility.set_location('py_za_tx_01032012.BasCalc',5);
4016 trc_TotLibDR := 0;
4017 END IF;
4018
4019 hr_utility.set_location('py_za_tx_01032012.BasCalc',6);
4020
4021 -- Base Earnings
4022 --
4023 --Base Earnings
4024 trc_BseErn := bal_TOT_TXB_AB_PTD + bal_TOT_TXB_AP_PTD + bal_TOT_TXB_AP_NTG_YTD;
4025 -- Estimate Base Taxable Income
4026 trc_TxbBseInc := trc_BseErn * dbi_ZA_PAY_PRDS_PER_YR;
4027 -- Threshold Check
4028 IF trc_TxbBseInc >= trc_Threshold THEN
4029 hr_utility.set_location('py_za_tx_01032012.BasCalc',7);
4030 -- Tax Liability
4031 trc_TotLibBse := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbBseInc);
4032 trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
4033 ELSE
4034 hr_utility.set_location('py_za_tx_01032012.BasCalc',8);
4035 trc_TotLibBse := trc_TotLibDR;
4036 END IF;
4037
4038 hr_utility.set_location('py_za_tx_01032012.BasCalc',9);
4039
4040 -- Annual Bonus
4041 --
4042 -- Ytd Annual Bonus
4043 trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
4044 -- Skip the calculation if there is No Income
4045 IF trc_AnnBonYtd <> 0 THEN
4046 hr_utility.set_location('py_za_tx_01032012.BasCalc',10);
4047 -- Annual Bonus Earnings
4048 trc_AnnBonErn := trc_AnnBonYtd + trc_TxbBseInc;
4049 -- Taxable Annual Bonus Income
4050 --TYS2010
4051 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4052 trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
4053 trc_TxbAnnBonInc :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
4054
4055 -- Threshold Check
4056 IF trc_TxbAnnBonInc >= trc_Threshold THEN
4057 hr_utility.set_location('py_za_tx_01032012.BasCalc',11);
4058 -- Tax Liability
4059 trc_TotLibAB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnBonInc);
4060 trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
4061 trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
4062 -- Check Bonus Provision
4063 IF bal_BP_YTD <> 0 THEN
4064 hr_utility.set_location('py_za_tx_01032012.BasCalc',12);
4065 -- Check Bonus Provision Frequency
4066 IF dbi_BP_TX_RCV = 'A' THEN
4067 hr_utility.set_location('py_za_tx_01032012.BasCalc',13);
4068 trc_LibFpAB := 0;
4069 ELSE
4070 hr_utility.set_location('py_za_tx_01032012.BasCalc',14);
4071 trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD + bal_MED_TAX_CR_USED_BP_YTD
4072 + bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
4073
4074 -- Start Medical Tax Credit Changes
4075 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4076 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
4077 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AB_YTD
4078 ,p_Tx_RUN => trc_LibFpAB
4079 ,p_Tx_YTD => bal_TX_ON_AB_YTD
4080 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAB
4081 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAB_Upd
4082 );
4083 trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
4084 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
4085 hr_utility.set_location(' trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
4086 hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
4087 hr_utility.set_location(' trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
4088 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4089 -- End Medical Tax Credit Changes
4090
4091 END IF;
4092 ELSE
4093 hr_utility.set_location('py_za_tx_01032012.BasCalc',15);
4094 trc_LibFpAB := trc_LibFyAB - (bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
4095
4096 -- Start Medical Tax Credit Changes
4097 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4098 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
4099 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AB_YTD
4100 ,p_Tx_RUN => trc_LibFpAB
4101 ,p_Tx_YTD => bal_TX_ON_AB_YTD
4102 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAB
4103 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAB_Upd
4104 );
4105 trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
4106 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
4107 hr_utility.set_location(' trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
4108 hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
4109 hr_utility.set_location(' trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
4110 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4111 -- End Medical Tax Credit Changes
4112
4113 END IF;
4114 ELSE
4115 hr_utility.set_location('py_za_tx_01032012.BasCalc',16);
4116 trc_TotLibAB := trc_TotLibBse;
4117 END IF;
4118 ELSE
4119 hr_utility.set_location('py_za_tx_01032012.BasCalc',17);
4120 trc_AnnBonErn := trc_TxbBseInc; -- Bug 14024624
4121 trc_TotLibAB := trc_TotLibBse;
4122 trc_TxbAnnBonInc := trc_TxbBseInc;
4123 END IF;
4124
4125 hr_utility.set_location('py_za_tx_01032012.BasCalc',18);
4126
4127 -- Annual Payments
4128 --
4129 -- Ytd Annual Payments
4130 trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
4131 -- Skip the calculation if there is No Income
4132 IF trc_AnnPymYtd <> 0 THEN
4133 hr_utility.set_location('py_za_tx_01032012.BasCalc',19);
4134 -- Taxable Annual Payments Income
4135 /* Commented for TYS2010
4136 trc_TxbAnnPymInc := trc_AnnPymYtd + trc_TxbAnnBonInc; */
4137 --Added for TYS2010
4138 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
4139 trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
4140 trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
4141
4142 -- Threshold Check
4143 IF trc_TxbAnnPymInc >= trc_Threshold THEN
4144 hr_utility.set_location('py_za_tx_01032012.BasCalc',20);
4145 -- Tax Liability
4146 trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymInc);
4147 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
4148 trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
4149 trc_LibFpAP := trc_LibFyAP - (bal_TX_ON_AP_YTD + bal_MED_TAX_CR_USED_AP_YTD);
4150
4151 -- Start Medical Tax Credit Changes
4152 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4153 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
4154 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AP_YTD
4155 ,p_Tx_RUN => trc_LibFpAP
4156 ,p_Tx_YTD => bal_TX_ON_AP_YTD
4157 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAP
4158 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAP_Upd
4159 );
4160 trc_LibFpAP_Upd := trc_LibFpAP - trc_MedTxCrUsedAP_Upd;
4161 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAP,0);
4162 hr_utility.set_location(' trc_MedTxCrUsedAP:'||trc_MedTxCrUsedAP,10);
4163 hr_utility.set_location('trc_MedTxCrUsedAP_Upd:'||trc_MedTxCrUsedAP_Upd,10);
4164 hr_utility.set_location(' trc_LibFpAP_Upd:'||trc_LibFpAP_Upd,10);
4165 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4166 -- End Medical Tax Credit Changes
4167
4168 ELSE
4169 hr_utility.set_location('py_za_tx_01032012.BasCalc',21);
4170 /* NULL; */
4171 --Added NTG
4172 trc_TotLibAP :=trc_TotLibAB;
4173 END IF;
4174 ELSE
4175 hr_utility.set_location('py_za_tx_01032012.BasCalc',22);
4176 --NULL;
4177 --Added NTG
4178 trc_AnnPymErn := trc_AnnBonErn; -- Bug 14024624
4179 trc_TotLibAP := trc_TotLibAB;
4180 trc_TxbAnnPymInc := trc_TxbAnnBonInc;
4181 END IF;
4182
4183 -- Net to Gross Annual Payments.
4184
4185 -- Ytd Net to Gross Annual Payments
4186 trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
4187 -- Skip the calculation if there is No Income
4188 IF trc_AnnPymNtgYtd <> 0 THEN
4189 hr_utility.set_location('py_za_tx_01032012.BasCalc',23);
4190 -- Annual Payments Net to Gross Earnings
4191 trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_AnnPymErn;
4192
4193 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4194 -- Taxable Annual Payments Income
4195 trc_TxbAnnPymNtgIncWoDon := trc_AnnPymNtgErn - trc_AnnTotAbm;
4196 trc_TxbAnnPymNtgInc :=trc_TxbAnnPymNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymNtgIncWoDon,trc_AnnDonAmt);
4197
4198 -- Threshold Check
4199 IF trc_TxbAnnPymNtgInc >= trc_Threshold THEN
4200 hr_utility.set_location('py_za_tx_01032012.BasCalc',24);
4201 -- Tax Liability
4202 trc_TotLibNtgAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymNtgInc);
4203 trc_LibFyNtgAP := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibAP);
4204 trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibAP);
4205 trc_LibFpNtgAP := trc_LibFyNtgAP - (bal_TX_ON_AP_NTG_YTD + bal_MED_TAX_CR_USED_NG_YTD);
4206
4207 -- Start Medical Tax Credit Changes
4208 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4209 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
4210 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_NG_YTD
4211 ,p_Tx_RUN => trc_LibFpNtgAP
4212 ,p_Tx_YTD => bal_TX_ON_AP_NTG_YTD
4213 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedNtgAP
4214 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedNtgAP_Upd
4215 );
4216 trc_LibFpNtgAP_Upd := trc_LibFpNtgAP - trc_MedTxCrUsedNtgAP_Upd;
4217 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgAP,0);
4218 hr_utility.set_location(' trc_MedTxCrUsedNtgAP:'||trc_MedTxCrUsedNtgAP,10);
4219 hr_utility.set_location('trc_MedTxCrUsedNtgAP_Upd:'||trc_MedTxCrUsedNtgAP_Upd,10);
4220 hr_utility.set_location(' trc_LibFpNtgAP_Upd:'||trc_LibFpNtgAP_Upd,10);
4221 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4222 -- End Medical Tax Credit Changes
4223
4224 ELSE
4225 hr_utility.set_location('py_za_tx_01032012.BasCalc',25);
4226 trc_TotLibNtgAP := trc_TotLibAP;
4227 END IF;
4228 ELSE
4229 hr_utility.set_location('py_za_tx_01032012.BasCalc',26);
4230 trc_AnnPymNtgErn := trc_AnnPymErn; -- Bug 14024624
4231 trc_TxbAnnPymNtgInc := trc_TxbAnnPymInc;
4232 trc_TotLibNtgAP := trc_TotLibAP;
4233 END IF;
4234
4235 -- Ytd Net to Gross EE Debt due to Net to Gross Annual Payments
4236 trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
4237 -- Skip the calculation if there is No Income
4238 IF trc_AnnEEDbtNtgYtd <> 0 THEN
4239 hr_utility.set_location('py_za_tx_01032012.BasCalc',27);
4240 -- Annual EE Debt Net to Gross Earnings
4241 trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
4242
4243 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4244 trc_TxbAnnEEDbtNtgIncWoDon := trc_AnnEEDbtNtgErn - trc_AnnTotNTGAbm;
4245 trc_TxbAnnEEDbtNtgInc :=trc_TxbAnnEEDbtNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnEEDbtNtgIncWoDon,trc_AnnDonAmt);
4246
4247 -- Threshold Check
4248 IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
4249 hr_utility.set_location('py_za_tx_01032012.BasCalc',28);
4250 -- Tax Liability
4251 trc_TotLibNtgEEDbt := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnEEDbtNtgInc);
4252 trc_LibFyNtgEEDbt := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
4253 trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
4254
4255 hr_utility.set_location('py_za_tx_01032012.BasCalc',29);
4256 trc_LibFpNtgEEDbt := trc_LibFyNtgEEDbt - (bal_TX_ON_EE_DBT_NTG_YTD + bal_MED_TAX_CR_USED_EE_YTD);
4257
4258 -- Start Medical Tax Credit Changes
4259 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4260 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
4261 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_EE_YTD
4262 ,p_Tx_RUN => trc_LibFpNtgEEDbt
4263 ,p_Tx_YTD => bal_TX_ON_EE_DBT_NTG_YTD
4264 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedNtgEEDbt
4265 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedNtgEEDbt_Upd
4266 );
4267 trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt - trc_MedTxCrUsedNtgEEDbt_Upd;
4268 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgEEDbt,0);
4269 hr_utility.set_location(' trc_MedTxCrUsedNtgEEDbt:'||trc_MedTxCrUsedNtgEEDbt,10);
4270 hr_utility.set_location('trc_MedTxCrUsedNtgEEDbt_Upd:'||trc_MedTxCrUsedNtgEEDbt_Upd,10);
4271 hr_utility.set_location(' trc_LibFpNtgEEDbt_Upd:'||trc_LibFpNtgEEDbt_Upd,10);
4272 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4273 -- End Medical Tax Credit Changes
4274
4275 ELSE
4276 hr_utility.set_location('py_za_tx_01032012.BasCalc',30);
4277 trc_TotLibNtgEEDbt := trc_TotLibNtgAP;
4278 END IF;
4279 ELSE
4280 hr_utility.set_location('py_za_tx_01032012.BasCalc',31);
4281 trc_AnnEEDbtNtgErn := trc_AnnPymNtgErn; -- Bug 14024624
4282 trc_TxbAnnEEDbtNtgInc := trc_TxbAnnPymNtgInc;
4283 trc_TotLibNtgEEDbt := trc_TotLibNtgAP;
4284 END IF;
4285
4286 trc_LibFpAB := trc_LibFpAB_Upd;
4287 trc_LibFpAP := trc_LibFpAP_Upd;
4288 trc_LibFpNtgAP := trc_LibFpNtgAP_Upd;
4289 trc_LibFpNtgEEDbt := trc_LibFpNtgEEDbt_Upd;
4290
4291 -- Net Pay Validation
4292 --
4293 py_za_tx_utl_01032012.ValidateTaxOns;
4294
4295 -- Deemed Remuneration
4296 WrtHrTrc('trc_TxbDmdRmn: '||to_char(trc_TxbDmdRmn));
4297 WrtHrTrc('trc_TotLibDR: '||to_char(trc_TotLibDR));
4298 WrtHrTrc('trc_LibFyDR: '||to_char(trc_LibFyDR));
4299 WrtHrTrc('trc_LibFpDR: '||to_char(trc_LibFpDR));
4300 -- Base Income
4301 WrtHrTrc('trc_BseErn: '||to_char(trc_BseErn));
4302 WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
4303 WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
4304 -- Normal Income
4305 WrtHrTrc('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
4306 WrtHrTrc('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
4307 WrtHrTrc('trc_NorErn: '||to_char(trc_NorErn));
4308 WrtHrTrc('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
4309 WrtHrTrc('trc_TxbNorIncWoDon: '||to_char(trc_TxbNorInc));
4310 WrtHrTrc('trc_TotLibNI: '||to_char(trc_TotLibNI));
4311 WrtHrTrc('trc_LibFyNI: '||to_char(trc_LibFyNI));
4312 WrtHrTrc('trc_LibFpNI: '||to_char(trc_LibFpNI));
4313 -- Fringe Benefits
4314 WrtHrTrc('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
4315 WrtHrTrc('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
4316 WrtHrTrc('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
4317 WrtHrTrc('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
4318 WrtHrTrc('trc_TxbFrnIncWoDon: '||to_char(trc_TxbFrnIncWoDon));
4319 WrtHrTrc('trc_TotLibFB: '||to_char(trc_TotLibFB));
4320 WrtHrTrc('trc_LibFyFB: '||to_char(trc_LibFyFB));
4321 WrtHrTrc('trc_LibFpFB: '||to_char(trc_LibFpFB));
4322 -- Travel Allowance
4323 WrtHrTrc('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
4324 WrtHrTrc('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
4325 WrtHrTrc('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
4326 WrtHrTrc('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
4327 WrtHrTrc('trc_TxbTrvIncWoDon: '||to_char(trc_TxbTrvIncWoDon));
4328 WrtHrTrc('trc_TotLibTA: '||to_char(trc_TotLibTA));
4329 WrtHrTrc('trc_LibFyTA: '||to_char(trc_LibFyTA));
4330 WrtHrTrc('trc_LibFpTA: '||to_char(trc_LibFpTA));
4331 -- Bonus Provision
4332 WrtHrTrc('trc_BonProYtd: '||to_char(trc_BonProYtd));
4333 WrtHrTrc('trc_BonProPtd: '||to_char(trc_BonProPtd));
4334 WrtHrTrc('trc_BonProErn: '||to_char(trc_BonProErn));
4335 WrtHrTrc('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
4336 WrtHrTrc('trc_TxbBonProIncWoDon: '||to_char(trc_TxbBonProIncWoDon));
4337 WrtHrTrc('trc_TotLibBP: '||to_char(trc_TotLibBP));
4338 WrtHrTrc('trc_LibFyBP: '||to_char(trc_LibFyBP));
4339 WrtHrTrc('trc_LibFpBP: '||to_char(trc_LibFpBP));
4340 -- Annual Bonus
4341 WrtHrTrc('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
4342 WrtHrTrc('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
4343 WrtHrTrc('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
4344 WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
4345 WrtHrTrc('trc_TxbAnnBonIncWoDon: '||to_char(trc_TxbAnnBonIncWoDon));
4346 WrtHrTrc('trc_TotLibAB: '||to_char(trc_TotLibAB));
4347 WrtHrTrc('trc_LibFyAB: '||to_char(trc_LibFyAB));
4348 WrtHrTrc('trc_LibFpAB: '||to_char(trc_LibFpAB));
4349 -- Annual Payments
4350 WrtHrTrc('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
4351 WrtHrTrc('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
4352 WrtHrTrc('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
4353 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
4354 WrtHrTrc('trc_TxbAnnPymIncWoDon: '||to_char(trc_TxbAnnPymIncWoDon));
4355 WrtHrTrc('trc_TotLibAP: '||to_char(trc_TotLibAP));
4356 WrtHrTrc('trc_LibFyAP: '||to_char(trc_LibFyAP));
4357 WrtHrTrc('trc_LibFpAP: '||to_char(trc_LibFpAP));
4358 -- Pubilc Office Allowance
4359 WrtHrTrc('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
4360 WrtHrTrc('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
4361 WrtHrTrc('trc_PblOffErn: '||to_char(trc_PblOffErn));
4362 WrtHrTrc('trc_LibFyPO: '||to_char(trc_LibFyPO));
4363 WrtHrTrc('trc_LibFpPO: '||to_char(trc_LibFpPO));
4364
4365 -- NTG Annual Payments
4366 WrtHrTrc('trc_AnnPymNtgYtd: '||to_char(trc_AnnPymNtgYtd));
4367 WrtHrTrc('trc_AnnPymNtgPtd: '||to_char(trc_AnnPymNtgPtd));
4368 WrtHrTrc('trc_AnnPymNtgErn: '||to_char(trc_AnnPymNtgErn));
4369 WrtHrTrc('trc_TxbAnnPymNtgInc: '||to_char(trc_TxbAnnPymNtgInc));
4370 WrtHrTrc('trc_TxbAnnPymNtgIncWoDon: '||to_char(trc_TxbAnnPymNtgIncWoDon));
4371 WrtHrTrc('trc_TotLibNtgAP: '||to_char(trc_TotLibNtgAP ));
4372 WrtHrTrc('trc_LibFyNtgAP: '||to_char(trc_LibFyNtgAP ));
4373 WrtHrTrc('trc_LibFpNtgAP: '||to_char(trc_LibFpNtgAP ));
4374
4375 -- NTG EE Debt due to Annual Payments
4376 WrtHrTrc('trc_AnnEEDbtNTGYtd: '||to_char(trc_AnnEEDbtNTGYtd));
4377 WrtHrTrc('trc_AnnEEDbtNtgPtd: '||to_char(trc_AnnEEDbtNtgPtd));
4378 WrtHrTrc('trc_AnnEEDbtNtgErn: '||to_char(trc_AnnEEDbtNtgErn));
4379 WrtHrTrc('trc_TxbAnnEEDbtNtgInc: '||to_char(trc_TxbAnnEEDbtNtgInc));
4380 WrtHrTrc('trc_TxbAnnEEDbtNtgIncWoDon:'||to_char(trc_TxbAnnEEDbtNtgIncWoDon));
4381 WrtHrTrc('trc_TotLibNtgEEDbt: '||to_char(trc_TotLibNtgEEDbt ));
4382 WrtHrTrc('trc_LibFyNtgEEDbt: '||to_char(trc_LibFyNtgEEDbt ));
4383 WrtHrTrc('trc_LibFpNtgEEDbt: '||to_char(trc_LibFpNtgEEDbt ));
4384
4385
4386 EXCEPTION
4387 WHEN OTHERS THEN
4388 IF xpt_Msg = 'No Error' THEN
4389 xpt_Msg := 'BasCalc: '||TO_CHAR(SQLCODE);
4390 END IF;
4391 RAISE xpt_E;
4392 END BasCalc;
4393
4394 -------------------------------------------------------------------------------
4395 -- CalCalc --
4396 -- Pre-Earnings Tax Calculation --
4397 -------------------------------------------------------------------------------
4398 PROCEDURE CalCalc AS
4399 -- Variables
4400 --
4401 l_Np BALANCE;
4402
4403
4404 BEGIN
4405
4406 hr_utility.set_location('py_za_tx_01032012.CalCalc',1);
4407 -- Identify the calculation
4408 --
4409 trc_CalTyp := 'CalCalc';
4410
4411 -- Update Global Balance Values with correct TAXABLE values
4412 --
4413 --Fix for bug#10372926
4414 --py_za_tx_utl_01032012.TrvAll;
4415
4416 hr_utility.set_location('py_za_tx_01032012.CalCalc',2);
4417
4418 -- Calendar Ytd Taxable Income
4419 --
4420 trc_TxbIncYtd := ( bal_TOT_TXB_NI_CYTD
4421 + bal_TOT_TXB_FB_CYTD
4422 + bal_TOT_TXB_TA_CYTD );
4423 -- If there is no Income Execute the Base calculation
4424 --
4425 IF trc_TxbIncYtd = 0 THEN
4426 hr_utility.set_location('py_za_tx_01032012.CalCalc',3);
4427 BasCalc;
4428 ELSE -- continue CalCalc
4429 hr_utility.set_location('py_za_tx_01032012.CalCalc',4);
4430 -- Site Factor
4431 --
4432 trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032012.DaysWorked;
4433
4434 -- Rebates
4435 py_za_tx_utl_01032012.SetRebates;
4436
4437 -- Abatements
4438 py_za_tx_utl_01032012.Abatements;
4439
4440 hr_utility.set_location('py_za_tx_01032012.CalCalc',5);
4441
4442 trc_curMedTxCrEle := greatest(bal_MED_AID_TAX_CR_YTD + bal_ANN_MED_AID_TAX_CR_YTD,0,bal_MED_AID_TAX_CR_USED_YTD + bal_MED_AID_TAX_CR_USED_LS_YTD);
4443
4444 -- Deemed Remuneration
4445 --
4446 -- Run Deemed Remuneration
4447 trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
4448
4449 -- Skip the calculation if there is No Income
4450 IF trc_DmdRmnRun <> 0 THEN
4451 hr_utility.set_location('py_za_tx_01032012.CalCalc',6);
4452 -- Taxable Deemed Remuneration
4453 trc_TxbDmdRmn := trc_DmdRmnRun;
4454 -- Threshold Check
4455 IF trc_TxbDmdRmn >= trc_Threshold THEN
4456 hr_utility.set_location('py_za_tx_01032012.CalCalc',7);
4457 -- Tax Liability
4458 trc_TotLibDR := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbDmdRmn);
4459 ELSE
4460 hr_utility.set_location('py_za_tx_01032012.CalCalc',8);
4461 trc_TotLibDR := 0;
4462 END IF;
4463 ELSE
4464 hr_utility.set_location('py_za_tx_01032012.CalCalc',9);
4465 trc_TotLibDR := 0;
4466 END IF;
4467
4468 hr_utility.set_location('py_za_tx_01032012.CalCalc',10);
4469
4470 -- Base Earnings
4471 --
4472 -- Base Earnings
4473 trc_BseErn := trc_TxbIncYtd * trc_SitFactor;
4474 --TYS2010
4475 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4476 -- Taxable Base Income
4477 trc_TxbBseIncWoDon := trc_BseErn - trc_PerTotAbm;
4478 trc_TxbBseInc :=trc_TxbBseIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbBseIncWoDon,trc_PerDonAmt);
4479
4480 -- Threshold Check
4481 IF trc_TxbBseInc >= trc_Threshold THEN
4482 hr_utility.set_location('py_za_tx_01032012.CalCalc',11);
4483 -- Tax Liability
4484 trc_TotLibBse := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbBseInc);
4485 trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
4486 ELSE
4487 hr_utility.set_location('py_za_tx_01032012.CalCalc',12);
4488 trc_TotLibBse := trc_TotLibDR;
4489 END IF;
4490
4491 hr_utility.set_location('py_za_tx_01032012.CalCalc',13);
4492 -- Annual Bonus
4493 --
4494 -- Ytd Annual Bonus
4495 trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
4496 -- Skip the calculation if there is No Income
4497 IF trc_AnnBonYtd <> 0 THEN
4498 hr_utility.set_location('py_za_tx_01032012.CalCalc',14);
4499 -- Annual Bonus Earnings
4500 trc_AnnBonErn := trc_AnnBonYtd + trc_BseErn;
4501 -- Taxable Annual Bonus Income
4502 --TYS2010
4503 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4504 trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
4505 trc_TxbAnnBonInc :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
4506
4507 -- Threshold Check
4508 IF trc_TxbAnnBonInc >= trc_Threshold THEN
4509 hr_utility.set_location('py_za_tx_01032012.CalCalc',15);
4510 -- Tax Liability
4511 trc_TotLibAB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnBonInc);
4512 trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
4513 trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
4514 -- Check Bonus Provision
4515 IF bal_BP_YTD <> 0 THEN
4516 hr_utility.set_location('py_za_tx_01032012.CalCalc',16);
4517 -- Check Bonus Provision Frequency
4518 IF dbi_BP_TX_RCV = 'A' THEN
4519 hr_utility.set_location('py_za_tx_01032012.CalCalc',17);
4520 trc_LibFpAB := 0;
4521 ELSE
4522 hr_utility.set_location('py_za_tx_01032012.CalCalc',18);
4523 trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD + bal_MED_TAX_CR_USED_BP_YTD
4524 + bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
4525 -- Start Medical Tax Credit Changes
4526 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4527 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
4528 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AB_YTD
4529 ,p_Tx_RUN => trc_LibFpAB
4530 ,p_Tx_YTD => bal_TX_ON_AB_YTD
4531 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAB
4532 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAB_Upd
4533 );
4534 trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
4535 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
4536 hr_utility.set_location(' trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
4537 hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
4538 hr_utility.set_location(' trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
4539 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4540 -- End Medical Tax Credit Changes
4541
4542 END IF;
4543 ELSE
4544 hr_utility.set_location('py_za_tx_01032012.CalCalc',19);
4545 trc_LibFpAB := trc_LibFyAB - (bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
4546
4547 -- Start Medical Tax Credit Changes
4548 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4549 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
4550 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AB_YTD
4551 ,p_Tx_RUN => trc_LibFpAB
4552 ,p_Tx_YTD => bal_TX_ON_AB_YTD
4553 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAB
4554 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAB_Upd
4555 );
4556 trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
4557 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
4558 hr_utility.set_location(' trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
4559 hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
4560 hr_utility.set_location(' trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
4561 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4562 -- End Medical Tax Credit Changes
4563
4564 END IF;
4565 ELSE
4566 hr_utility.set_location('py_za_tx_01032012.CalCalc',20);
4567 trc_TotLibAB := trc_TotLibBse;
4568 END IF;
4569 ELSE
4570 hr_utility.set_location('py_za_tx_01032012.CalCalc',21);
4571 trc_AnnBonErn := trc_BseErn;
4572 trc_TxbAnnBonInc := trc_TxbBseInc;
4573 trc_TotLibAB := trc_TotLibBse;
4574 END IF;
4575
4576 hr_utility.set_location('py_za_tx_01032012.CalCalc',22);
4577
4578 -- Annual Payments
4579 --
4580 -- Ytd Annual Payments
4581 trc_AnnPymYtd := bal_TOT_TXB_AP_YTD ;
4582 -- Skip the calculation if there is No Income
4583 IF trc_AnnPymYtd <> 0 THEN
4584 hr_utility.set_location('py_za_tx_01032012.CalCalc',23);
4585 -- Annual Payments Earnings
4586 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
4587 -- Taxable Annual Payments Income
4588 --TYS2010
4589 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4590 trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
4591 trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
4592
4593 -- Threshold Check
4594 IF trc_TxbAnnPymInc >= trc_Threshold THEN
4595 hr_utility.set_location('py_za_tx_01032012.CalCalc',24);
4596 -- Tax Liability
4597 trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymInc);
4598 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
4599 trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
4600 trc_LibFpAP := trc_LibFyAP - (bal_TX_ON_AP_YTD + bal_MED_TAX_CR_USED_AP_YTD);
4601
4602 -- Start Medical Tax Credit Changes
4603 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4604 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
4605 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AP_YTD
4606 ,p_Tx_RUN => trc_LibFpAP
4607 ,p_Tx_YTD => bal_TX_ON_AP_YTD
4608 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAP
4609 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAP_Upd
4610 );
4611 trc_LibFpAP_Upd := trc_LibFpAP - trc_MedTxCrUsedAP_Upd;
4612 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAP,0);
4613 hr_utility.set_location(' trc_MedTxCrUsedAP:'||trc_MedTxCrUsedAP,10);
4614 hr_utility.set_location('trc_MedTxCrUsedAP_Upd:'||trc_MedTxCrUsedAP_Upd,10);
4615 hr_utility.set_location(' trc_LibFpAP_Upd:'||trc_LibFpAP_Upd,10);
4616 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4617 -- End Medical Tax Credit Changes
4618
4619 ELSE
4620 hr_utility.set_location('py_za_tx_01032012.CalCalc',25);
4621 trc_TotLibAP := trc_TotLibAB;
4622 END IF;
4623 ELSE
4624 hr_utility.set_location('py_za_tx_01032012.CalCalc',26);
4625 trc_AnnPymErn := trc_AnnBonErn;
4626 trc_TxbAnnPymInc := trc_TxbAnnBonInc;
4627 trc_TotLibAP := trc_TotLibAB;
4628 END IF;
4629
4630 -- Net to Gross Annual Payments.
4631 -- Ytd Net to Gross Annual Payments
4632 trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
4633 -- Skip the calculation if there is No Income
4634 IF trc_AnnPymNtgYtd <> 0 THEN
4635 hr_utility.set_location('py_za_tx_01032012.CalCalc',27);
4636 -- Annual Payments Net to Gross Earnings
4637 trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_AnnPymErn;
4638
4639 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4640 -- Taxable Annual Payments Income
4641 trc_TxbAnnPymNtgIncWoDon := trc_AnnPymNtgErn - trc_AnnTotAbm;
4642 trc_TxbAnnPymNtgInc :=trc_TxbAnnPymNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymNtgIncWoDon,trc_AnnDonAmt);
4643
4644 -- Threshold Check
4645 IF trc_TxbAnnPymNtgInc >= trc_Threshold THEN
4646 hr_utility.set_location('py_za_tx_01032012.CalCalc',28);
4647 -- Tax Liability
4648 trc_TotLibNtgAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymNtgInc);
4649 trc_LibFyNtgAP := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibAP);
4650 trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibAP);
4651
4652 hr_utility.set_location('py_za_tx_01032012.CalCalc',29);
4653 trc_LibFpNtgAP := trc_LibFyNtgAP - (bal_TX_ON_AP_NTG_YTD + bal_MED_TAX_CR_USED_NG_YTD);
4654
4655 -- Start Medical Tax Credit Changes
4656 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4657 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
4658 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_NG_YTD
4659 ,p_Tx_RUN => trc_LibFpNtgAP
4660 ,p_Tx_YTD => bal_TX_ON_AP_NTG_YTD
4661 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedNtgAP
4662 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedNtgAP_Upd
4663 );
4664 trc_LibFpNtgAP_Upd := trc_LibFpNtgAP - trc_MedTxCrUsedNtgAP_Upd;
4665 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgAP,0);
4666 hr_utility.set_location(' trc_MedTxCrUsedNtgAP:'||trc_MedTxCrUsedNtgAP,10);
4667 hr_utility.set_location('trc_MedTxCrUsedNtgAP_Upd:'||trc_MedTxCrUsedNtgAP_Upd,10);
4668 hr_utility.set_location(' trc_LibFpNtgAP_Upd:'||trc_LibFpNtgAP_Upd,10);
4669 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4670 -- End Medical Tax Credit Changes
4671
4672 ELSE
4673 hr_utility.set_location('py_za_tx_01032012.CalCalc',30);
4674 trc_TotLibNtgAP := trc_TotLibAP;
4675 END IF;
4676 ELSE
4677 hr_utility.set_location('py_za_tx_01032012.CalCalc',31);
4678 trc_AnnPymNtgErn := trc_AnnPymErn;
4679 trc_TxbAnnPymNtgInc := trc_TxbAnnPymInc;
4680 trc_TotLibNtgAP := trc_TotLibAP;
4681 END IF;
4682
4683 -- Ytd Net to Gross EE Debt arised due to Net to Gross Annual Payments
4684 trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
4685 -- Skip the calculation if there is No Income
4686 IF trc_AnnEEDbtNtgYtd <> 0 THEN
4687 hr_utility.set_location('py_za_tx_01032012.CalCalc',32);
4688 -- Annual EE Debt Net to Gross Earnings
4689 trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
4690
4691 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4692 trc_TxbAnnEEDbtNtgIncWoDon := trc_AnnEEDbtNtgErn - trc_AnnTotNTGAbm;
4693 trc_TxbAnnEEDbtNtgInc :=trc_TxbAnnEEDbtNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnEEDbtNtgIncWoDon,trc_AnnDonAmt);
4694
4695 -- Threshold Check
4696 IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
4697 hr_utility.set_location('py_za_tx_01032012.CalCalc',33);
4698 -- Tax Liability
4699 trc_TotLibNtgEEDbt := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnEEDbtNtgInc);
4700 trc_LibFyNtgEEDbt := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
4701 trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
4702
4703 hr_utility.set_location('py_za_tx_01032012.CalCalc',34);
4704 trc_LibFpNtgEEDbt := trc_LibFyNtgEEDbt - (bal_TX_ON_EE_DBT_NTG_YTD + bal_MED_TAX_CR_USED_EE_YTD);
4705
4706 -- Start Medical Tax Credit Changes
4707 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4708 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
4709 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_EE_YTD
4710 ,p_Tx_RUN => trc_LibFpNtgEEDbt
4711 ,p_Tx_YTD => bal_TX_ON_EE_DBT_NTG_YTD
4712 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedNtgEEDbt
4713 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedNtgEEDbt_Upd
4714 );
4715 trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt - trc_MedTxCrUsedNtgEEDbt_Upd;
4716 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgEEDbt,0);
4717 hr_utility.set_location(' trc_MedTxCrUsedNtgEEDbt:'||trc_MedTxCrUsedNtgEEDbt,10);
4718 hr_utility.set_location('trc_MedTxCrUsedNtgEEDbt_Upd:'||trc_MedTxCrUsedNtgEEDbt_Upd,10);
4719 hr_utility.set_location(' trc_LibFpNtgEEDbt_Upd:'||trc_LibFpNtgEEDbt_Upd,10);
4720 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
4721 -- End Medical Tax Credit Changes
4722
4723 ELSE
4724 hr_utility.set_location('py_za_tx_01032012.CalCalc',35);
4725 trc_TotLibNtgEEDbt := trc_TotLibNtgAP;
4726 END IF;
4727 ELSE
4728 hr_utility.set_location('py_za_tx_01032012.CalCalc',36);
4729 trc_AnnEEDbtNtgErn := trc_AnnPymNtgErn;
4730 trc_TxbAnnEEDbtNtgInc := trc_TxbAnnPymNtgInc;
4731 trc_TotLibNtgEEDbt := trc_TotLibNtgAP;
4732 END IF;
4733
4734 trc_LibFpAB := trc_LibFpAB_Upd;
4735 trc_LibFpAP := trc_LibFpAP_Upd;
4736 trc_LibFpNtgAP := trc_LibFpNtgAP_Upd;
4737 trc_LibFpNtgEEDbt := trc_LibFpNtgEEDbt_Upd;
4738
4739 -- Net pay Validation
4740 --
4741 py_za_tx_utl_01032012.ValidateTaxOns;
4742
4743 -- Deemed Remuneration
4744 WrtHrTrc('trc_TxbDmdRmn: '||to_char(trc_TxbDmdRmn));
4745 WrtHrTrc('trc_TotLibDR: '||to_char(trc_TotLibDR));
4746 WrtHrTrc('trc_LibFyDR: '||to_char(trc_LibFyDR));
4747 WrtHrTrc('trc_LibFpDR: '||to_char(trc_LibFpDR));
4748 -- Base Income
4749 WrtHrTrc('trc_BseErn: '||to_char(trc_BseErn));
4750 WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
4751 WrtHrTrc('trc_TxbBseIncWoDon: '||to_char(trc_TxbBseIncWoDon));
4752 WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
4753 -- Normal Income
4754 WrtHrTrc('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
4755 WrtHrTrc('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
4756 WrtHrTrc('trc_NorErn: '||to_char(trc_NorErn));
4757 WrtHrTrc('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
4758 WrtHrTrc('trc_TxbNorIncWoDon: '||to_char(trc_TxbNorInc));
4759 WrtHrTrc('trc_TotLibNI: '||to_char(trc_TotLibNI));
4760 WrtHrTrc('trc_LibFyNI: '||to_char(trc_LibFyNI));
4761 WrtHrTrc('trc_LibFpNI: '||to_char(trc_LibFpNI));
4762 -- Fringe Benefits
4763 WrtHrTrc('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
4764 WrtHrTrc('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
4765 WrtHrTrc('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
4766 WrtHrTrc('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
4767 WrtHrTrc('trc_TxbFrnIncWoDon: '||to_char(trc_TxbFrnIncWoDon));
4768 WrtHrTrc('trc_TotLibFB: '||to_char(trc_TotLibFB));
4769 WrtHrTrc('trc_LibFyFB: '||to_char(trc_LibFyFB));
4770 WrtHrTrc('trc_LibFpFB: '||to_char(trc_LibFpFB));
4771 -- Travel Allowance
4772 WrtHrTrc('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
4773 WrtHrTrc('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
4774 WrtHrTrc('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
4775 WrtHrTrc('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
4776 WrtHrTrc('trc_TxbTrvIncWoDon: '||to_char(trc_TxbTrvIncWoDon));
4777 WrtHrTrc('trc_TotLibTA: '||to_char(trc_TotLibTA));
4778 WrtHrTrc('trc_LibFyTA: '||to_char(trc_LibFyTA));
4779 WrtHrTrc('trc_LibFpTA: '||to_char(trc_LibFpTA));
4780 -- Bonus Provision
4781 WrtHrTrc('trc_BonProYtd: '||to_char(trc_BonProYtd));
4782 WrtHrTrc('trc_BonProPtd: '||to_char(trc_BonProPtd));
4783 WrtHrTrc('trc_BonProErn: '||to_char(trc_BonProErn));
4784 WrtHrTrc('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
4785 WrtHrTrc('trc_TxbBonProIncWoDon: '||to_char(trc_TxbBonProIncWoDon));
4786 WrtHrTrc('trc_TotLibBP: '||to_char(trc_TotLibBP));
4787 WrtHrTrc('trc_LibFyBP: '||to_char(trc_LibFyBP));
4788 WrtHrTrc('trc_LibFpBP: '||to_char(trc_LibFpBP));
4789 -- Annual Bonus
4790 WrtHrTrc('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
4791 WrtHrTrc('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
4792 WrtHrTrc('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
4793 WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
4794 WrtHrTrc('trc_TxbAnnBonIncWoDon: '||to_char(trc_TxbAnnBonIncWoDon));
4795 WrtHrTrc('trc_TotLibAB: '||to_char(trc_TotLibAB));
4796 WrtHrTrc('trc_LibFyAB: '||to_char(trc_LibFyAB));
4797 WrtHrTrc('trc_LibFpAB: '||to_char(trc_LibFpAB));
4798 -- Annual Payments
4799 WrtHrTrc('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
4800 WrtHrTrc('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
4801 WrtHrTrc('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
4802 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
4803 WrtHrTrc('trc_TxbAnnPymIncWoDon: '||to_char(trc_TxbAnnPymIncWoDon));
4804 WrtHrTrc('trc_TotLibAP: '||to_char(trc_TotLibAP));
4805 WrtHrTrc('trc_LibFyAP: '||to_char(trc_LibFyAP));
4806 WrtHrTrc('trc_LibFpAP: '||to_char(trc_LibFpAP));
4807 -- Pubilc Office Allowance
4808 WrtHrTrc('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
4809 WrtHrTrc('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
4810 WrtHrTrc('trc_PblOffErn: '||to_char(trc_PblOffErn));
4811 WrtHrTrc('trc_LibFyPO: '||to_char(trc_LibFyPO));
4812 WrtHrTrc('trc_LibFpPO: '||to_char(trc_LibFpPO));
4813
4814 -- NTG Annual Payments
4815 WrtHrTrc('trc_AnnPymNtgYtd: '||to_char(trc_AnnPymNtgYtd));
4816 WrtHrTrc('trc_AnnPymNtgPtd: '||to_char(trc_AnnPymNtgPtd));
4817 WrtHrTrc('trc_AnnPymNtgErn: '||to_char(trc_AnnPymNtgErn));
4818 WrtHrTrc('trc_TxbAnnPymNtgInc: '||to_char(trc_TxbAnnPymNtgInc));
4819 WrtHrTrc('trc_TxbAnnPymNtgIncWoDon: '||to_char(trc_TxbAnnPymNtgIncWoDon));
4820 WrtHrTrc('trc_TotLibNtgAP: '||to_char(trc_TotLibNtgAP ));
4821 WrtHrTrc('trc_LibFyNtgAP: '||to_char(trc_LibFyNtgAP ));
4822 WrtHrTrc('trc_LibFpNtgAP: '||to_char(trc_LibFpNtgAP ));
4823
4824 -- NTG EE Debt due to Annual Payments
4825 WrtHrTrc('trc_AnnEEDbtNTGYtd: '||to_char(trc_AnnEEDbtNTGYtd));
4826 WrtHrTrc('trc_AnnEEDbtNtgPtd: '||to_char(trc_AnnEEDbtNtgPtd));
4827 WrtHrTrc('trc_AnnEEDbtNtgErn: '||to_char(trc_AnnEEDbtNtgErn));
4828 WrtHrTrc('trc_TxbAnnEEDbtNtgInc: '||to_char(trc_TxbAnnEEDbtNtgInc));
4829 WrtHrTrc('trc_TxbAnnEEDbtNtgIncWoDon:'||to_char(trc_TxbAnnEEDbtNtgIncWoDon));
4830 WrtHrTrc('trc_TotLibNtgEEDbt: '||to_char(trc_TotLibNtgEEDbt ));
4831 WrtHrTrc('trc_LibFyNtgEEDbt: '||to_char(trc_LibFyNtgEEDbt ));
4832 WrtHrTrc('trc_LibFpNtgEEDbt: '||to_char(trc_LibFpNtgEEDbt ));
4833
4834
4835 END IF;
4836
4837 hr_utility.set_location('py_za_tx_01032012.CalCalc',37);
4838
4839 EXCEPTION
4840 WHEN OTHERS THEN
4841 IF xpt_Msg = 'No Error' THEN
4842 xpt_Msg := 'CalCalc: '||TO_CHAR(SQLCODE);
4843 END IF;
4844 RAISE xpt_E;
4845 END CalCalc;
4846 -------------------------------------------------------------------------------
4847 -- YtdCalc --
4848 -- Pre-Earnings Tax Calculation --
4849 -------------------------------------------------------------------------------
4850 PROCEDURE YtdCalc AS
4851 -- Variables
4852 --
4853 l_Np BALANCE;
4854
4855 BEGIN
4856
4857 hr_utility.set_location('py_za_tx_01032012.YtdCalc',1);
4858 -- Identify the calculation
4859 --
4860 trc_CalTyp := 'YtdCalc';
4861
4862 -- Update Global Balance Values with correct TAXABLE values
4863 --Fix for bug#10372926
4864 --py_za_tx_utl_01032012.TrvAll;
4865
4866 hr_utility.set_location('py_za_tx_01032012.YtdCalc',2);
4867
4868 -- Ytd Taxable Income
4869 trc_TxbIncYtd :=
4870 ( bal_TOT_TXB_NI_YTD
4871 + bal_TOT_TXB_FB_YTD
4872 + bal_TOT_TXB_TA_YTD
4873 + bal_BP_YTD
4874 );
4875 -- If the Ytd Taxable Income = 0, execute the CalCalc
4876 IF trc_TxbIncYtd = 0 THEN
4877 hr_utility.set_location('py_za_tx_01032012.YtdCalc',3);
4878 --When a YtdCalc or CalCalc would be performed,
4879 --the system must do a Bascalc if the method is non-cumulative
4880 IF (dbi_TX_MTD = 'N') then
4881 BasCalc;
4882 ELSE
4883 CalCalc;
4884 END IF;
4885 ELSE --Continue YtdCalc
4886 hr_utility.set_location('py_za_tx_01032012.YtdCalc',4);
4887 -- Site Factor
4888 trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032012.DaysWorked;
4889
4890 -- Rebates
4891 py_za_tx_utl_01032012.SetRebates;
4892
4893 -- Abatements
4894 py_za_tx_utl_01032012.Abatements;
4895
4896 -- Arrive at Medical tax credit Available for Annual Bonus and Annual paymet
4897 trc_curMedTxCrEle := greatest(bal_MED_AID_TAX_CR_YTD + bal_ANN_MED_AID_TAX_CR_YTD
4898 - (bal_MED_TAX_CR_USED_DR_YTD + bal_MED_TAX_CR_USED_NI_YTD + bal_MED_TAX_CR_USED_FB_YTD + bal_MED_TAX_CR_USED_TA_YTD + bal_MED_TAX_CR_USED_BP_YTD),0,
4899 bal_MED_AID_TAX_CR_USED_YTD + bal_MED_AID_TAX_CR_USED_LS_YTD-(bal_MED_TAX_CR_USED_DR_YTD + bal_MED_TAX_CR_USED_NI_YTD + bal_MED_TAX_CR_USED_FB_YTD + bal_MED_TAX_CR_USED_TA_YTD + bal_MED_TAX_CR_USED_BP_YTD)) ;
4900
4901 hr_utility.set_location('py_za_tx_01032012.YtdCalc',5);
4902
4903
4904 --Bug 9369895
4905 --Used in abatement calculation of Package structure employees
4906 bal_TOT_TXB_PO_YTD := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
4907
4908 -- Deemed Remuneration
4909 --
4910 -- Run Deemed Remuneration
4911 trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
4912
4913 -- Skip the calculation if there is No Income
4914 IF trc_DmdRmnRun <> 0 THEN
4915 hr_utility.set_location('py_za_tx_01032012.YtdCalc',6);
4916 -- Taxable Deemed Remuneration
4917 trc_TxbDmdRmn := trc_DmdRmnRun;
4918 -- Threshold Check
4919 IF trc_TxbDmdRmn >= trc_Threshold THEN
4920 hr_utility.set_location('py_za_tx_01032012.YtdCalc',7);
4921 -- Tax Liability
4922 trc_TotLibDR := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbDmdRmn);
4923 ELSE
4924 hr_utility.set_location('py_za_tx_01032012.YtdCalc',8);
4925 trc_TotLibDR := 0;
4926 END IF;
4927 ELSE
4928 hr_utility.set_location('py_za_tx_01032012.YtdCalc',9);
4929 trc_TotLibDR := 0;
4930 END IF;
4931
4932 hr_utility.set_location('py_za_tx_01032012.YtdCalc',10);
4933
4934 -- Base Earnings
4935 --
4936 -- Base Earnings
4937 trc_BseErn := trc_TxbIncYtd * trc_SitFactor;
4938 -- Taxable Base Income
4939 --TYS2010
4940 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4941 trc_TxbBseIncWoDon := trc_BseErn - trc_PerTotAbm;
4942 trc_TxbBseInc :=trc_TxbBseIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbBseIncWoDon,trc_PerDonAmt);
4943
4944 -- Threshold Check
4945 IF trc_TxbBseInc >= trc_Threshold THEN
4946 hr_utility.set_location('py_za_tx_01032012.YtdCalc',11);
4947 -- Tax Liability
4948 trc_TotLibBse := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbBseInc);
4949 trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
4950 ELSE
4951 hr_utility.set_location('py_za_tx_01032012.YtdCalc',12);
4952 trc_TotLibBse := trc_TotLibDR;
4953 END IF;
4954
4955 hr_utility.set_location('py_za_tx_01032012.YtdCalc',13);
4956
4957
4958 -- Annual Bonus
4959 --
4960 -- Ytd Annual Bonus
4961 trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
4962 -- Skip the calculation if there is No Income
4963 IF trc_AnnBonYtd <> 0 THEN
4964 hr_utility.set_location('py_za_tx_01032012.YtdCalc',14);
4965 -- Annual Bonus Earnings
4966 trc_AnnBonErn := trc_AnnBonYtd + trc_BseErn;
4967 -- Taxable Annual Bonus Income
4968 --TYS2010
4969 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
4970 trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
4971 trc_TxbAnnBonInc :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
4972
4973 -- Threshold Check
4974 IF trc_TxbAnnBonInc >= trc_Threshold THEN
4975 hr_utility.set_location('py_za_tx_01032012.YtdCalc',15);
4976 -- Tax Liability
4977 trc_TotLibAB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnBonInc);
4978 trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
4979 trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
4980 -- Check Bonus Provision
4981 IF bal_BP_YTD <> 0 THEN
4982 hr_utility.set_location('py_za_tx_01032012.YtdCalc',16);
4983 -- Check Bonus Provision Frequency
4984 IF dbi_BP_TX_RCV = 'A' THEN
4985 hr_utility.set_location('py_za_tx_01032012.YtdCalc',17);
4986 trc_LibFpAB := 0;
4987 ELSE
4988 hr_utility.set_location('py_za_tx_01032012.YtdCalc',18);
4989 trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD + bal_MED_TAX_CR_USED_BP_YTD
4990 + bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
4991
4992 -- Start Medical Tax Credit Changes
4993 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
4994 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
4995 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AB_YTD
4996 ,p_Tx_RUN => trc_LibFpAB
4997 ,p_Tx_YTD => bal_TX_ON_AB_YTD
4998 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAB
4999 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAB_Upd
5000 );
5001 trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
5002 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
5003 hr_utility.set_location(' trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
5004 hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
5005 hr_utility.set_location(' trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
5006 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5007 -- End Medical Tax Credit Changes
5008
5009 END IF;
5010 ELSE
5011 hr_utility.set_location('py_za_tx_01032012.YtdCalc',19);
5012 trc_LibFpAB := trc_LibFyAB - (bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
5013
5014 -- Start Medical Tax Credit Changes
5015 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5016 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
5017 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AB_YTD
5018 ,p_Tx_RUN => trc_LibFpAB
5019 ,p_Tx_YTD => bal_TX_ON_AB_YTD
5020 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAB
5021 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAB_Upd
5022 );
5023 trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
5024 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
5025 hr_utility.set_location(' trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
5026 hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
5027 hr_utility.set_location(' trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
5028 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5029 -- End Medical Tax Credit Changes
5030
5031 END IF;
5032 ELSE
5033 hr_utility.set_location('py_za_tx_01032012.YtdCalc',20);
5034 trc_TotLibAB := trc_TotLibBse;
5035
5036 END IF;
5037 ELSE
5038 hr_utility.set_location('py_za_tx_01032012.YtdCalc',21);
5039 trc_AnnBonErn := trc_BseErn;
5040 trc_TxbAnnBonInc := trc_TxbBseInc;
5041 trc_TotLibAB := trc_TotLibBse;
5042 END IF;
5043
5044 hr_utility.set_location('py_za_tx_01032012.YtdCalc',22);
5045
5046
5047 -- Annual Payments
5048 --
5049 -- Ytd Annual Payments
5050 trc_AnnPymYtd := bal_TOT_TXB_AP_YTD;
5051 -- Skip the calculation if there is No Income
5052 IF trc_AnnPymYtd <> 0 THEN
5053 hr_utility.set_location('py_za_tx_01032012.YtdCalc',23);
5054 -- Annual Payments Earnings
5055 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
5056 -- Taxable Annual Payments Income
5057 --TYS2010
5058 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5059 trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
5060 trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
5061
5062 -- Threshold Check
5063 IF trc_TxbAnnPymInc >= trc_Threshold THEN
5064 hr_utility.set_location('py_za_tx_01032012.YtdCalc',24);
5065 -- Tax Liability
5066 trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymInc);
5067 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
5068 trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
5069 trc_LibFpAP := trc_LibFyAP - (bal_TX_ON_AP_YTD + bal_MED_TAX_CR_USED_AP_YTD);
5070
5071 -- Start Medical Tax Credit Changes
5072 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5073 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
5074 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AP_YTD
5075 ,p_Tx_RUN => trc_LibFpAP
5076 ,p_Tx_YTD => bal_TX_ON_AP_YTD
5077 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAP
5078 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAP_Upd
5079 );
5080 trc_LibFpAP_Upd := trc_LibFpAP - trc_MedTxCrUsedAP_Upd;
5081 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAP,0);
5082 hr_utility.set_location(' trc_MedTxCrUsedAP:'||trc_MedTxCrUsedAP,10);
5083 hr_utility.set_location('trc_MedTxCrUsedAP_Upd:'||trc_MedTxCrUsedAP_Upd,10);
5084 hr_utility.set_location(' trc_LibFpAP_Upd:'||trc_LibFpAP_Upd,10);
5085 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5086 -- End Medical Tax Credit Changes
5087
5088 ELSE
5089 hr_utility.set_location('py_za_tx_01032012.YtdCalc',25);
5090 trc_TotLibAP := trc_TotLibAB;
5091 END IF;
5092 ELSE
5093 hr_utility.set_location('py_za_tx_01032012.YtdCalc',26);
5094 trc_AnnPymErn := trc_AnnBonErn;
5095 trc_TxbAnnPymInc := trc_TxbAnnBonInc;
5096 trc_TotLibAP := trc_TotLibAB;
5097 END IF;
5098
5099
5100 -- Net to Gross Annual Payments.
5101 -- Ytd Net to Gross Annual Payments
5102 trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
5103 -- Skip the calculation if there is No Income
5104 IF trc_AnnPymNtgYtd <> 0 THEN
5105 hr_utility.set_location('py_za_tx_01032012.YtdCalc',27);
5106 -- Annual Payments Net to Gross Earnings
5107 trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_AnnPymErn;
5108
5109 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5110 -- Taxable Annual Payments Income
5111 trc_TxbAnnPymNtgIncWoDon := trc_AnnPymNtgErn - trc_AnnTotAbm;
5112 trc_TxbAnnPymNtgInc :=trc_TxbAnnPymNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymNtgIncWoDon,trc_AnnDonAmt);
5113
5114 -- Threshold Check
5115 IF trc_TxbAnnPymNtgInc >= trc_Threshold THEN
5116 hr_utility.set_location('py_za_tx_01032012.YtdCalc',28);
5117 -- Tax Liability
5118 trc_TotLibNtgAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymNtgInc);
5119 trc_LibFyNtgAP := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibAP);
5120 trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibAP);
5121
5122 hr_utility.set_location('py_za_tx_01032012.YtdCalc',29);
5123 trc_LibFpNtgAP := trc_LibFyNtgAP - (bal_TX_ON_AP_NTG_YTD + bal_MED_TAX_CR_USED_NG_YTD);
5124
5125 -- Start Medical Tax Credit Changes
5126 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5127 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
5128 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_NG_YTD
5129 ,p_Tx_RUN => trc_LibFpNtgAP
5130 ,p_Tx_YTD => bal_TX_ON_AP_NTG_YTD
5131 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedNtgAP
5132 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedNtgAP_Upd
5133 );
5134 trc_LibFpNtgAP_Upd := trc_LibFpNtgAP - trc_MedTxCrUsedNtgAP_Upd;
5135 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgAP,0);
5136 hr_utility.set_location(' trc_MedTxCrUsedNtgAP:'||trc_MedTxCrUsedNtgAP,10);
5137 hr_utility.set_location('trc_MedTxCrUsedNtgAP_Upd:'||trc_MedTxCrUsedNtgAP_Upd,10);
5138 hr_utility.set_location(' trc_LibFpNtgAP_Upd:'||trc_LibFpNtgAP_Upd,10);
5139 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5140 -- End Medical Tax Credit Changes
5141
5142 ELSE
5143 hr_utility.set_location('py_za_tx_01032012.YtdCalc',30);
5144 trc_TotLibNtgAP := trc_TotLibAP;
5145 -- trc_LibFpNtgAP := -1 * bal_TX_ON_AP_NTG_YTD;
5146 END IF;
5147 ELSE
5148 hr_utility.set_location('py_za_tx_01032012.YtdCalc',31);
5149 trc_AnnPymNtgErn := trc_AnnPymErn;
5150 trc_TxbAnnPymNtgInc := trc_TxbAnnPymInc;
5151 trc_TotLibNtgAP := trc_TotLibAP;
5152 -- trc_LibFpNtgAP := -1 * bal_TX_ON_AP_NTG_YTD;
5153 END IF;
5154
5155
5156 -- Ytd Net to Gross EE Debt arised due to Net to Gross Annual Payments
5157 trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
5158 -- Skip the calculation if there is No Income
5159 IF trc_AnnEEDbtNtgYtd <> 0 THEN
5160 hr_utility.set_location('py_za_tx_01032012.YtdCalc',32);
5161 -- Annual EE Debt Net to Gross Earnings
5162 trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
5163
5164 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5165 trc_TxbAnnEEDbtNtgIncWoDon := trc_AnnEEDbtNtgErn - trc_AnnTotNTGAbm;
5166 trc_TxbAnnEEDbtNtgInc :=trc_TxbAnnEEDbtNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnEEDbtNtgIncWoDon,trc_AnnDonAmt);
5167
5168 -- Threshold Check
5169 IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
5170 hr_utility.set_location('py_za_tx_01032012.YtdCalc',33);
5171 -- Tax Liability
5172 trc_TotLibNtgEEDbt := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnEEDbtNtgInc);
5173 trc_LibFyNtgEEDbt := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
5174 trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
5175
5176 hr_utility.set_location('py_za_tx_01032012.YtdCalc',34);
5177 trc_LibFpNtgEEDbt := trc_LibFyNtgEEDbt - (bal_TX_ON_EE_DBT_NTG_YTD + bal_MED_TAX_CR_USED_EE_YTD);
5178
5179 -- Start Medical Tax Credit Changes
5180 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5181 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
5182 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_EE_YTD
5183 ,p_Tx_RUN => trc_LibFpNtgEEDbt
5184 ,p_Tx_YTD => bal_TX_ON_EE_DBT_NTG_YTD
5185 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedNtgEEDbt
5186 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedNtgEEDbt_Upd
5187 );
5188 trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt - trc_MedTxCrUsedNtgEEDbt_Upd;
5189 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgEEDbt,0);
5190 hr_utility.set_location(' trc_MedTxCrUsedNtgEEDbt:'||trc_MedTxCrUsedNtgEEDbt,10);
5191 hr_utility.set_location('trc_MedTxCrUsedNtgEEDbt_Upd:'||trc_MedTxCrUsedNtgEEDbt_Upd,10);
5192 hr_utility.set_location(' trc_LibFpNtgEEDbt_Upd:'||trc_LibFpNtgEEDbt_Upd,10);
5193 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5194 -- End Medical Tax Credit Changes
5195
5196 ELSE
5197 hr_utility.set_location('py_za_tx_01032012.YtdCalc',35);
5198 trc_TotLibNtgEEDbt := trc_TotLibNtgAP;
5199 --trc_LibFpNtgEEDbt := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
5200 END IF;
5201 ELSE
5202 hr_utility.set_location('py_za_tx_01032012.YtdCalc',36);
5203 trc_AnnEEDbtNtgErn := trc_AnnPymNtgErn;
5204 trc_TxbAnnEEDbtNtgInc := trc_TxbAnnPymNtgInc;
5205 trc_TotLibNtgEEDbt := trc_TotLibNtgAP;
5206 --trc_LibFpNtgEEDbt := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
5207 END IF;
5208
5209 trc_LibFpAB := trc_LibFpAB_Upd;
5210 trc_LibFpAP := trc_LibFpAP_Upd;
5211 trc_LibFpNtgAP := trc_LibFpNtgAP_Upd;
5212 trc_LibFpNtgEEDbt := trc_LibFpNtgEEDbt_Upd;
5213
5214 -- Net Pay validation
5215 --
5216 py_za_tx_utl_01032012.ValidateTaxOns;
5217
5218 hr_utility.set_location('py_za_tx_01032012.YtdCalc',37);
5219
5220 -- Deemed Remuneration
5221 WrtHrTrc('trc_TxbDmdRmn: '||to_char(trc_TxbDmdRmn));
5222 WrtHrTrc('trc_TotLibDR: '||to_char(trc_TotLibDR));
5223 WrtHrTrc('trc_LibFyDR: '||to_char(trc_LibFyDR));
5224 WrtHrTrc('trc_LibFpDR: '||to_char(trc_LibFpDR));
5225 -- Base Income
5226 WrtHrTrc('trc_BseErn: '||to_char(trc_BseErn));
5227 WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
5228 WrtHrTrc('trc_TxbBseIncWoDon: '||to_char(trc_TxbBseIncWoDon));
5229 WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
5230 -- Normal Income
5231 WrtHrTrc('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
5232 WrtHrTrc('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
5233 WrtHrTrc('trc_NorErn: '||to_char(trc_NorErn));
5234 WrtHrTrc('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
5235 WrtHrTrc('trc_TxbNorIncWoDon: '||to_char(trc_TxbNorIncWoDon));
5236 WrtHrTrc('trc_TotLibNI: '||to_char(trc_TotLibNI));
5237 WrtHrTrc('trc_LibFyNI: '||to_char(trc_LibFyNI));
5238 WrtHrTrc('trc_LibFpNI: '||to_char(trc_LibFpNI));
5239 -- Fringe Benefits
5240 WrtHrTrc('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
5241 WrtHrTrc('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
5242 WrtHrTrc('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
5243 WrtHrTrc('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
5244 WrtHrTrc('trc_TxbFrnIncWoDon: '||to_char(trc_TxbFrnIncWoDon));
5245 WrtHrTrc('trc_TotLibFB: '||to_char(trc_TotLibFB));
5246 WrtHrTrc('trc_LibFyFB: '||to_char(trc_LibFyFB));
5247 WrtHrTrc('trc_LibFpFB: '||to_char(trc_LibFpFB));
5248 -- Travel Allowance
5249 WrtHrTrc('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
5250 WrtHrTrc('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
5251 WrtHrTrc('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
5252 WrtHrTrc('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
5253 WrtHrTrc('trc_TxbTrvIncWoDon: '||to_char(trc_TxbTrvIncWoDon));
5254 WrtHrTrc('trc_TotLibTA: '||to_char(trc_TotLibTA));
5255 WrtHrTrc('trc_LibFyTA: '||to_char(trc_LibFyTA));
5256 WrtHrTrc('trc_LibFpTA: '||to_char(trc_LibFpTA));
5257 -- Bonus Provision
5258 WrtHrTrc('trc_BonProYtd: '||to_char(trc_BonProYtd));
5259 WrtHrTrc('trc_BonProPtd: '||to_char(trc_BonProPtd));
5260 WrtHrTrc('trc_BonProErn: '||to_char(trc_BonProErn));
5261 WrtHrTrc('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
5262 WrtHrTrc('trc_TxbBonProIncWoDon: '||to_char(trc_TxbBonProIncWoDon));
5263 WrtHrTrc('trc_TotLibBP: '||to_char(trc_TotLibBP));
5264 WrtHrTrc('trc_LibFyBP: '||to_char(trc_LibFyBP));
5265 WrtHrTrc('trc_LibFpBP: '||to_char(trc_LibFpBP));
5266 -- Annual Bonus
5267 WrtHrTrc('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
5268 WrtHrTrc('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
5269 WrtHrTrc('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
5270 WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
5271 WrtHrTrc('trc_TxbAnnBonIncWoDon: '||to_char(trc_TxbAnnBonIncWoDon));
5272 WrtHrTrc('trc_TotLibAB: '||to_char(trc_TotLibAB));
5273 WrtHrTrc('trc_LibFyAB: '||to_char(trc_LibFyAB));
5274 WrtHrTrc('trc_LibFpAB: '||to_char(trc_LibFpAB));
5275 -- Annual Payments
5276 WrtHrTrc('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
5277 WrtHrTrc('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
5278 WrtHrTrc('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
5279 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
5280 WrtHrTrc('trc_TxbAnnPymIncWoDon: '||to_char(trc_TxbAnnPymIncWoDon));
5281 WrtHrTrc('trc_TotLibAP: '||to_char(trc_TotLibAP));
5282 WrtHrTrc('trc_LibFyAP: '||to_char(trc_LibFyAP));
5283 WrtHrTrc('trc_LibFpAP: '||to_char(trc_LibFpAP));
5284 -- Pubilc Office Allowance
5285 WrtHrTrc('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
5286 WrtHrTrc('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
5287 WrtHrTrc('trc_PblOffErn: '||to_char(trc_PblOffErn));
5288 WrtHrTrc('trc_LibFyPO: '||to_char(trc_LibFyPO));
5289 WrtHrTrc('trc_LibFpPO: '||to_char(trc_LibFpPO));
5290
5291 -- NTG Annual Payments
5292 WrtHrTrc('trc_AnnPymNtgYtd: '||to_char(trc_AnnPymNtgYtd));
5293 WrtHrTrc('trc_AnnPymNtgPtd: '||to_char(trc_AnnPymNtgPtd));
5294 WrtHrTrc('trc_AnnPymNtgErn: '||to_char(trc_AnnPymNtgErn));
5295 WrtHrTrc('trc_TxbAnnPymNtgInc: '||to_char(trc_TxbAnnPymNtgInc));
5296 WrtHrTrc('trc_TxbAnnPymNtgIncWoDon: '||to_char(trc_TxbAnnPymNtgIncWoDon));
5297 WrtHrTrc('trc_TotLibNtgAP: '||to_char(trc_TotLibNtgAP ));
5298 WrtHrTrc('trc_LibFyNtgAP: '||to_char(trc_LibFyNtgAP ));
5299 WrtHrTrc('trc_LibFpNtgAP: '||to_char(trc_LibFpNtgAP ));
5300
5301 -- NTG EE Debt due to Annual Payments
5302 WrtHrTrc('trc_AnnEEDbtNTGYtd: '||to_char(trc_AnnEEDbtNTGYtd));
5303 WrtHrTrc('trc_AnnEEDbtNtgPtd: '||to_char(trc_AnnEEDbtNtgPtd));
5304 WrtHrTrc('trc_AnnEEDbtNtgErn: '||to_char(trc_AnnEEDbtNtgErn));
5305 WrtHrTrc('trc_TxbAnnEEDbtNtgInc: '||to_char(trc_TxbAnnEEDbtNtgInc));
5306 WrtHrTrc('trc_TxbAnnEEDbtNtgIncWoDon:'||to_char(trc_TxbAnnEEDbtNtgIncWoDon));
5307 WrtHrTrc('trc_TotLibNtgEEDbt: '||to_char(trc_TotLibNtgEEDbt ));
5308 WrtHrTrc('trc_LibFyNtgEEDbt: '||to_char(trc_LibFyNtgEEDbt ));
5309 WrtHrTrc('trc_LibFpNtgEEDbt: '||to_char(trc_LibFpNtgEEDbt ));
5310
5311 END IF;
5312
5313 EXCEPTION
5314 WHEN OTHERS THEN
5315 IF xpt_Msg = 'No Error' THEN
5316 xpt_Msg := 'YtdCalc: '||TO_CHAR(SQLCODE);
5317 END IF;
5318 RAISE xpt_E;
5319 END YtdCalc;
5320 -------------------------------------------------------------------------------
5321 -- NorCalc --
5322 -- Main Tax Calculation for Periodic Income --
5323 -------------------------------------------------------------------------------
5324 PROCEDURE NorCalc AS
5325 -- Variables
5326 --
5327 l_Np BALANCE DEFAULT 0;
5328
5329 BEGIN
5330
5331
5332 hr_utility.set_location('py_za_tx_01032012.NorCalc',1);
5333 -- Identify the calculation
5334 --
5335 trc_CalTyp := 'NorCalc';
5336
5337 -- Update Global Balance Values with correct TAXABLE values
5338 --
5339 --Fix for bug#10372926
5340 --bal_TOT_TXB_TA_PTD := bal_TOT_TXB_TA_PTD * glb_ZA_TRV_ALL_TX_PRC / 100;
5341
5342 --py_za_tx_utl_01032012.TrvAll;
5343
5344 hr_utility.set_location('py_za_tx_01032012.NorCalc',2);
5345
5346 bal_TOT_TXB_PO_PTD := bal_TOT_TXB_PO_PTD * glb_ZA_PBL_TX_PRC / 100;
5347 bal_TOT_TXB_PO_YTD := bal_TOT_TXB_PO_YTD * glb_ZA_PBL_TX_PRC / 100;
5348
5349 -- PTD Taxable Income
5350 --
5351 trc_TxbIncPtd :=
5352 ( bal_TOT_TXB_NI_PTD
5353 + bal_TOT_TXB_FB_PTD
5354 + bal_TOT_TXB_TA_PTD
5355 + bal_BP_PTD
5356 );
5357 -- Period Factor
5358 py_za_tx_utl_01032012.PeriodFactor;
5359
5360 -- Possible Periods Factor
5361 py_za_tx_utl_01032012.PossiblePeriodsFactor;
5362
5363 -- Rebates
5364 py_za_tx_utl_01032012.SetRebates;
5365
5366 -- Abatements
5367 py_za_tx_utl_01032012.Abatements;
5368
5369 hr_utility.set_location('py_za_tx_01032012.NorCalc',3);
5370
5371 trc_curMedTxCrEle := greatest(bal_MED_AID_TAX_CR_YTD + bal_ANN_MED_AID_TAX_CR_YTD,0,bal_MED_AID_TAX_CR_USED_YTD + bal_MED_AID_TAX_CR_USED_LS_YTD);
5372
5373 -- Deemed Remuneration
5374 --
5375
5376 -- Run Deemed Remuneration
5377 trc_DmdRmnRun := bal_DIR_DMD_RMN_ITD;
5378 -- Skip the calculation if there is No Income
5379 IF trc_DmdRmnRun <> 0 THEN
5380 hr_utility.set_location('py_za_tx_01032012.NorCalc',4);
5381 -- Taxable Deemed Remuneration
5382 trc_TxbDmdRmn := trc_DmdRmnRun;
5383 -- Threshold Check
5384 IF trc_TxbDmdRmn >= trc_Threshold THEN
5385 hr_utility.set_location('py_za_tx_01032012.NorCalc',5);
5386 -- Tax Liability
5387 trc_TotLibDR := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbDmdRmn);
5388 trc_LibFyDR := trc_TotLibDR - 0;
5389 trc_TotLibDR := greatest(trc_TotLibDR,0);
5390 -- DeAnnualise
5391 trc_LibFpDR := py_za_tx_utl_01032012.DeAnnualise
5392 ( p_Liab => trc_LibFyDR
5393 , p_TxOnYtd => bal_TX_ON_DR_YTD + bal_MED_TAX_CR_USED_DR_YTD
5394 , p_TxOnPtd => bal_TX_ON_DR_PTD + bal_MED_TAX_CR_USED_DR_PTD
5395 );
5396
5397 -- Start Medical Tax Credit Changes
5398 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5399 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
5400 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_DR_YTD
5401 ,p_Tx_RUN => trc_LibFpDR
5402 ,p_Tx_YTD => bal_TX_ON_DR_YTD
5403 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedDR
5404 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedDR_Upd
5405 );
5406 trc_LibFpDR_Upd := trc_LibFpDR - trc_MedTxCrUsedDR_Upd;
5407 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedDR,0);
5408 hr_utility.set_location(' trc_MedTxCrUsedDR:'||trc_MedTxCrUsedDR,10);
5409 hr_utility.set_location('trc_MedTxCrUsedDR_Upd:'||trc_MedTxCrUsedDR_Upd,10);
5410 hr_utility.set_location(' trc_LibFpDR_Upd:'||trc_LibFpDR_Upd,10);
5411 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5412 -- End Medical Tax Credit Changes
5413
5414 ELSE
5415 hr_utility.set_location('py_za_tx_01032012.NorCalc',6);
5416 -- Set Cascade Figures and Refund
5417 trc_TotLibDR := 0;
5418 trc_LibFpDR := -1 * bal_TX_ON_DR_YTD;
5419 trc_MedTxCrUsedDR_Upd := -1 * bal_MED_TAX_CR_USED_DR_YTD;
5420 trc_LibFpDR_Upd := trc_LibFpDR;
5421 trc_LibFpDROvr := TRUE;
5422 END IF;
5423 ELSE
5424 hr_utility.set_location('py_za_tx_01032012.NorCalc',7);
5425 -- Set Cascade Figures and Refund
5426 trc_TxbDmdRmn := 0;
5427 trc_TotLibDR := 0;
5428 trc_LibFpDR := -1 * bal_TX_ON_DR_YTD;
5429 trc_MedTxCrUsedDR_Upd := -1 * bal_MED_TAX_CR_USED_DR_YTD;
5430 trc_LibFpDR_Upd := trc_LibFpDR;
5431 trc_LibFpDROvr := TRUE;
5432 END IF;
5433
5434 -- Normal Income
5435 --
5436 -- Ytd Normal Income
5437 trc_NorIncYtd := bal_TOT_TXB_NI_YTD;
5438 -- Ptd Normal Income
5439 trc_NorIncPtd := bal_TOT_TXB_NI_PTD;
5440 -- Skip the calculation if there is No Income
5441 -- If Tax Method is Cumulative check for YTD Income
5442 -- If Tax Method is Non Cumulative check for PTD Income
5443 IF (dbi_TX_MTD = 'C' AND trc_NorIncYtd <> 0) OR (dbi_TX_MTD = 'N' AND trc_NorIncPtd > 0) THEN
5444 hr_utility.set_location('py_za_tx_01032012.NorCalc',8);
5445
5446 -- Annualise Normal Income
5447 trc_NorErn := py_za_tx_utl_01032012.Annualise
5448 (p_YtdInc => trc_NorIncYtd
5449 ,p_PtdInc => trc_NorIncPtd
5450 );
5451 --TYS2010
5452 -- Taxable Normal Income
5453 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5454 trc_TxbNorIncWoDon := trc_NorErn - trc_PerTotAbm;
5455 trc_TxbNorInc :=trc_TxbNorIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbNorIncWoDon,trc_PerDonAmt);
5456 -- Threshold Check
5457 IF trc_TxbNorInc >= trc_Threshold THEN
5458 hr_utility.set_location('py_za_tx_01032012.NorCalc',9);
5459 -- Tax Liability
5460 trc_TotLibNI := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbNorInc);
5461 trc_LibFyNI := trc_TotLibNI - least(trc_TotLibNI,trc_TotLibDR);
5462 trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibDR);
5463 -- DeAnnualise
5464 trc_LibFpNI := py_za_tx_utl_01032012.DeAnnualise
5465 ( p_Liab => trc_LibFyNI
5466 , p_TxOnYtd => bal_TX_ON_NI_YTD + bal_MED_TAX_CR_USED_NI_YTD
5467 , p_TxOnPtd => bal_TX_ON_NI_PTD + bal_MED_TAX_CR_USED_NI_PTD
5468 );
5469
5470 -- Start Medical Tax Credit Changes
5471 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5472 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
5473 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_NI_YTD
5474 ,p_Tx_RUN => trc_LibFpNI
5475 ,p_Tx_YTD => bal_TX_ON_NI_YTD
5476 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedNI
5477 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedNI_Upd
5478 );
5479 trc_LibFpNI_Upd := trc_LibFpNI - trc_MedTxCrUsedNI_Upd;
5480 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNI,0);
5481 hr_utility.set_location(' trc_MedTxCrUsedNI:'||trc_MedTxCrUsedNI,10);
5482 hr_utility.set_location('trc_MedTxCrUsedNI_Upd:'||trc_MedTxCrUsedNI_Upd,10);
5483 hr_utility.set_location(' trc_LibFpNI_Upd:'||trc_LibFpNI_Upd,10);
5484 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5485 -- End Medical Tax Credit Changes
5486
5487 ELSE
5488 hr_utility.set_location('py_za_tx_01032012.NorCalc',10);
5489 -- Set Cascade Figures and Refund
5490 trc_TotLibNI := trc_TotLibDR;
5491 IF (dbi_TX_MTD = 'C') THEN
5492 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
5493 trc_MedTxCrUsedNI_Upd := -1 * bal_MED_TAX_CR_USED_NI_YTD;
5494 trc_LibFpNI_Upd := trc_LibFpNI;
5495 ELSE -- in case of Non Cumilative Tax Method
5496 trc_LibFpNI := -1 * bal_TX_ON_NI_PTD;
5497 trc_MedTxCrUsedNI_Upd := -1 * bal_MED_TAX_CR_USED_NI_PTD;
5498 trc_LibFpNI_Upd := trc_LibFpNI;
5499 END IF;
5500 trc_LibFpNIOvr := TRUE;
5501 END IF;
5502 ELSE
5503 hr_utility.set_location('py_za_tx_01032012.NorCalc',11);
5504 -- Set Cascade Figures and Refund
5505 trc_NorErn := 0;
5506 trc_TxbNorInc := 0;
5507 trc_TotLibNI := trc_TotLibDR;
5508 IF (dbi_TX_MTD = 'C') THEN
5509 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
5510 trc_MedTxCrUsedNI_Upd := -1 * bal_MED_TAX_CR_USED_NI_YTD;
5511 trc_LibFpNI_Upd := trc_LibFpNI;
5512 ELSE -- in case of Non Cumilative Tax Method
5513 trc_LibFpNI := -1 * bal_TX_ON_NI_PTD;
5514 trc_MedTxCrUsedNI_Upd := -1 * bal_MED_TAX_CR_USED_NI_PTD;
5515 trc_LibFpNI_Upd := trc_LibFpNI;
5516 END IF;
5517 trc_LibFpNIOvr := TRUE;
5518 END IF;
5519
5520 -- Fringe Benefits
5521 --
5522 -- Ytd Fringe Benefits
5523 trc_FrnBenYtd := bal_TOT_TXB_FB_YTD;
5524 -- Ptd Fringe Benefits
5525 trc_FrnBenPtd := bal_TOT_TXB_FB_PTD;
5526 -- Skip the calculation if there is No Income
5527 -- If Tax Method is Cumulative check for YTD Income
5528 -- If Tax Method is Non Cumulative check for PTD Income
5529 IF (dbi_TX_MTD = 'C' AND trc_FrnBenYtd <> 0) OR (dbi_TX_MTD = 'N' AND trc_FrnBenPtd > 0) THEN
5530 hr_utility.set_location('py_za_tx_01032012.NorCalc',12);
5531
5532 -- Annualise Fringe Benefits
5533 trc_FrnBenErn := py_za_tx_utl_01032012.Annualise
5534 ( p_YtdInc => trc_FrnBenYtd
5535 , p_PtdInc => trc_FrnBenPtd
5536 ) + trc_NorErn;
5537 --TYS2010
5538 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5539 -- Taxable Fringe Income
5540 trc_TxbFrnIncWoDon := trc_FrnBenErn - trc_PerTotAbm;
5541 trc_TxbFrnInc :=trc_TxbFrnIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbFrnIncWoDon,trc_PerDonAmt);
5542
5543 -- Threshold Check
5544 IF trc_TxbFrnInc >= trc_Threshold THEN
5545 hr_utility.set_location('py_za_tx_01032012.NorCalc',13);
5546 -- Tax Liability
5547 trc_TotLibFB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbFrnInc);
5548 trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
5549 trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
5550 -- DeAnnualise
5551 trc_LibFpFB := py_za_tx_utl_01032012.DeAnnualise
5552 ( trc_LibFyFB
5553 , bal_TX_ON_FB_YTD + bal_MED_TAX_CR_USED_FB_YTD
5554 , bal_TX_ON_FB_PTD + bal_MED_TAX_CR_USED_FB_PTD
5555 );
5556
5557 -- Start Medical Tax Credit Changes
5558 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5559 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
5560 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_FB_YTD
5561 ,p_Tx_RUN => trc_LibFpFB
5562 ,p_Tx_YTD => bal_TX_ON_FB_YTD
5563 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedFB
5564 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedFB_Upd
5565 );
5566 trc_LibFpFB_Upd := trc_LibFpFB - trc_MedTxCrUsedFB_Upd;
5567 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedFB,0);
5568 hr_utility.set_location(' trc_MedTxCrUsedFB:'||trc_MedTxCrUsedFB,10);
5569 hr_utility.set_location('trc_MedTxCrUsedFB_Upd:'||trc_MedTxCrUsedFB_Upd,10);
5570 hr_utility.set_location(' trc_LibFpFB_Upd:'||trc_LibFpFB_Upd,10);
5571 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5572 -- End Medical Tax Credit Changes
5573
5574 ELSE
5575 hr_utility.set_location('py_za_tx_01032012.NorCalc',14);
5576 -- Set Cascade Figures and Refund
5577 trc_TotLibFB := trc_TotLibNI;
5578 IF (dbi_TX_MTD = 'C') THEN
5579 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
5580 trc_MedTxCrUsedFB_Upd := -1 * bal_MED_TAX_CR_USED_FB_YTD;
5581 trc_LibFpFB_Upd := trc_LibFpFB;
5582 ELSE -- in case of Non Cumilative Tax Method
5583 trc_LibFpFB := -1 * bal_TX_ON_FB_PTD;
5584 trc_MedTxCrUsedFB_Upd := -1 * bal_MED_TAX_CR_USED_FB_PTD;
5585 trc_LibFpFB_Upd := trc_LibFpFB;
5586 END IF;
5587 trc_LibFpFBOvr := TRUE;
5588 END IF;
5589 ELSE
5590 hr_utility.set_location('py_za_tx_01032012.NorCalc',15);
5591 -- Set Cascade Figures and Refund
5592 trc_FrnBenErn := trc_NorErn;
5593 trc_TxbFrnInc := trc_TxbNorInc;
5594 trc_TotLibFB := trc_TotLibNI;
5595 IF (dbi_TX_MTD = 'C') THEN
5596 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
5597 trc_MedTxCrUsedFB_Upd := -1 * bal_MED_TAX_CR_USED_FB_YTD;
5598 trc_LibFpFB_Upd := trc_LibFpFB;
5599 ELSE -- in case of Non Cumilative Tax Method
5600 trc_LibFpFB := -1 * bal_TX_ON_FB_PTD;
5601 trc_MedTxCrUsedFB_Upd := -1 * bal_MED_TAX_CR_USED_FB_PTD;
5602 trc_LibFpFB_Upd := trc_LibFpFB;
5603 END IF;
5604 trc_LibFpFBOvr := TRUE;
5605 END IF;
5606
5607 -- Travel Allowance
5608 --
5609 -- Ytd Travel Allowance
5610 trc_TrvAllYtd := bal_TOT_TXB_TA_YTD;
5611 -- Ptd Travel Allowance
5612 trc_TrvAllPtd := bal_TOT_TXB_TA_PTD;
5613 -- Skip the calculation if there is No Income
5614 -- If Tax Method is Cumulative check for YTD Income
5615 -- If Tax Method is Non Cumulative check for PTD Income
5616 IF (dbi_TX_MTD = 'C' AND trc_TrvAllYtd <> 0) OR (dbi_TX_MTD = 'N' AND trc_TrvAllPtd > 0) THEN
5617 hr_utility.set_location('py_za_tx_01032012.NorCalc',16);
5618 -- Ptd Travel Allowance
5619 trc_TrvAllPtd := bal_TOT_TXB_TA_PTD;
5620 -- Annualise Travel Allowance
5621 trc_TrvAllErn := py_za_tx_utl_01032012.Annualise
5622 ( p_YtdInc => trc_TrvAllYtd
5623 , p_PtdInc => trc_TrvAllPtd
5624 ) + trc_FrnBenErn;
5625 --TYS2010
5626 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5627 -- Taxable Travel Income
5628 trc_TxbTrvIncWoDon := trc_TrvAllErn - trc_PerTotAbm;
5629 trc_TxbTrvInc :=trc_TxbTrvIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbTrvIncWoDon,trc_PerDonAmt);
5630
5631 -- Threshold Check
5632 IF trc_TxbTrvInc >= trc_Threshold THEN
5633 hr_utility.set_location('py_za_tx_01032012.NorCalc',17);
5634 -- Tax Liability
5635 trc_TotLibTA := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbTrvInc);
5636 trc_LibFyTA := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
5637 trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
5638 -- DeAnnualise
5639 trc_LibFpTA := py_za_tx_utl_01032012.DeAnnualise
5640 ( trc_LibFyTA
5641 , bal_TX_ON_TA_YTD + bal_MED_TAX_CR_USED_TA_YTD
5642 , bal_TX_ON_TA_PTD + bal_MED_TAX_CR_USED_TA_PTD
5643 );
5644
5645 -- Start Medical Tax Credit Changes
5646 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5647 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
5648 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_TA_YTD
5649 ,p_Tx_RUN => trc_LibFpTA
5650 ,p_Tx_YTD => bal_TX_ON_TA_YTD
5651 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedTA
5652 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedTA_Upd
5653 );
5654 trc_LibFpTA_Upd := trc_LibFpTA - trc_MedTxCrUsedTA_Upd;
5655 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedTA,0);
5656 hr_utility.set_location(' trc_MedTxCrUsedTA:'||trc_MedTxCrUsedTA,10);
5657 hr_utility.set_location('trc_MedTxCrUsedTA_Upd:'||trc_MedTxCrUsedTA_Upd,10);
5658 hr_utility.set_location(' trc_LibFpTA_Upd:'||trc_LibFpTA_Upd,10);
5659 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5660 -- End Medical Tax Credit Changes
5661
5662 ELSE
5663 hr_utility.set_location('py_za_tx_01032012.NorCalc',18);
5664 -- Set Cascade Figures and Refund
5665 trc_TotLibTA := trc_TotLibFB;
5666 IF (dbi_TX_MTD = 'C') THEN
5667 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
5668 trc_MedTxCrUsedTA_Upd := -1 * bal_MED_TAX_CR_USED_TA_YTD;
5669 trc_LibFpTA_Upd := trc_LibFpTA;
5670 ELSE -- in case of Non Cumilative Tax Method
5671 trc_LibFpTA := -1 * bal_TX_ON_TA_PTD;
5672 trc_MedTxCrUsedTA_Upd := -1 * bal_MED_TAX_CR_USED_TA_PTD;
5673 trc_LibFpTA_Upd := trc_LibFpTA;
5674 END IF;
5675 trc_LibFpTAOvr := TRUE;
5676 END IF;
5677 ELSE
5678 hr_utility.set_location('py_za_tx_01032012.NorCalc',19);
5679 -- Set Cascade Figures and Refund
5680 trc_TrvAllErn := trc_FrnBenErn;
5681 trc_TxbTrvInc := trc_TxbFrnInc;
5682 trc_TotLibTA := trc_TotLibFB;
5683 IF (dbi_TX_MTD = 'C') THEN
5684 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
5685 trc_MedTxCrUsedTA_Upd := -1 * bal_MED_TAX_CR_USED_TA_YTD;
5686 trc_LibFpTA_Upd := trc_LibFpTA;
5687 ELSE -- in case of Non Cumilative Tax Method
5688 trc_LibFpTA := -1 * bal_TX_ON_TA_PTD;
5689 trc_MedTxCrUsedTA_Upd := -1 * bal_MED_TAX_CR_USED_TA_PTD;
5690 trc_LibFpTA_Upd := trc_LibFpTA;
5691 END IF;
5692 trc_LibFpTAOvr := TRUE;
5693 END IF;
5694
5695 -- Bonus Provision
5696 --
5697 -- Ytd Bonus Prvision
5698 trc_BonProYtd := bal_BP_YTD;
5699 -- Ptd Bonus Prvision
5700 trc_BonProYtd := bal_BP_YTD;
5701 -- Skip the calculation if there is No Income
5702 -- If Tax Method is Cumulative check for YTD Income
5703 -- If Tax Method is Non Cumulative check for PTD Income
5704 IF (dbi_TX_MTD = 'C' AND trc_BonProYtd <> 0) OR (dbi_TX_MTD = 'N' AND trc_BonProPtd > 0) THEN
5705 hr_utility.set_location('py_za_tx_01032012.NorCalc',20);
5706 -- Annualise Bonus Provision
5707 trc_BonProErn := py_za_tx_utl_01032012.Annualise
5708 ( p_YtdInc => trc_BonProYtd
5709 , p_PtdInc => trc_BonProPtd
5710 ) + trc_TrvAllErn;
5711 --TYS2010
5712 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5713 -- Taxable Bonus Provision Income
5714 trc_TxbBonProIncWoDon := trc_BonProErn - trc_PerTotAbm;
5715 trc_TxbBonProInc :=trc_TxbBonProIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbBonProIncWoDon,trc_PerDonAmt);
5716
5717 -- Threshold Check
5718 IF trc_TxbBonProInc >= trc_Threshold THEN
5719 hr_utility.set_location('py_za_tx_01032012.NorCalc',21);
5720 -- Tax Liability
5721 trc_TotLibBP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbBonProInc);
5722 trc_LibFyBP := trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA);
5723 trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
5724 -- DeAnnualise
5725 trc_LibFpBP := py_za_tx_utl_01032012.DeAnnualise
5726 ( trc_LibFyBP
5727 , bal_TX_ON_BP_YTD + bal_MED_TAX_CR_USED_BP_YTD
5728 , bal_TX_ON_BP_PTD + bal_MED_TAX_CR_USED_BP_PTD
5729 );
5730
5731 -- Start Medical Tax Credit Changes
5732 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5733 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
5734 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_BP_YTD
5735 ,p_Tx_RUN => trc_LibFpBP
5736 ,p_Tx_YTD => bal_TX_ON_BP_YTD
5737 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedBP
5738 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedBP_Upd
5739 );
5740 trc_LibFpBP_Upd := trc_LibFpBP - trc_MedTxCrUsedBP_Upd;
5741 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedBP,0);
5742 hr_utility.set_location(' trc_MedTxCrUsedBP:'||trc_MedTxCrUsedBP,10);
5743 hr_utility.set_location('trc_MedTxCrUsedBP_Upd:'||trc_MedTxCrUsedBP_Upd,10);
5744 hr_utility.set_location(' trc_LibFpBP_Upd:'||trc_LibFpBP_Upd,10);
5745 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5746 -- End Medical Tax Credit Changes
5747
5748 ELSE
5749 hr_utility.set_location('py_za_tx_01032012.NorCalc',22);
5750 -- Set Cascade Figures and Refund
5751 trc_TotLibBP := trc_TotLibTA;
5752 IF (dbi_TX_MTD = 'C') THEN
5753 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
5754 trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_YTD;
5755 trc_LibFpBP_Upd := trc_LibFpBP;
5756 ELSE -- in case of Non Cumilative Tax Method
5757 trc_LibFpBP := -1 * bal_TX_ON_BP_PTD;
5758 trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_PTD;
5759 trc_LibFpBP_Upd := trc_LibFpBP;
5760 END IF;
5761 trc_LibFpBPOvr := TRUE;
5762 END IF;
5763 ELSE
5764 hr_utility.set_location('py_za_tx_01032012.NorCalc',23);
5765 -- Set Cascade Figures and Refund
5766 trc_BonProErn := trc_TrvAllErn;
5767 trc_TxbBonProInc := trc_TxbTrvInc;
5768 trc_TotLibBP := trc_TotLibTA;
5769 IF (dbi_TX_MTD = 'C') THEN
5770 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
5771 trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_YTD;
5772 trc_LibFpBP_Upd := trc_LibFpBP;
5773 ELSE -- in case of Non Cumilative Tax Method
5774 trc_LibFpBP := -1 * bal_TX_ON_BP_PTD;
5775 trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_PTD;
5776 trc_LibFpBP_Upd := trc_LibFpBP;
5777 END IF;
5778 trc_LibFpBPOvr := TRUE;
5779 END IF;
5780
5781 -- Annual Bonus
5782 --
5783 -- Ytd Annual Bonus
5784 trc_AnnBonYtd := bal_TOT_TXB_AB_YTD;
5785 -- Skip the calculation if there is No Income
5786 IF trc_AnnBonYtd <> 0 THEN
5787 hr_utility.set_location('py_za_tx_01032012.NorCalc',24);
5788 -- Annual Bonus Earnings
5789 trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
5790 --TYS2010
5791 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5792 -- Taxable Annual Bonus Income
5793 trc_TxbAnnBonIncWoDon := trc_AnnBonErn - trc_AnnTotAbm;
5794 trc_TxbAnnBonInc :=trc_TxbAnnBonIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnBonIncWoDon,trc_AnnDonAmt);
5795
5796 -- Threshold Check
5797 IF trc_TxbAnnBonInc >= trc_Threshold THEN
5798 hr_utility.set_location('py_za_tx_01032012.NorCalc',25);
5799 -- Tax Liability
5800 trc_TotLibAB := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnBonInc);
5801 trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
5802 trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
5803 -- Check Bonus Provision
5804 IF trc_BonProYtd <> 0 THEN
5805 hr_utility.set_location('py_za_tx_01032012.NorCalc',26);
5806 -- Check Bonus Provision Frequency
5807 IF dbi_BP_TX_RCV = 'A' THEN
5808 hr_utility.set_location('py_za_tx_01032012.NorCalc',27);
5809 trc_LibFpAB := 0;
5810 ELSE
5811 hr_utility.set_location('py_za_tx_01032012.NorCalc',28);
5812 trc_LibFpAB := trc_LibFyAB - ( bal_TX_ON_BP_YTD
5813 + bal_MED_TAX_CR_USED_BP_YTD
5814 + trc_LibFpBP
5815 + bal_TX_ON_AB_YTD
5816 + bal_MED_TAX_CR_USED_AB_YTD);
5817
5818 -- Start Medical Tax Credit Changes
5819 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5820 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
5821 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AB_YTD
5822 ,p_Tx_RUN => trc_LibFpAB
5823 ,p_Tx_YTD => bal_TX_ON_AB_YTD
5824 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAB
5825 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAB_Upd
5826 );
5827 trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
5828 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
5829 hr_utility.set_location(' trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
5830 hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
5831 hr_utility.set_location(' trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
5832 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5833 -- End Medical Tax Credit Changes
5834
5835 END IF;
5836 ELSE
5837 hr_utility.set_location('py_za_tx_01032012.NorCalc',29);
5838 trc_LibFpAB := trc_LibFyAB - (bal_TX_ON_AB_YTD + bal_MED_TAX_CR_USED_AB_YTD);
5839
5840 -- Start Medical Tax Credit Changes
5841 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5842 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
5843 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AB_YTD
5844 ,p_Tx_RUN => trc_LibFpAB
5845 ,p_Tx_YTD => bal_TX_ON_AB_YTD
5846 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAB
5847 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAB_Upd
5848 );
5849 trc_LibFpAB_Upd := trc_LibFpAB - trc_MedTxCrUsedAB_Upd;
5850 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAB,0);
5851 hr_utility.set_location(' trc_MedTxCrUsedAB:'||trc_MedTxCrUsedAB,10);
5852 hr_utility.set_location('trc_MedTxCrUsedAB_Upd:'||trc_MedTxCrUsedAB_Upd,10);
5853 hr_utility.set_location(' trc_LibFpAB_Upd:'||trc_LibFpAB_Upd,10);
5854 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5855 -- End Medical Tax Credit Changes
5856
5857 END IF;
5858 ELSE
5859 hr_utility.set_location('py_za_tx_01032012.NorCalc',30);
5860 -- Set Cascade Figures and Refund
5861 trc_TotLibAB := trc_TotLibTA;
5862 IF (dbi_TX_MTD = 'C') THEN
5863 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
5864 trc_MedTxCrUsedAB_Upd := -1 * bal_MED_TAX_CR_USED_AB_YTD;
5865 trc_LibFpAB_Upd := trc_LibFpAB ;
5866 ELSE -- in case of Non Cumilative Tax Method
5867 trc_LibFpAB := -1 * bal_TX_ON_AB_PTD;
5868 trc_MedTxCrUsedAB_Upd := -1 * bal_MED_TAX_CR_USED_AB_PTD;
5869 trc_LibFpAB_Upd := trc_LibFpAB ;
5870 END IF;
5871 trc_LibFpABOvr := TRUE;
5872 END IF;
5873 ELSE
5874 hr_utility.set_location('py_za_tx_01032012.NorCalc',31);
5875 -- Set Cascade Figures and Refund
5876 trc_AnnBonErn := trc_BonProErn;
5877 trc_TxbAnnBonInc := trc_TxbBonProInc;
5878 trc_TotLibAB := trc_TotLibBP;
5879 IF (dbi_TX_MTD = 'C') THEN
5880 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
5881 trc_MedTxCrUsedAB_Upd := -1 * bal_MED_TAX_CR_USED_AB_YTD;
5882 trc_LibFpAB_Upd := trc_LibFpAB ;
5883 ELSE -- in case of Non Cumilative Tax Method
5884 trc_LibFpAB := -1 * bal_TX_ON_AB_PTD;
5885 trc_MedTxCrUsedAB_Upd := -1 * bal_MED_TAX_CR_USED_AB_PTD;
5886 trc_LibFpAB_Upd := trc_LibFpAB;
5887 END IF;
5888 trc_LibFpABOvr := TRUE;
5889 END IF;
5890
5891 -- Annual Payments
5892 --
5893 -- Ytd Annual Payments
5894 trc_AnnPymYtd := bal_TOT_TXB_AP_YTD ;
5895 -- Skip the calculation if there is No Income
5896 IF trc_AnnPymYtd <> 0 THEN
5897 hr_utility.set_location('py_za_tx_01032012.NorCalc',32);
5898 -- Annual Payments Earnings
5899 trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
5900 --TYS2010
5901 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5902 -- Taxable Annual Payments Income
5903 trc_TxbAnnPymIncWoDon := trc_AnnPymErn - trc_AnnTotAbm;
5904 trc_TxbAnnPymInc :=trc_TxbAnnPymIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymIncWoDon,trc_AnnDonAmt);
5905
5906 -- Threshold Check
5907 IF trc_TxbAnnPymInc >= trc_Threshold THEN
5908 hr_utility.set_location('py_za_tx_01032012.NorCalc',33);
5909 -- Tax Liability
5910 trc_TotLibAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymInc);
5911 trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
5912 trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
5913 hr_utility.set_location('py_za_tx_01032012.NorCalc',34);
5914 trc_LibFpAP := trc_LibFyAP - (bal_TX_ON_AP_YTD + bal_MED_TAX_CR_USED_AP_YTD) ;
5915
5916 -- Start Medical Tax Credit Changes
5917 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
5918 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
5919 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_AP_YTD
5920 ,p_Tx_RUN => trc_LibFpAP
5921 ,p_Tx_YTD => bal_TX_ON_AP_YTD
5922 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedAP
5923 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedAP_Upd
5924 );
5925 trc_LibFpAP_Upd := trc_LibFpAP - trc_MedTxCrUsedAP_Upd;
5926 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedAP,0);
5927 hr_utility.set_location(' trc_MedTxCrUsedAP:'||trc_MedTxCrUsedAP,10);
5928 hr_utility.set_location('trc_MedTxCrUsedAP_Upd:'||trc_MedTxCrUsedAP_Upd,10);
5929 hr_utility.set_location(' trc_LibFpAP_Upd:'||trc_LibFpAP_Upd,10);
5930 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
5931 -- End Medical Tax Credit Changes
5932
5933 ELSE
5934 hr_utility.set_location('py_za_tx_01032012.NorCalc',35);
5935 -- Set Cascade Figures and Refund
5936 trc_TotLibAP := trc_TotLibAB;
5937 IF (dbi_TX_MTD = 'C') THEN
5938 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
5939 trc_MedTxCrUsedAP_Upd := -1 * bal_MED_TAX_CR_USED_AP_YTD;
5940 trc_LibFpAP_Upd := trc_LibFpAP;
5941 ELSE -- in case of Non Cumilative Tax Method
5942 trc_LibFpAP := -1 * bal_TX_ON_AP_PTD;
5943 trc_MedTxCrUsedAP_Upd := -1 * bal_MED_TAX_CR_USED_AP_PTD;
5944 trc_LibFpAP_Upd := trc_LibFpAP;
5945 END IF;
5946 trc_LibFpAPOvr := TRUE;
5947 END IF;
5948 ELSE
5949 hr_utility.set_location('py_za_tx_01032012.NorCalc',36);
5950 -- Set Cascade Figures and Refund
5951 trc_AnnPymErn := trc_AnnBonErn;
5952 trc_TxbAnnPymInc := trc_TxbAnnBonInc;
5953 trc_TotLibAP := trc_TotLibAB;
5954 IF (dbi_TX_MTD = 'C') THEN
5955 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
5956 trc_MedTxCrUsedAP_Upd := -1 * bal_MED_TAX_CR_USED_AP_YTD;
5957 trc_LibFpAP_Upd := trc_LibFpAP;
5958 ELSE -- in case of Non Cumilative Tax Method
5959 trc_LibFpAP := -1 * bal_TX_ON_AP_PTD;
5960 trc_MedTxCrUsedAP_Upd := -1 * bal_MED_TAX_CR_USED_AP_PTD;
5961 trc_LibFpAP_Upd := trc_LibFpAP;
5962 END IF;
5963 trc_LibFpAPOvr := TRUE;
5964 END IF;
5965
5966 -- Public Office Allowance
5967 --
5968 -- Ytd Public Office Allowance
5969 trc_PblOffYtd := bal_TOT_TXB_PO_YTD;
5970 -- Ptd Public Office Allowance
5971 trc_PblOffPtd := bal_TOT_TXB_PO_PTD;
5972 -- Skip the calculation if there is No Income
5973 -- If Tax Method is Cumulative check for YTD Income
5974 -- If Tax Method is Non Cumulative check for PTD Income
5975 IF (dbi_TX_MTD = 'C' AND trc_PblOffYtd <> 0) OR (dbi_TX_MTD = 'N' AND trc_PblOffPtd > 0) THEN
5976 hr_utility.set_location('py_za_tx_01032012.NorCalc',37);
5977 -- Ptd Public Office Allowance
5978 trc_PblOffPtd := bal_TOT_TXB_PO_PTD;
5979 -- Annualise Public Office Allowance
5980 trc_PblOffErn := py_za_tx_utl_01032012.Annualise
5981 ( p_YtdInc => trc_PblOffYtd
5982 , p_PtdInc => trc_PblOffPtd
5983 ) + trc_AnnPymErn;
5984 --TYS2010
5985 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
5986 -- Taxable Public Office Allowance
5987 trc_TxbPblOffIncWoDon := trc_PblOffErn - trc_AnnTotAbm;
5988 trc_TxbPblOffInc :=trc_TxbPblOffIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbPblOffIncWoDon,trc_AnnDonAmt);
5989
5990 -- Threshold Check
5991 IF trc_TxbPblOffInc >= trc_Threshold THEN
5992 hr_utility.set_location('py_za_tx_01032012.NorCalc',38);
5993 -- Tax Liability
5994 trc_TotLibPO := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbPblOffInc);
5995 trc_LibFyPO := trc_TotLibPO - least(trc_TotLibPO,trc_TotLibAP);
5996 trc_TotLibPO := greatest(trc_TotLibPO,trc_TotLibAP);
5997 -- DeAnnualise
5998 trc_LibFpPO := py_za_tx_utl_01032012.DeAnnualise
5999 ( trc_LibFyPO
6000 , bal_TX_ON_PO_YTD + bal_MED_TAX_CR_USED_PO_YTD
6001 , bal_TX_ON_PO_PTD + bal_MED_TAX_CR_USED_PO_PTD
6002 );
6003
6004 -- Start Medical Tax Credit Changes
6005 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
6006 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
6007 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_PO_YTD
6008 ,p_Tx_RUN => trc_LibFpPO
6009 ,p_Tx_YTD => bal_TX_ON_PO_YTD
6010 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedPO
6011 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedPO_Upd
6012 );
6013 trc_LibFpPO_Upd := trc_LibFpPO - trc_MedTxCrUsedPO_Upd;
6014 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedPO,0);
6015 hr_utility.set_location(' trc_MedTxCrUsedPO:'||trc_MedTxCrUsedPO,10);
6016 hr_utility.set_location('trc_MedTxCrUsedPO_Upd:'||trc_MedTxCrUsedPO_Upd,10);
6017 hr_utility.set_location(' trc_LibFpPO_Upd:'||trc_LibFpPO_Upd,10);
6018 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
6019 -- End Medical Tax Credit Changes
6020
6021 ELSE
6022 hr_utility.set_location('py_za_tx_01032012.NorCalc',39);
6023 -- Set Cascade Figures and Refund
6024 trc_TotLibPO := trc_TotLibAP;
6025 IF (dbi_TX_MTD = 'C') THEN
6026 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
6027 trc_MedTxCrUsedPO_Upd := -1 * bal_MED_TAX_CR_USED_PO_YTD;
6028 trc_LibFpPO_Upd := trc_LibFpPO;
6029 ELSE -- in case of Non Cumilative Tax Method
6030 trc_LibFpPO := -1 * bal_TX_ON_PO_PTD;
6031 trc_MedTxCrUsedPO_Upd := -1 * bal_MED_TAX_CR_USED_PO_PTD;
6032 trc_LibFpPO_Upd := trc_LibFpPO;
6033 END IF;
6034 trc_LibFpPOOvr := TRUE;
6035 END IF;
6036 ELSE
6037 hr_utility.set_location('py_za_tx_01032012.NorCalc',40);
6038 -- Set Cascade Figures and Refund
6039 trc_PblOffErn := trc_AnnPymErn;
6040 trc_TxbPblOffInc := trc_TxbAnnPymInc;
6041 trc_TotLibPO := trc_TotLibAP;
6042 IF (dbi_TX_MTD = 'C') THEN
6043 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
6044 trc_MedTxCrUsedPO_Upd := -1 * bal_MED_TAX_CR_USED_PO_YTD;
6045 trc_LibFpPO_Upd := trc_LibFpPO;
6046 ELSE -- in case of Non Cumilative Tax Method
6047 trc_LibFpPO := -1 * bal_TX_ON_PO_PTD;
6048 trc_MedTxCrUsedPO_Upd := -1 * bal_MED_TAX_CR_USED_PO_PTD;
6049 trc_LibFpPO_Upd := trc_LibFpPO;
6050 END IF;
6051 trc_LibFpPOOvr := TRUE;
6052 END IF;
6053
6054
6055 -- Net to Gross Annual Payments.
6056 --
6057 -- Ytd Net to Gross Annual Payments
6058 trc_AnnPymNTGYtd := bal_TOT_TXB_AP_NTG_YTD;
6059 -- Skip the calculation if there is No Income
6060 IF trc_AnnPymNtgYtd <> 0 THEN
6061 hr_utility.set_location('py_za_tx_01032012.NorCalc',41);
6062 -- Annual Payments Net to Gross Earnings
6063 trc_AnnPymNtgErn := trc_AnnPymNtgYtd + trc_PblOffErn;
6064
6065 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
6066 -- Taxable Annual Payments Income
6067 trc_TxbAnnPymNtgIncWoDon := trc_AnnPymNtgErn - trc_AnnTotAbm;
6068 trc_TxbAnnPymNtgInc :=trc_TxbAnnPymNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnPymNtgIncWoDon,trc_AnnDonAmt);
6069
6070 -- Threshold Check
6071 IF trc_TxbAnnPymNtgInc >= trc_Threshold THEN
6072 hr_utility.set_location('py_za_tx_01032012.NorCalc',42);
6073 -- Tax Liability
6074 trc_TotLibNtgAP := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnPymNtgInc);
6075 trc_LibFyNtgAP := trc_TotLibNtgAP - least(trc_TotLibNtgAP,trc_TotLibPO);
6076 trc_TotLibNtgAP := greatest(trc_TotLibNtgAP,trc_TotLibPO);
6077
6078 hr_utility.set_location('py_za_tx_01032012.NorCalc',43);
6079 trc_LibFpNtgAP := trc_LibFyNtgAP - (bal_TX_ON_AP_NTG_YTD + bal_MED_TAX_CR_USED_NG_YTD);
6080
6081 -- Start Medical Tax Credit Changes
6082 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
6083 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
6084 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_NG_YTD
6085 ,p_Tx_RUN => trc_LibFpNtgAP
6086 ,p_Tx_YTD => bal_TX_ON_AP_NTG_YTD
6087 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedNtgAP
6088 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedNtgAP_Upd
6089 );
6090 trc_LibFpNtgAP_Upd := trc_LibFpNtgAP - trc_MedTxCrUsedNtgAP_Upd;
6091 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgAP,0);
6092 hr_utility.set_location(' trc_MedTxCrUsedNtgAP:'||trc_MedTxCrUsedNtgAP,10);
6093 hr_utility.set_location('trc_MedTxCrUsedNtgAP_Upd:'||trc_MedTxCrUsedNtgAP_Upd,10);
6094 hr_utility.set_location(' trc_LibFpNtgAP_Upd:'||trc_LibFpNtgAP_Upd,10);
6095 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
6096 -- End Medical Tax Credit Changes
6097
6098 ELSE
6099 hr_utility.set_location('py_za_tx_01032012.NorCalc',44);
6100 -- Set Cascade Figures and Refund
6101 trc_TotLibNtgAP := trc_TotLibPO;
6102 trc_LibFpNtgAP := -1 * bal_TX_ON_AP_NTG_YTD;
6103 trc_MedTxCrUsedNtgAP_Upd := -1 * bal_MED_TAX_CR_USED_NG_YTD;
6104 trc_LibFpNtgAP_Upd := trc_LibFpNtgAP;
6105 trc_LibFpNtgAPOvr := TRUE;
6106 END IF;
6107 ELSE
6108 hr_utility.set_location('py_za_tx_01032012.NorCalc',45);
6109 -- Set Cascade Figures and Refund
6110 trc_AnnPymNtgErn := trc_PblOffErn;
6111 trc_TxbAnnPymNtgInc := trc_TxbPblOffInc;
6112 trc_TotLibNtgAP := trc_TotLibPO;
6113 trc_LibFpNtgAP := -1 * bal_TX_ON_AP_NTG_YTD;
6114 trc_MedTxCrUsedNtgAP_Upd := -1 * bal_MED_TAX_CR_USED_NG_YTD;
6115 trc_LibFpNtgAP_Upd := trc_LibFpNtgAP;
6116 trc_LibFpNtgAPOvr := TRUE;
6117 END IF;
6118
6119
6120 -- Ytd Net to Gross EE Debt due to Net to Gross Annual Payments
6121 trc_AnnEEDbtNTGYtd := bal_TOT_TXB_EE_DBT_NTG_YTD;
6122 -- Skip the calculation if there is No Income
6123 IF trc_AnnEEDbtNtgYtd <> 0 THEN
6124 hr_utility.set_location('py_za_tx_01032012.NorCalc',46);
6125 -- Annual EE Debt Net to Gross Earnings
6126 trc_AnnEEDbtNtgErn := trc_AnnEEDbtNtgYtd + trc_AnnPymNtgErn;
6127
6128 --Suffixed the variable with WoDon to denote that donation amount is not deducted.
6129 trc_TxbAnnEEDbtNtgIncWoDon := trc_AnnEEDbtNtgErn - trc_AnnTotNTGAbm;
6130 trc_TxbAnnEEDbtNtgInc :=trc_TxbAnnEEDbtNtgIncWoDon - py_za_tx_utl_01032012.AllowableDeduction(trc_TxbAnnEEDbtNtgIncWoDon,trc_AnnDonAmt);
6131
6132 -- Threshold Check
6133 IF trc_TxbAnnEEDbtNtgInc >= trc_Threshold THEN
6134 hr_utility.set_location('py_za_tx_01032012.NorCalc',47);
6135 -- Tax Liability
6136 trc_TotLibNtgEEDbt := py_za_tx_utl_01032012.TaxLiability(p_Amt => trc_TxbAnnEEDbtNtgInc);
6137 trc_LibFyNtgEEDbt := trc_TotLibNtgEEDbt - least(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
6138 trc_TotLibNtgEEDbt := greatest(trc_TotLibNtgEEDbt,trc_TotLibNtgAP);
6139
6140 hr_utility.set_location('py_za_tx_01032012.NorCalc',48);
6141 trc_LibFpNtgEEDbt := trc_LibFyNtgEEDbt - (bal_TX_ON_EE_DBT_NTG_YTD + bal_MED_TAX_CR_USED_EE_YTD) ;
6142
6143 -- Start Medical Tax Credit Changes
6144 py_za_tx_utl_01032012.CalMedTxCrUSEDOns
6145 (p_Avlbl_Md_Tx_Crdt => trc_curMedTxCrEle
6146 ,p_Md_tx_Crdt_Used_YTD => bal_MED_TAX_CR_USED_EE_YTD
6147 ,p_Tx_RUN => trc_LibFpNtgEEDbt
6148 ,p_Tx_YTD => bal_TX_ON_EE_DBT_NTG_YTD
6149 ,p_Md_Tx_Cr_Usd => trc_MedTxCrUsedNtgEEDbt
6150 ,p_Md_Tx_Cr_Usd_Upd => trc_MedTxCrUsedNtgEEDbt_Upd
6151 );
6152 trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt - trc_MedTxCrUsedNtgEEDbt_Upd;
6153 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNtgEEDbt,0);
6154 hr_utility.set_location(' trc_MedTxCrUsedNtgEEDbt:'||trc_MedTxCrUsedNtgEEDbt,10);
6155 hr_utility.set_location('trc_MedTxCrUsedNtgEEDbt_Upd:'||trc_MedTxCrUsedNtgEEDbt_Upd,10);
6156 hr_utility.set_location(' trc_LibFpNtgEEDbt_Upd:'||trc_LibFpNtgEEDbt_Upd,10);
6157 hr_utility.set_location(' trc_curMedTxCrEle:'||trc_curMedTxCrEle,10);
6158 -- End Medical Tax Credit Changes
6159
6160 ELSE
6161 hr_utility.set_location('py_za_tx_01032012.NorCalc',49);
6162 -- Set Cascade Figures and Refund
6163 trc_TotLibNtgEEDbt := trc_TotLibNtgAP;
6164 trc_LibFpNtgEEDbt := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
6165 trc_MedTxCrUsedNtgEEDbt_Upd := -1 * bal_MED_TAX_CR_USED_EE_YTD;
6166 trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt;
6167 trc_LibFpNtgEEDbtOvr := TRUE;
6168 END IF;
6169 ELSE
6170 hr_utility.set_location('py_za_tx_01032012.NorCalc',50);
6171 -- Set Cascade Figures and Refund
6172 trc_AnnEEDbtNtgErn := trc_AnnPymNtgErn;
6173 trc_TxbAnnEEDbtNtgInc := trc_TxbAnnPymNtgInc;
6174 trc_TotLibNtgEEDbt := trc_TotLibNtgAP;
6175 trc_LibFpNtgEEDbt := -1 * bal_TX_ON_EE_DBT_NTG_YTD;
6176 trc_MedTxCrUsedNtgEEDbt_Upd := -1 * bal_MED_TAX_CR_USED_EE_YTD;
6177 trc_LibFpNtgEEDbt_Upd := trc_LibFpNtgEEDbt;
6178 trc_LibFpNtgEEDbtOvr := TRUE;
6179 END IF;
6180
6181 trc_LibFpDR := trc_LibFpDR_Upd;
6182 trc_LibFpNI := trc_LibFpNI_Upd;
6183 trc_LibFpFB := trc_LibFpFB_Upd;
6184 trc_LibFpTA := trc_LibFpTA_Upd;
6185 trc_LibFpBP := trc_LibFpBP_Upd;
6186 trc_LibFpAB := trc_LibFpAB_Upd;
6187 trc_LibFpAP := trc_LibFpAP_Upd;
6188 trc_LibFpPO := trc_LibFpPO_Upd;
6189 trc_LibFpNtgAP := trc_LibFpNtgAP_Upd;
6190 trc_LibFpNtgEEDbt := trc_LibFpNtgEEDbt_Upd;
6191
6192 -- Net Pay Validation
6193 --
6194 py_za_tx_utl_01032012.ValidateTaxOns;
6195
6196 hr_utility.set_location('py_za_tx_01032012.NorCalc',51);
6197
6198 -- Deemed Remuneration
6199 WrtHrTrc('trc_TxbDmdRmn: '||to_char(trc_TxbDmdRmn));
6200 WrtHrTrc('trc_TotLibDR: '||to_char(trc_TotLibDR ));
6201 WrtHrTrc('trc_LibFyDR: '||to_char(trc_LibFyDR ));
6202 WrtHrTrc('trc_LibFpDR: '||to_char(trc_LibFpDR ));
6203 -- Base Income
6204 WrtHrTrc('trc_BseErn: '||to_char(trc_BseErn ));
6205 WrtHrTrc('trc_TxbBseInc: '||to_char(trc_TxbBseInc));
6206 WrtHrTrc('trc_TotLibBse: '||to_char(trc_TotLibBse));
6207 -- Normal Income
6208 WrtHrTrc('trc_NorIncYtd: '||to_char(trc_NorIncYtd));
6209 WrtHrTrc('trc_NorIncPtd: '||to_char(trc_NorIncPtd));
6210 WrtHrTrc('trc_NorErn: '||to_char(trc_NorErn ));
6211 WrtHrTrc('trc_TxbNorInc: '||to_char(trc_TxbNorInc));
6212 WrtHrTrc('trc_TxbNorIncWoDon:'||to_char(trc_TxbNorIncWoDon));
6213 WrtHrTrc('trc_TotLibNI: '||to_char(trc_TotLibNI ));
6214 WrtHrTrc('trc_LibFyNI: '||to_char(trc_LibFyNI ));
6215 WrtHrTrc('trc_LibFpNI: '||to_char(trc_LibFpNI ));
6216 -- Fringe Benefits
6217 WrtHrTrc('trc_FrnBenYtd: '||to_char(trc_FrnBenYtd));
6218 WrtHrTrc('trc_FrnBenPtd: '||to_char(trc_FrnBenPtd));
6219 WrtHrTrc('trc_FrnBenErn: '||to_char(trc_FrnBenErn));
6220 WrtHrTrc('trc_TxbFrnInc: '||to_char(trc_TxbFrnInc));
6221 WrtHrTrc('trc_TxbFrnIncWoDon:'||to_char(trc_TxbFrnIncWoDon));
6222 WrtHrTrc('trc_TotLibFB: '||to_char(trc_TotLibFB ));
6223 WrtHrTrc('trc_LibFyFB: '||to_char(trc_LibFyFB ));
6224 WrtHrTrc('trc_LibFpFB: '||to_char(trc_LibFpFB ));
6225 -- Travel Allowance
6226 WrtHrTrc('trc_TrvAllYtd: '||to_char(trc_TrvAllYtd));
6227 WrtHrTrc('trc_TrvAllPtd: '||to_char(trc_TrvAllPtd));
6228 WrtHrTrc('trc_TrvAllErn: '||to_char(trc_TrvAllErn));
6229 WrtHrTrc('trc_TxbTrvInc: '||to_char(trc_TxbTrvInc));
6230 WrtHrTrc('trc_TxbTrvIncWoDon:'||to_char(trc_TxbTrvIncWoDon));
6231 WrtHrTrc('trc_TotLibTA: '||to_char(trc_TotLibTA ));
6232 WrtHrTrc('trc_LibFyTA: '||to_char(trc_LibFyTA ));
6233 WrtHrTrc('trc_LibFpTA: '||to_char(trc_LibFpTA ));
6234 -- Bonus Provision
6235 WrtHrTrc('trc_BonProYtd: '||to_char(trc_BonProYtd));
6236 WrtHrTrc('trc_BonProPtd: '||to_char(trc_BonProPtd));
6237 WrtHrTrc('trc_BonProErn: '||to_char(trc_BonProErn));
6238 WrtHrTrc('trc_TxbBonProInc: '||to_char(trc_TxbBonProInc));
6239 WrtHrTrc('trc_TxbBonProIncWoDon:'||to_char(trc_TxbBonProIncWoDon));
6240 WrtHrTrc('trc_TotLibBP: '||to_char(trc_TotLibBP ));
6241 WrtHrTrc('trc_LibFyBP: '||to_char(trc_LibFyBP ));
6242 WrtHrTrc('trc_LibFpBP: '||to_char(trc_LibFpBP ));
6243 -- Annual Bonus
6244 WrtHrTrc('trc_AnnBonYtd: '||to_char(trc_AnnBonYtd));
6245 WrtHrTrc('trc_AnnBonPtd: '||to_char(trc_AnnBonPtd));
6246 WrtHrTrc('trc_AnnBonErn: '||to_char(trc_AnnBonErn));
6247 WrtHrTrc('trc_TxbAnnBonInc: '||to_char(trc_TxbAnnBonInc));
6248 WrtHrTrc('trc_TxbAnnBonIncWoDon:'||to_char(trc_TxbAnnBonIncWoDon));
6249 WrtHrTrc('trc_TotLibAB: '||to_char(trc_TotLibAB ));
6250 WrtHrTrc('trc_LibFyAB: '||to_char(trc_LibFyAB ));
6251 WrtHrTrc('trc_LibFpAB: '||to_char(trc_LibFpAB ));
6252 -- Annual Payments
6253 WrtHrTrc('trc_AnnPymYtd: '||to_char(trc_AnnPymYtd));
6254 WrtHrTrc('trc_AnnPymPtd: '||to_char(trc_AnnPymPtd));
6255 WrtHrTrc('trc_AnnPymErn: '||to_char(trc_AnnPymErn));
6256 WrtHrTrc('trc_TxbAnnPymInc: '||to_char(trc_TxbAnnPymInc));
6257 WrtHrTrc('trc_TxbAnnPymIncWoDon:'||to_char(trc_TxbAnnPymIncWoDon));
6258 WrtHrTrc('trc_TotLibAP: '||to_char(trc_TotLibAP ));
6259 WrtHrTrc('trc_LibFyAP: '||to_char(trc_LibFyAP ));
6260 WrtHrTrc('trc_LibFpAP: '||to_char(trc_LibFpAP ));
6261 -- Pubilc Office Allowance
6262 WrtHrTrc('trc_PblOffYtd: '||to_char(trc_PblOffYtd));
6263 WrtHrTrc('trc_PblOffPtd: '||to_char(trc_PblOffPtd));
6264 WrtHrTrc('trc_PblOffErn: '||to_char(trc_PblOffErn));
6265 WrtHrTrc('trc_TxbPblOffInc: '||to_char(trc_TxbPblOffInc));
6266 WrtHrTrc('trc_TxbPblOffIncWoDon: '||to_char(trc_TxbPblOffIncWoDon));
6267 WrtHrTrc('trc_TotLibPO: '||to_char(trc_TotLibPO));
6268 WrtHrTrc('trc_LibFyPO: '||to_char(trc_LibFyPO ));
6269 WrtHrTrc('trc_LibFpPO: '||to_char(trc_LibFpPO ));
6270
6271 -- NTG
6272 WrtHrTrc('trc_AnnPymNtgYtd: '||to_char(trc_AnnPymNtgYtd));
6273 WrtHrTrc('trc_AnnPymNtgPtd: '||to_char(trc_AnnPymNtgPtd));
6274 WrtHrTrc('trc_AnnPymNtgErn: '||to_char(trc_AnnPymNtgErn));
6275 WrtHrTrc('trc_TxbAnnPymNtgInc: '||to_char(trc_TxbAnnPymNtgInc));
6276 WrtHrTrc('trc_TxbAnnPymNtgIncWoDon: '||to_char(trc_TxbAnnPymNtgIncWoDon));
6277 WrtHrTrc('trc_TotLibNtgAP: '||to_char(trc_TotLibNtgAP ));
6278 WrtHrTrc('trc_LibFyNtgAP: '||to_char(trc_LibFyNtgAP ));
6279 WrtHrTrc('trc_LibFpNtgAP: '||to_char(trc_LibFpNtgAP ));
6280
6281 WrtHrTrc('trc_AnnEEDbtNTGYtd: '||to_char(trc_AnnEEDbtNTGYtd));
6282 WrtHrTrc('trc_AnnEEDbtNtgPtd: '||to_char(trc_AnnEEDbtNtgPtd));
6283 WrtHrTrc('trc_AnnEEDbtNtgErn: '||to_char(trc_AnnEEDbtNtgErn));
6284 WrtHrTrc('trc_TxbAnnEEDbtNtgInc: '||to_char(trc_TxbAnnEEDbtNtgInc));
6285 WrtHrTrc('trc_TxbAnnEEDbtNtgIncWoDon:'||to_char(trc_TxbAnnEEDbtNtgIncWoDon));
6286 WrtHrTrc('trc_TotLibNtgEEDbt: '||to_char(trc_TotLibNtgEEDbt ));
6287 WrtHrTrc('trc_LibFyNtgEEDbt: '||to_char(trc_LibFyNtgEEDbt ));
6288 WrtHrTrc('trc_LibFpNtgEEDbt: '||to_char(trc_LibFpNtgEEDbt ));
6289
6290 EXCEPTION
6291 WHEN OTHERS THEN
6292 IF xpt_Msg = 'No Error' THEN
6293 xpt_Msg := 'NorCalc: '||TO_CHAR(SQLCODE);
6294 END IF;
6295 RAISE xpt_E;
6296
6297 END NorCalc;
6298 -------------------------------------------------------------------------------
6299 -- ZaTxGlb_01032012 --
6300 -- Tax module supporting function --
6301 -------------------------------------------------------------------------------
6302 FUNCTION ZaTxGlb_01032012(
6303 -- Global Values
6304 p_ZA_ADL_TX_RBT IN NUMBER
6305 ,p_ZA_ARR_PF_AN_MX_ABT IN NUMBER
6306 ,p_ZA_ARR_RA_AN_MX_ABT IN NUMBER
6307 ,p_ZA_TRV_ALL_TX_PRC IN NUMBER
6308 ,p_ZA_CC_TX_PRC IN NUMBER
6309 ,p_ZA_PF_AN_MX_ABT IN NUMBER
6310 ,p_ZA_PF_MX_PRC IN NUMBER
6311 ,p_ZA_PER_SERV_COMP_PERC IN NUMBER
6312 ,p_ZA_PER_SERV_TRST_PERC IN NUMBER
6313 ,p_ZA_PRI_TX_RBT IN NUMBER
6314 ,p_ZA_PRI_TX_THRSHLD IN NUMBER
6315 ,p_ZA_PBL_TX_PRC IN NUMBER
6316 ,p_ZA_PBL_TX_RTE IN NUMBER
6317 ,p_ZA_RA_AN_MX_ABT IN NUMBER
6318 ,p_ZA_RA_MX_PRC IN NUMBER
6319 ,p_ZA_SC_TX_THRSHLD IN NUMBER
6320 ,p_ZA_SIT_LIM IN NUMBER
6321 ,p_ZA_TMP_TX_RTE IN NUMBER
6322 ,p_ZA_WRK_DYS_PR_YR IN NUMBER
6323 ,p_ZA_ALLOW_DONATION_PERC IN NUMBER /*TYS2010*/
6324 --Bug 8844712
6325 ,p_ZA_LATE_PAYMENT_PERC IN NUMBER
6326 ,p_ZA_TRI_TX_RBT IN NUMBER
6327 ,p_ZA_TRI_TX_THRSHLD IN NUMBER
6328 ) RETURN NUMBER
6329 AS
6330 l_Dum NUMBER := 1;
6331 --id VARCHAR2(30);
6332
6333 BEGIN
6334
6335 --id := dbms_debug.initialize('JLTX');
6336 --dbms_debug.debug_on;
6337
6338 -- Initialise Package Globals
6339 -- Global Values
6340 glb_ZA_ADL_TX_RBT := p_ZA_ADL_TX_RBT;
6341 glb_ZA_ARR_PF_AN_MX_ABT := p_ZA_ARR_PF_AN_MX_ABT;
6342 glb_ZA_ARR_RA_AN_MX_ABT := p_ZA_ARR_RA_AN_MX_ABT;
6343 glb_ZA_TRV_ALL_TX_PRC := p_ZA_TRV_ALL_TX_PRC;
6344 glb_ZA_CC_TX_PRC := p_ZA_CC_TX_PRC;
6345 glb_ZA_PF_AN_MX_ABT := p_ZA_PF_AN_MX_ABT;
6346 glb_ZA_PF_MX_PRC := p_ZA_PF_MX_PRC;
6347 glb_ZA_PER_SERV_COMP_PERC := p_ZA_PER_SERV_COMP_PERC;
6348 glb_ZA_PER_SERV_TRST_PERC := p_ZA_PER_SERV_TRST_PERC;
6349 glb_ZA_PRI_TX_RBT := p_ZA_PRI_TX_RBT;
6350 glb_ZA_PRI_TX_THRSHLD := p_ZA_PRI_TX_THRSHLD;
6351 glb_ZA_PBL_TX_PRC := p_ZA_PBL_TX_PRC;
6352 glb_ZA_PBL_TX_RTE := p_ZA_PBL_TX_RTE;
6353 glb_ZA_RA_AN_MX_ABT := p_ZA_RA_AN_MX_ABT;
6354 glb_ZA_RA_MX_PRC := p_ZA_RA_MX_PRC;
6355 glb_ZA_SC_TX_THRSHLD := p_ZA_SC_TX_THRSHLD;
6356 glb_ZA_SIT_LIM := p_ZA_SIT_LIM;
6357 glb_ZA_TMP_TX_RTE := p_ZA_TMP_TX_RTE;
6358 glb_ZA_WRK_DYS_PR_YR := p_ZA_WRK_DYS_PR_YR;
6359 glb_ZA_ALLOW_DONATION_PERC:= p_ZA_ALLOW_DONATION_PERC;
6360 --Bug 8844712
6361 glb_ZA_LATE_PAYMENT_PERC := p_ZA_LATE_PAYMENT_PERC;
6362 glb_ZA_TRI_TX_RBT := p_ZA_TRI_TX_RBT;
6363 glb_ZA_TRI_TX_THRSHLD := p_ZA_TRI_TX_THRSHLD;
6364
6365 RETURN l_Dum;
6366 EXCEPTION
6367 WHEN OTHERS THEN
6368 hr_utility.set_message(801, 'ZaTxGlb_01032012: '||TO_CHAR(SQLCODE));
6369 hr_utility.raise_error;
6370 END ZaTxGlb_01032012;
6371 -------------------------------------------------------------------------------
6372 -- ZaTxDbi_01032012 --
6373 -- Tax module supporting function --
6374 -------------------------------------------------------------------------------
6375 FUNCTION ZaTxDbi_01032012(
6376 -- Database Items
6377 p_PAY_PROC_PRD_DTE_PD IN DATE
6378 ,p_PER_AGE IN NUMBER
6379 ,p_PER_DTE_OF_BRTH IN DATE
6380 ,p_SES_DTE IN DATE
6381 ,p_ZA_ACT_END_DTE IN DATE
6382 ,p_ZA_ACT_STRT_DTE IN DATE
6383 ,p_ZA_ASG_TX_RTR_PRD IN VARCHAR2
6384 ,p_ZA_ASG_TAX_RTR_RSLTS IN VARCHAR2
6385 /* --Bug 9397464
6386 ,p_ZA_ASG_TX_YR IN NUMBER
6387 ,p_ZA_ASG_TX_YR_END IN DATE
6388 ,p_ZA_ASG_TX_YR_STRT IN DATE */
6389 ,p_ZA_CUR_PRD_END_DTE IN DATE
6390 ,p_ZA_CUR_PRD_STRT_DTE IN DATE
6391 ,p_ZA_DYS_IN_YR IN NUMBER
6392 ,p_ZA_PAY_PRDS_LFT IN NUMBER
6393 ,p_ZA_PAY_PRDS_PER_YR IN NUMBER
6394 ,p_ZA_TX_YR_END IN DATE
6395 ,p_ZA_TX_YR_STRT IN DATE
6396 ,p_BP_TX_RCV IN VARCHAR2
6397 ,p_SEA_WRK_DYS_WRK IN NUMBER
6398 ,p_TX_DIR_NUM IN VARCHAR2
6399 ,p_TX_DIR_VAL IN NUMBER
6400 ,p_TX_STA IN VARCHAR2
6401 ,p_ZA_LS_DIR_NUM IN VARCHAR2
6402 ,p_ZA_LS_DIR_VAL IN NUMBER
6403 ,p_ZA_RET_LS_DIR_NUM IN VARCHAR2
6404 ,p_ZA_RET_LS_DIR_VAL IN NUMBER
6405 ,p_TAX_METHOD IN VARCHAR2
6406 ) RETURN NUMBER
6407 AS
6408 l_Dum NUMBER := 1;
6409
6410 BEGIN
6411
6412 -- Initialise Package Globals
6413 -- Database Items
6414 dbi_PAY_PROC_PRD_DTE_PD := p_PAY_PROC_PRD_DTE_PD;
6415 dbi_PER_AGE := p_PER_AGE;
6416 dbi_PER_DTE_OF_BRTH := p_PER_DTE_OF_BRTH;
6417 dbi_SES_DTE := p_SES_DTE;
6418 dbi_ZA_ACT_END_DTE := p_ZA_ACT_END_DTE;
6419 dbi_ZA_ACT_STRT_DTE := p_ZA_ACT_STRT_DTE;
6420 dbi_ZA_ASG_TX_RTR_PRD := p_ZA_ASG_TX_RTR_PRD;
6421 dbi_ZA_ASG_TAX_RTR_RSLTS := p_ZA_ASG_TAX_RTR_RSLTS;
6422 /*
6423 dbi_ZA_ASG_TX_YR := p_ZA_ASG_TX_YR;
6424 dbi_ZA_ASG_TX_YR_END := p_ZA_ASG_TX_YR_END;
6425 dbi_ZA_ASG_TX_YR_STRT := p_ZA_ASG_TX_YR_STRT; */
6426 dbi_ZA_CUR_PRD_END_DTE := p_ZA_CUR_PRD_END_DTE;
6427 dbi_ZA_CUR_PRD_STRT_DTE := p_ZA_CUR_PRD_STRT_DTE;
6428 dbi_ZA_DYS_IN_YR := p_ZA_DYS_IN_YR;
6429 dbi_ZA_PAY_PRDS_LFT := p_ZA_PAY_PRDS_LFT;
6430 dbi_ZA_PAY_PRDS_PER_YR := p_ZA_PAY_PRDS_PER_YR;
6431 dbi_ZA_TX_YR_END := p_ZA_TX_YR_END;
6432 dbi_ZA_TX_YR_STRT := p_ZA_TX_YR_STRT;
6433 dbi_BP_TX_RCV := p_BP_TX_RCV;
6434 dbi_SEA_WRK_DYS_WRK := p_SEA_WRK_DYS_WRK;
6435 dbi_TX_DIR_NUM := p_TX_DIR_NUM;
6436 dbi_TX_DIR_VAL := p_TX_DIR_VAL;
6437 dbi_TX_STA := p_TX_STA;
6438 dbi_ZA_LS_DIR_NUM := p_ZA_LS_DIR_NUM;
6439 dbi_ZA_LS_DIR_VAL := p_ZA_LS_DIR_VAL;
6440 dbi_ZA_RET_LS_DIR_NUM := p_ZA_RET_LS_DIR_NUM;
6441 dbi_ZA_RET_LS_DIR_VAL := p_ZA_RET_LS_DIR_VAL;
6442 dbi_TX_MTD := p_TAX_METHOD;
6443
6444 RETURN l_Dum;
6445 EXCEPTION
6446 WHEN OTHERS THEN
6447 hr_utility.set_message(801, 'ZaTxDbi_01032012: '||TO_CHAR(SQLCODE));
6448 hr_utility.raise_error;
6449 END ZaTxDbi_01032012;
6450 -------------------------------------------------------------------------------
6451 -- ZaTxBal1_01032012 --
6452 -- Tax module supporting function --
6453 -------------------------------------------------------------------------------
6454 FUNCTION ZaTxBal1_01032012(
6455 -- Balances
6456 p_ANN_ARR_PF_CMTD IN NUMBER
6457 ,p_ANN_ARR_PF_CYTD IN NUMBER
6458 ,p_ANN_ARR_PF_RUN IN NUMBER
6459 ,p_ANN_ARR_PF_PTD IN NUMBER
6460 ,p_ANN_ARR_PF_YTD IN NUMBER
6461 ,p_ANN_ARR_RA_CMTD IN NUMBER
6462 ,p_ANN_ARR_RA_CYTD IN NUMBER
6463 ,p_ANN_ARR_RA_RUN IN NUMBER
6464 ,p_ANN_ARR_RA_PTD IN NUMBER
6465 ,p_ANN_ARR_RA_YTD IN NUMBER
6466 ,p_ANN_EE_INC_PRO_POL_CMTD IN NUMBER
6467 ,p_ANN_EE_INC_PRO_POL_CYTD IN NUMBER
6468 ,p_ANN_EE_INC_PRO_POL_RUN IN NUMBER
6469 ,p_ANN_EE_INC_PRO_POL_PTD IN NUMBER
6470 ,p_ANN_EE_INC_PRO_POL_YTD IN NUMBER
6471 ,p_ANN_MED_CNTRB_ABM_CMTD IN NUMBER
6472 ,p_ANN_MED_CNTRB_ABM_CYTD IN NUMBER
6473 ,p_ANN_MED_CNTRB_ABM_RUN IN NUMBER
6474 ,p_ANN_MED_CNTRB_ABM_PTD IN NUMBER
6475 ,p_ANN_MED_CNTRB_ABM_YTD IN NUMBER
6476 ,p_ANN_PF_CMTD IN NUMBER
6477 ,p_ANN_PF_CYTD IN NUMBER
6478 ,p_ANN_PF_RUN IN NUMBER
6479 ,p_ANN_PF_PTD IN NUMBER
6480 ,p_ANN_PF_YTD IN NUMBER
6481 ,p_ANN_RA_CMTD IN NUMBER
6482 ,p_ANN_RA_CYTD IN NUMBER
6483 ,p_ANN_RA_RUN IN NUMBER
6484 ,p_ANN_RA_PTD IN NUMBER
6485 ,p_ANN_RA_YTD IN NUMBER
6486 /*TYS2010*/
6487 ,p_ANN_DONAT_MD_EE_CMTD IN NUMBER
6488 ,p_ANN_DONAT_MD_EE_CYTD IN NUMBER
6489 ,p_ANN_DONAT_MD_EE_RUN IN NUMBER
6490 ,p_ANN_DONAT_MD_EE_PTD IN NUMBER
6491 ,p_ANN_DONAT_MD_EE_YTD IN NUMBER
6492 ) RETURN NUMBER
6493 AS
6494 l_Dum NUMBER := 1;
6495
6496 BEGIN
6497 -- Balances
6498 bal_ANN_ARR_PF_CMTD := p_ANN_ARR_PF_CMTD;
6499 bal_ANN_ARR_PF_CYTD := p_ANN_ARR_PF_CYTD;
6500 bal_ANN_ARR_PF_RUN := p_ANN_ARR_PF_RUN;
6501 bal_ANN_ARR_PF_PTD := p_ANN_ARR_PF_PTD;
6502 bal_ANN_ARR_PF_YTD := p_ANN_ARR_PF_YTD;
6503 bal_ANN_ARR_RA_CMTD := p_ANN_ARR_RA_CMTD;
6504 bal_ANN_ARR_RA_CYTD := p_ANN_ARR_RA_CYTD;
6505 bal_ANN_ARR_RA_RUN := p_ANN_ARR_RA_RUN;
6506 bal_ANN_ARR_RA_PTD := p_ANN_ARR_RA_PTD;
6507 bal_ANN_ARR_RA_YTD := p_ANN_ARR_RA_YTD;
6508 bal_ANN_EE_INC_PRO_POL_CMTD := p_ANN_EE_INC_PRO_POL_CMTD;
6509 bal_ANN_EE_INC_PRO_POL_CYTD := p_ANN_EE_INC_PRO_POL_CYTD;
6510 bal_ANN_EE_INC_PRO_POL_RUN := p_ANN_EE_INC_PRO_POL_RUN;
6511 bal_ANN_EE_INC_PRO_POL_PTD := p_ANN_EE_INC_PRO_POL_PTD;
6512 bal_ANN_EE_INC_PRO_POL_YTD := p_ANN_EE_INC_PRO_POL_YTD;
6513 bal_ANN_MED_CNTRB_ABM_CMTD := p_ANN_MED_CNTRB_ABM_CMTD;
6514 bal_ANN_MED_CNTRB_ABM_CYTD := p_ANN_MED_CNTRB_ABM_CYTD;
6515 bal_ANN_MED_CNTRB_ABM_RUN := p_ANN_MED_CNTRB_ABM_RUN;
6516 bal_ANN_MED_CNTRB_ABM_PTD := p_ANN_MED_CNTRB_ABM_PTD;
6517 bal_ANN_MED_CNTRB_ABM_YTD := p_ANN_MED_CNTRB_ABM_YTD;
6518 bal_ANN_PF_CMTD := p_ANN_PF_CMTD;
6519 bal_ANN_PF_CYTD := p_ANN_PF_CYTD;
6520 bal_ANN_PF_RUN := p_ANN_PF_RUN;
6521 bal_ANN_PF_PTD := p_ANN_PF_PTD;
6522 bal_ANN_PF_YTD := p_ANN_PF_YTD;
6523 bal_ANN_RA_CMTD := p_ANN_RA_CMTD;
6524 bal_ANN_RA_CYTD := p_ANN_RA_CYTD;
6525 bal_ANN_RA_RUN := p_ANN_RA_RUN;
6526 bal_ANN_RA_PTD := p_ANN_RA_PTD;
6527 bal_ANN_RA_YTD := p_ANN_RA_YTD;
6528 /*TYS2010 */
6529 bal_ANN_DONAT_MD_EE_CMTD := p_ANN_DONAT_MD_EE_CMTD;
6530 bal_ANN_DONAT_MD_EE_CYTD := p_ANN_DONAT_MD_EE_CYTD;
6531 bal_ANN_DONAT_MD_EE_RUN := p_ANN_DONAT_MD_EE_RUN;
6532 bal_ANN_DONAT_MD_EE_PTD := p_ANN_DONAT_MD_EE_PTD;
6533 bal_ANN_DONAT_MD_EE_YTD := p_ANN_DONAT_MD_EE_YTD;
6534
6535 RETURN l_Dum;
6536 EXCEPTION
6537 WHEN OTHERS THEN
6538 hr_utility.set_message(801, 'ZaTxBal1_01032012: '||TO_CHAR(SQLCODE));
6539 hr_utility.raise_error;
6540 END ZaTxBal1_01032012;
6541 -------------------------------------------------------------------------------
6542 -- ZaTxBal2_01032012 --
6543 -- Tax module supporting function --
6544 -------------------------------------------------------------------------------
6545 FUNCTION ZaTxBal2_01032012(
6546 -- Balances
6547 p_ARR_PF_CMTD IN NUMBER
6548 ,p_ARR_PF_CYTD IN NUMBER
6549 ,p_ARR_PF_PTD IN NUMBER
6550 ,p_ARR_PF_YTD IN NUMBER
6551 ,p_ARR_RA_CMTD IN NUMBER
6552 ,p_ARR_RA_CYTD IN NUMBER
6553 ,p_ARR_RA_PTD IN NUMBER
6554 ,p_ARR_RA_YTD IN NUMBER
6555 ,p_BP_CMTD IN NUMBER
6556 ,p_BP_RUN IN NUMBER
6557 ,p_BP_PTD IN NUMBER
6558 ,p_BP_YTD IN NUMBER
6559 ,p_CUR_PF_CMTD IN NUMBER
6560 ,p_CUR_PF_CYTD IN NUMBER
6561 ,p_CUR_PF_RUN IN NUMBER
6562 ,p_CUR_PF_PTD IN NUMBER
6563 ,p_CUR_PF_YTD IN NUMBER
6564 ,p_CUR_RA_CMTD IN NUMBER
6565 ,p_CUR_RA_CYTD IN NUMBER
6566 ,p_CUR_RA_RUN IN NUMBER
6567 ,p_CUR_RA_PTD IN NUMBER
6568 ,p_CUR_RA_YTD IN NUMBER
6569 ,p_DIR_DMD_RMN_ITD IN NUMBER
6570 /*TYS2010*/
6571 ,p_DONAT_MD_EE_CMTD IN NUMBER
6572 ,p_DONAT_MD_EE_CYTD IN NUMBER
6573 ,p_DONAT_MD_EE_RUN IN NUMBER
6574 ,p_DONAT_MD_EE_PTD IN NUMBER
6575 ,p_DONAT_MD_EE_YTD IN NUMBER
6576 -- Bug 14168167
6577 ,p_MED_AID_EMP_NRFI_ASG_RUN IN NUMBER
6578 ,p_MED_AID_EMP_NRFI_ASG_TAX_PTD IN NUMBER
6579 ,p_MED_AID_EMP_NRFI_ASG_TAX_YTD IN NUMBER
6580 ,p_MED_AID_EMP_PKG_ASG_RUN IN NUMBER
6581 ,p_MED_AID_EMP_PKG_ASG_TAX_PTD IN NUMBER
6582 ,p_MED_AID_EMP_PKG_ASG_TAX_YTD IN NUMBER
6583 ,p_MED_AID_EMP_RFI_ASG_RUN IN NUMBER
6584 ,p_MED_AID_EMP_RFI_ASG_TAX_PTD IN NUMBER
6585 ,p_MED_AID_EMP_RFI_ASG_TAX_YTD IN NUMBER
6586 -- Bug 14168167
6587 ) RETURN NUMBER
6588 AS
6589 l_Dum NUMBER := 1;
6590
6591 BEGIN
6592 -- Balances
6593 bal_ARR_PF_CMTD := p_ARR_PF_CMTD;
6594 bal_ARR_PF_CYTD := p_ARR_PF_CYTD;
6595 bal_ARR_PF_PTD := p_ARR_PF_PTD;
6596 bal_ARR_PF_YTD := p_ARR_PF_YTD;
6597 bal_ARR_RA_CMTD := p_ARR_RA_CMTD;
6598 bal_ARR_RA_CYTD := p_ARR_RA_CYTD;
6599 bal_ARR_RA_PTD := p_ARR_RA_PTD;
6600 bal_ARR_RA_YTD := p_ARR_RA_YTD;
6601 bal_BP_CMTD := p_BP_CMTD;
6602 bal_BP_RUN := p_BP_RUN;
6603 bal_BP_PTD := p_BP_PTD;
6604 bal_BP_YTD := p_BP_YTD;
6605 bal_CUR_PF_CMTD := p_CUR_PF_CMTD;
6606 bal_CUR_PF_CYTD := p_CUR_PF_CYTD;
6607 bal_CUR_PF_RUN := p_CUR_PF_RUN;
6608 bal_CUR_PF_PTD := p_CUR_PF_PTD;
6609 bal_CUR_PF_YTD := p_CUR_PF_YTD;
6610 bal_CUR_RA_CMTD := p_CUR_RA_CMTD;
6611 bal_CUR_RA_CYTD := p_CUR_RA_CYTD;
6612 bal_CUR_RA_RUN := p_CUR_RA_RUN;
6613 bal_CUR_RA_PTD := p_CUR_RA_PTD;
6614 bal_CUR_RA_YTD := p_CUR_RA_YTD;
6615 bal_DIR_DMD_RMN_ITD := p_DIR_DMD_RMN_ITD;
6616 /*TYS2010*/
6617 bal_DONAT_MD_EE_CMTD:= p_DONAT_MD_EE_CMTD;
6618 bal_DONAT_MD_EE_CYTD:= p_DONAT_MD_EE_CYTD;
6619 bal_DONAT_MD_EE_RUN := p_DONAT_MD_EE_RUN;
6620 bal_DONAT_MD_EE_PTD := p_DONAT_MD_EE_PTD;
6621 bal_DONAT_MD_EE_YTD := p_DONAT_MD_EE_YTD;
6622 -- Bug 14168167
6623 bal_MED_EMP_NRFI_ASG_RUN := p_MED_AID_EMP_NRFI_ASG_RUN;
6624 bal_MED_EMP_NRFI_ASG_TAX_PTD := p_MED_AID_EMP_NRFI_ASG_TAX_PTD;
6625 bal_MED_EMP_NRFI_ASG_TAX_YTD := p_MED_AID_EMP_NRFI_ASG_TAX_YTD;
6626 bal_MED_EMP_PKG_ASG_RUN := p_MED_AID_EMP_PKG_ASG_RUN;
6627 bal_MED_EMP_PKG_ASG_TAX_PTD := p_MED_AID_EMP_PKG_ASG_TAX_PTD;
6628 bal_MED_EMP_PKG_ASG_TAX_YTD := p_MED_AID_EMP_PKG_ASG_TAX_YTD;
6629 bal_MED_EMP_RFI_ASG_RUN := p_MED_AID_EMP_RFI_ASG_RUN;
6630 bal_MED_EMP_RFI_ASG_TAX_PTD := p_MED_AID_EMP_RFI_ASG_TAX_PTD;
6631 bal_MED_EMP_RFI_ASG_TAX_YTD := p_MED_AID_EMP_RFI_ASG_TAX_YTD;
6632 -- Bug 14168167
6633 RETURN l_Dum;
6634 EXCEPTION
6635 WHEN OTHERS THEN
6636 hr_utility.set_message(801, 'ZaTxBal2_01032012: '||TO_CHAR(SQLCODE));
6637 hr_utility.raise_error;
6638 END ZaTxBal2_01032012;
6639 -------------------------------------------------------------------------------
6640 -- ZaTxBal3_01032012 --
6641 -- Tax module supporting function --
6642 -------------------------------------------------------------------------------
6643 FUNCTION ZaTxBal3_01032012(
6644 -- Balances
6645 p_EE_INC_PRO_POL_CMTD IN NUMBER
6646 ,p_EE_INC_PRO_POL_CYTD IN NUMBER
6647 ,p_EE_INC_PRO_POL_RUN IN NUMBER
6648 ,p_EE_INC_PRO_POL_PTD IN NUMBER
6649 ,p_EE_INC_PRO_POL_YTD IN NUMBER
6650 ,p_EXC_ARR_PEN_ITD IN NUMBER
6651 ,p_EXC_ARR_PEN_PTD IN NUMBER
6652 ,p_EXC_ARR_PEN_YTD IN NUMBER
6653 ,p_EXC_ARR_RA_ITD IN NUMBER
6654 ,p_EXC_ARR_RA_PTD IN NUMBER
6655 ,p_EXC_ARR_RA_YTD IN NUMBER
6656 ,p_MED_CONTR_CMTD IN NUMBER
6657 ,p_MED_CONTR_CYTD IN NUMBER
6658 ,p_MED_CONTR_RUN IN NUMBER
6659 ,p_MED_CONTR_PTD IN NUMBER
6660 ,p_MED_CONTR_YTD IN NUMBER
6661 ,p_MED_CNTRB_ABM_CMTD IN NUMBER
6662 ,p_MED_CNTRB_ABM_CYTD IN NUMBER
6663 ,p_MED_CNTRB_ABM_RUN IN NUMBER
6664 ,p_MED_CNTRB_ABM_PTD IN NUMBER
6665 ,p_MED_CNTRB_ABM_YTD IN NUMBER
6666 ,p_NET_PAY_RUN IN NUMBER
6667 ,p_NET_TXB_INC_CMTD IN NUMBER
6668 --EMP201
6669 ,p_NET_PAYE_TXB_INC_CMTD IN NUMBER
6670 ,p_MED_AID_TAX_CR_CMTD IN NUMBER
6671 ,p_MED_AID_TAX_CR_CYTD IN NUMBER
6672 ,p_MED_AID_TAX_CR_RUN IN NUMBER
6673 ,p_MED_AID_TAX_CR_PTD IN NUMBER
6674 ,p_MED_AID_TAX_CR_YTD IN NUMBER
6675 ,p_ANN_MED_AID_TAX_CR_CMTD IN NUMBER
6676 ,p_ANN_MED_AID_TAX_CR_CYTD IN NUMBER
6677 ,p_ANN_MED_AID_TAX_CR_RUN IN NUMBER
6678 ,p_ANN_MED_AID_TAX_CR_PTD IN NUMBER
6679 ,p_ANN_MED_AID_TAX_CR_YTD IN NUMBER
6680 ,p_MED_AID_TAX_CR_USED_CMTD IN NUMBER
6681 ,p_MED_AID_TAX_CR_USED_CYTD IN NUMBER
6682 ,p_MED_AID_TAX_CR_USED_RUN IN NUMBER
6683 ,p_MED_AID_TAX_CR_USED_PTD IN NUMBER
6684 ,p_MED_AID_TAX_CR_USED_YTD IN NUMBER
6685 ,p_MED_AID_TAX_CR_USED_NI_CMTD IN NUMBER
6686 ,p_MED_AID_TAX_CR_USED_NI_CYTD IN NUMBER
6687 ,p_MED_AID_TAX_CR_USED_NI_RUN IN NUMBER
6688 ,p_MED_AID_TAX_CR_USED_NI_PTD IN NUMBER
6689 ,p_MED_AID_TAX_CR_USED_NI_YTD IN NUMBER
6690 ,p_MED_AID_TAX_CR_USED_FB_CMTD IN NUMBER
6691 ,p_MED_AID_TAX_CR_USED_FB_CYTD IN NUMBER
6692 ,p_MED_AID_TAX_CR_USED_FB_RUN IN NUMBER
6693 ,p_MED_AID_TAX_CR_USED_FB_PTD IN NUMBER
6694 ,p_MED_AID_TAX_CR_USED_FB_YTD IN NUMBER
6695 ,p_MED_AID_TAX_CR_USED_TA_CMTD IN NUMBER
6696 ,p_MED_AID_TAX_CR_USED_TA_CYTD IN NUMBER
6697 ,p_MED_AID_TAX_CR_USED_TA_RUN IN NUMBER
6698 ,p_MED_AID_TAX_CR_USED_TA_PTD IN NUMBER
6699 ,p_MED_AID_TAX_CR_USED_TA_YTD IN NUMBER
6700 ,p_MED_AID_TAX_CR_USED_BP_CMTD IN NUMBER
6701 ,p_MED_AID_TAX_CR_USED_BP_CYTD IN NUMBER
6702 ,p_MED_AID_TAX_CR_USED_BP_RUN IN NUMBER
6703 ,p_MED_AID_TAX_CR_USED_BP_PTD IN NUMBER
6704 ,p_MED_AID_TAX_CR_USED_BP_YTD IN NUMBER
6705 ,p_MED_AID_TAX_CR_USED_AB_CMTD IN NUMBER
6706 ,p_MED_AID_TAX_CR_USED_AB_CYTD IN NUMBER
6707 ,p_MED_AID_TAX_CR_USED_AB_RUN IN NUMBER
6708 ,p_MED_AID_TAX_CR_USED_AB_PTD IN NUMBER
6709 ,p_MED_AID_TAX_CR_USED_AB_YTD IN NUMBER
6710 ,p_MED_AID_TAX_CR_USED_AP_CMTD IN NUMBER
6711 ,p_MED_AID_TAX_CR_USED_AP_CYTD IN NUMBER
6712 ,p_MED_AID_TAX_CR_USED_AP_RUN IN NUMBER
6713 ,p_MED_AID_TAX_CR_USED_AP_PTD IN NUMBER
6714 ,p_MED_AID_TAX_CR_USED_AP_YTD IN NUMBER
6715 ,p_MED_AID_TAX_CR_USED_PO_CMTD IN NUMBER
6716 ,p_MED_AID_TAX_CR_USED_PO_CYTD IN NUMBER
6717 ,p_MED_AID_TAX_CR_USED_PO_RUN IN NUMBER
6718 ,p_MED_AID_TAX_CR_USED_PO_PTD IN NUMBER
6719 ,p_MED_AID_TAX_CR_USED_PO_YTD IN NUMBER
6720 -- Bug 13777759
6721 ,p_MED_AID_TAX_CR_USED_NG_CMTD IN NUMBER
6722 ,p_MED_AID_TAX_CR_USED_NG_CYTD IN NUMBER
6723 ,p_MED_AID_TAX_CR_USED_NG_RUN IN NUMBER
6724 ,p_MED_AID_TAX_CR_USED_NG_PTD IN NUMBER
6725 ,p_MED_AID_TAX_CR_USED_NG_YTD IN NUMBER
6726 ,p_MED_AID_TAX_CR_USED_EE_CMTD IN NUMBER
6727 ,p_MED_AID_TAX_CR_USED_EE_CYTD IN NUMBER
6728 ,p_MED_AID_TAX_CR_USED_EE_RUN IN NUMBER
6729 ,p_MED_AID_TAX_CR_USED_EE_PTD IN NUMBER
6730 ,p_MED_AID_TAX_CR_USED_EE_YTD IN NUMBER
6731 -- Bug 13777759
6732
6733 ,p_ER_MED_CONTR_CMTD IN NUMBER
6734 ,p_ER_MED_CONTR_CYTD IN NUMBER
6735 ,p_ER_MED_CONTR_RUN IN NUMBER
6736 ,p_ER_MED_CONTR_PTD IN NUMBER
6737 ,p_ER_MED_CONTR_YTD IN NUMBER
6738 -- Bug 14024624
6739 ,p_MED_AID_TAX_CR_USED_DR_CMTD IN NUMBER
6740 ,p_MED_AID_TAX_CR_USED_DR_CYTD IN NUMBER
6741 ,p_MED_AID_TAX_CR_USED_DR_RUN IN NUMBER
6742 ,p_MED_AID_TAX_CR_USED_DR_PTD IN NUMBER
6743 ,p_MED_AID_TAX_CR_USED_DR_YTD IN NUMBER
6744 -- Bug 14024624
6745 ,p_MED_AID_TAX_CR_USED_LS_PTD IN NUMBER
6746 ,p_MED_AID_TAX_CR_USED_LS_YTD IN NUMBER
6747 ) RETURN NUMBER
6748 AS
6749 l_Dum NUMBER := 1;
6750
6751 BEGIN
6752 -- Balances
6753 bal_EE_INC_PRO_POL_CMTD := p_EE_INC_PRO_POL_CMTD;
6754 bal_EE_INC_PRO_POL_CYTD := p_EE_INC_PRO_POL_CYTD;
6755 bal_EE_INC_PRO_POL_RUN := p_EE_INC_PRO_POL_RUN;
6756 bal_EE_INC_PRO_POL_PTD := p_EE_INC_PRO_POL_PTD;
6757 bal_EE_INC_PRO_POL_YTD := p_EE_INC_PRO_POL_YTD;
6758 bal_EXC_ARR_PEN_ITD := p_EXC_ARR_PEN_ITD;
6759 bal_EXC_ARR_PEN_PTD := p_EXC_ARR_PEN_PTD;
6760 bal_EXC_ARR_PEN_YTD := p_EXC_ARR_PEN_YTD;
6761 bal_EXC_ARR_RA_ITD := p_EXC_ARR_RA_ITD;
6762 bal_EXC_ARR_RA_PTD := p_EXC_ARR_RA_PTD;
6763 bal_EXC_ARR_RA_YTD := p_EXC_ARR_RA_YTD;
6764 bal_MED_CONTR_CMTD := p_MED_CONTR_CMTD;
6765 bal_MED_CONTR_CYTD := p_MED_CONTR_CYTD;
6766 bal_MED_CONTR_RUN := p_MED_CONTR_RUN;
6767 bal_MED_CONTR_PTD := p_MED_CONTR_PTD;
6768 bal_MED_CONTR_YTD := p_MED_CONTR_YTD;
6769 bal_MED_CNTRB_ABM_CMTD := p_MED_CNTRB_ABM_CMTD;
6770 bal_MED_CNTRB_ABM_CYTD := p_MED_CNTRB_ABM_CYTD;
6771 bal_MED_CNTRB_ABM_RUN := p_MED_CNTRB_ABM_RUN;
6772 bal_MED_CNTRB_ABM_PTD := p_MED_CNTRB_ABM_PTD;
6773 bal_MED_CNTRB_ABM_YTD := p_MED_CNTRB_ABM_YTD;
6774 bal_NET_PAY_RUN := p_NET_PAY_RUN;
6775 bal_NET_TXB_INC_CMTD := p_NET_TXB_INC_CMTD;
6776 bal_NET_PAYE_TXB_INC_CMTD := p_NET_PAYE_TXB_INC_CMTD;
6777
6778 bal_MED_AID_TAX_CR_CMTD := p_MED_AID_TAX_CR_CMTD;
6779 bal_MED_AID_TAX_CR_CYTD := p_MED_AID_TAX_CR_CYTD;
6780 bal_MED_AID_TAX_CR_RUN := p_MED_AID_TAX_CR_RUN;
6781 bal_MED_AID_TAX_CR_PTD := p_MED_AID_TAX_CR_PTD;
6782 bal_MED_AID_TAX_CR_YTD := p_MED_AID_TAX_CR_YTD;
6783 bal_ANN_MED_AID_TAX_CR_CMTD := p_ANN_MED_AID_TAX_CR_CMTD;
6784 bal_ANN_MED_AID_TAX_CR_CYTD := p_ANN_MED_AID_TAX_CR_CYTD;
6785 bal_ANN_MED_AID_TAX_CR_RUN := p_ANN_MED_AID_TAX_CR_RUN;
6786 bal_ANN_MED_AID_TAX_CR_PTD := p_ANN_MED_AID_TAX_CR_PTD;
6787 bal_ANN_MED_AID_TAX_CR_YTD := p_ANN_MED_AID_TAX_CR_YTD;
6788 bal_MED_AID_TAX_CR_USED_CMTD := p_MED_AID_TAX_CR_USED_CMTD;
6789 bal_MED_AID_TAX_CR_USED_CYTD := p_MED_AID_TAX_CR_USED_CYTD;
6790 bal_MED_AID_TAX_CR_USED_RUN := p_MED_AID_TAX_CR_USED_RUN;
6791 bal_MED_AID_TAX_CR_USED_PTD := p_MED_AID_TAX_CR_USED_PTD;
6792 bal_MED_AID_TAX_CR_USED_YTD := p_MED_AID_TAX_CR_USED_YTD;
6793 bal_MED_TAX_CR_USED_NI_CMTD := p_MED_AID_TAX_CR_USED_NI_CMTD;
6794 bal_MED_TAX_CR_USED_NI_CYTD := p_MED_AID_TAX_CR_USED_NI_CYTD;
6795 bal_MED_TAX_CR_USED_NI_RUN := p_MED_AID_TAX_CR_USED_NI_RUN;
6796 bal_MED_TAX_CR_USED_NI_PTD := p_MED_AID_TAX_CR_USED_NI_PTD;
6797 bal_MED_TAX_CR_USED_NI_YTD := p_MED_AID_TAX_CR_USED_NI_YTD;
6798 bal_MED_TAX_CR_USED_FB_CMTD := p_MED_AID_TAX_CR_USED_FB_CMTD;
6799 bal_MED_TAX_CR_USED_FB_CYTD := p_MED_AID_TAX_CR_USED_FB_CYTD;
6800 bal_MED_TAX_CR_USED_FB_RUN := p_MED_AID_TAX_CR_USED_FB_RUN;
6801 bal_MED_TAX_CR_USED_FB_PTD := p_MED_AID_TAX_CR_USED_FB_PTD;
6802 bal_MED_TAX_CR_USED_FB_YTD := p_MED_AID_TAX_CR_USED_FB_YTD;
6803 bal_MED_TAX_CR_USED_TA_CMTD := p_MED_AID_TAX_CR_USED_TA_CMTD;
6804 bal_MED_TAX_CR_USED_TA_CYTD := p_MED_AID_TAX_CR_USED_TA_CYTD;
6805 bal_MED_TAX_CR_USED_TA_RUN := p_MED_AID_TAX_CR_USED_TA_RUN;
6806 bal_MED_TAX_CR_USED_TA_PTD := p_MED_AID_TAX_CR_USED_TA_PTD;
6807 bal_MED_TAX_CR_USED_TA_YTD := p_MED_AID_TAX_CR_USED_TA_YTD;
6808 bal_MED_TAX_CR_USED_BP_CMTD := p_MED_AID_TAX_CR_USED_BP_CMTD;
6809 bal_MED_TAX_CR_USED_BP_CYTD := p_MED_AID_TAX_CR_USED_BP_CYTD;
6810 bal_MED_TAX_CR_USED_BP_RUN := p_MED_AID_TAX_CR_USED_BP_RUN;
6811 bal_MED_TAX_CR_USED_BP_PTD := p_MED_AID_TAX_CR_USED_BP_PTD;
6812 bal_MED_TAX_CR_USED_BP_YTD := p_MED_AID_TAX_CR_USED_BP_YTD;
6813 bal_MED_TAX_CR_USED_AB_CMTD := p_MED_AID_TAX_CR_USED_AB_CMTD;
6814 bal_MED_TAX_CR_USED_AB_CYTD := p_MED_AID_TAX_CR_USED_AB_CYTD;
6815 bal_MED_TAX_CR_USED_AB_RUN := p_MED_AID_TAX_CR_USED_AB_RUN;
6816 bal_MED_TAX_CR_USED_AB_PTD := p_MED_AID_TAX_CR_USED_AB_PTD;
6817 bal_MED_TAX_CR_USED_AB_YTD := p_MED_AID_TAX_CR_USED_AB_YTD;
6818 bal_MED_TAX_CR_USED_AP_CMTD := p_MED_AID_TAX_CR_USED_AP_CMTD;
6819 bal_MED_TAX_CR_USED_AP_CYTD := p_MED_AID_TAX_CR_USED_AP_CYTD;
6820 bal_MED_TAX_CR_USED_AP_RUN := p_MED_AID_TAX_CR_USED_AP_RUN;
6821 bal_MED_TAX_CR_USED_AP_PTD := p_MED_AID_TAX_CR_USED_AP_PTD;
6822 bal_MED_TAX_CR_USED_AP_YTD := p_MED_AID_TAX_CR_USED_AP_YTD;
6823 bal_MED_TAX_CR_USED_PO_CMTD := p_MED_AID_TAX_CR_USED_PO_CMTD;
6824 bal_MED_TAX_CR_USED_PO_CYTD := p_MED_AID_TAX_CR_USED_PO_CYTD;
6825 bal_MED_TAX_CR_USED_PO_RUN := p_MED_AID_TAX_CR_USED_PO_RUN;
6826 bal_MED_TAX_CR_USED_PO_PTD := p_MED_AID_TAX_CR_USED_PO_PTD;
6827 bal_MED_TAX_CR_USED_PO_YTD := p_MED_AID_TAX_CR_USED_PO_YTD;
6828 -- Bug 13777759
6829 bal_MED_TAX_CR_USED_NG_CMTD := p_MED_AID_TAX_CR_USED_NG_CMTD;
6830 bal_MED_TAX_CR_USED_NG_CYTD := p_MED_AID_TAX_CR_USED_NG_CYTD;
6831 bal_MED_TAX_CR_USED_NG_RUN := p_MED_AID_TAX_CR_USED_NG_RUN;
6832 bal_MED_TAX_CR_USED_NG_PTD := p_MED_AID_TAX_CR_USED_NG_PTD;
6833 bal_MED_TAX_CR_USED_NG_YTD := p_MED_AID_TAX_CR_USED_NG_YTD;
6834 bal_MED_TAX_CR_USED_EE_CMTD := p_MED_AID_TAX_CR_USED_EE_CMTD;
6835 bal_MED_TAX_CR_USED_EE_CYTD := p_MED_AID_TAX_CR_USED_EE_CYTD;
6836 bal_MED_TAX_CR_USED_EE_RUN := p_MED_AID_TAX_CR_USED_EE_RUN;
6837 bal_MED_TAX_CR_USED_EE_PTD := p_MED_AID_TAX_CR_USED_EE_PTD;
6838 bal_MED_TAX_CR_USED_EE_YTD := p_MED_AID_TAX_CR_USED_EE_YTD;
6839 -- Bug 13777759
6840
6841 bal_ER_MED_CONTR_CMTD := p_ER_MED_CONTR_CMTD;
6842 bal_ER_MED_CONTR_CYTD := p_ER_MED_CONTR_CYTD;
6843 bal_ER_MED_CONTR_RUN := p_ER_MED_CONTR_RUN;
6844 bal_ER_MED_CONTR_PTD := p_ER_MED_CONTR_PTD;
6845 bal_ER_MED_CONTR_YTD := p_ER_MED_CONTR_YTD;
6846
6847 -- Bug 14024624
6848 bal_MED_TAX_CR_USED_DR_CMTD := p_MED_AID_TAX_CR_USED_DR_CMTD;
6849 bal_MED_TAX_CR_USED_DR_CYTD := p_MED_AID_TAX_CR_USED_DR_CYTD;
6850 bal_MED_TAX_CR_USED_DR_RUN := p_MED_AID_TAX_CR_USED_DR_RUN;
6851 bal_MED_TAX_CR_USED_DR_PTD := p_MED_AID_TAX_CR_USED_DR_PTD;
6852 bal_MED_TAX_CR_USED_DR_YTD := p_MED_AID_TAX_CR_USED_DR_YTD;
6853 -- Bug 14024624
6854
6855 bal_MED_AID_TAX_CR_USED_LS_PTD := p_MED_AID_TAX_CR_USED_LS_PTD;
6856 bal_MED_AID_TAX_CR_USED_LS_YTD := p_MED_AID_TAX_CR_USED_LS_YTD;
6857
6858 RETURN l_Dum;
6859 EXCEPTION
6860 WHEN OTHERS THEN
6861 hr_utility.set_message(801, 'ZaTxBal3_01032012: '||TO_CHAR(SQLCODE));
6862 hr_utility.raise_error;
6863 END ZaTxBal3_01032012;
6864 -------------------------------------------------------------------------------
6865 -- ZaTxBal4_01032012 --
6866 -- Tax module supporting function --
6867 -------------------------------------------------------------------------------
6868 FUNCTION ZaTxBal4_01032012(
6869 -- Balances
6870 p_PAYE_YTD IN NUMBER
6871 ,p_SITE_YTD IN NUMBER
6872 ,p_TAX_YTD IN NUMBER
6873 ,p_TX_ON_AB_PTD IN NUMBER
6874 ,p_TX_ON_AB_YTD IN NUMBER
6875 ,p_TX_ON_AP_PTD IN NUMBER
6876 ,p_TX_ON_AP_YTD IN NUMBER
6877 ,p_TX_ON_BP_PTD IN NUMBER
6878 ,p_TX_ON_BP_YTD IN NUMBER
6879 ,p_TX_ON_TA_PTD IN NUMBER
6880 ,p_TX_ON_TA_YTD IN NUMBER
6881 ,p_TX_ON_DR_PTD IN NUMBER
6882 ,p_TX_ON_DR_YTD IN NUMBER
6883 ,p_TX_ON_FB_PTD IN NUMBER
6884 ,p_TX_ON_FB_YTD IN NUMBER
6885 ,p_TX_ON_NI_PTD IN NUMBER
6886 ,p_TX_ON_NI_YTD IN NUMBER
6887 ,p_TX_ON_PO_PTD IN NUMBER
6888 ,p_TX_ON_PO_YTD IN NUMBER
6889 ,p_TX_ON_LS_PTD IN NUMBER
6890 ,p_TX_ON_RET_LS_PTD IN NUMBER
6891 /* NTG */
6892 ,p_TX_ON_AP_NTG_PTD IN NUMBER
6893 ,p_TX_ON_AP_NTG_YTD IN NUMBER
6894 ,p_TX_ON_EE_DBT_NTG_PTD IN NUMBER
6895 ,p_TX_ON_EE_DBT_NTG_YTD IN NUMBER
6896 /* End NTG */
6897 ,p_TX_ON_LS_RUN IN NUMBER
6898 ,p_TX_ON_LS_YTD IN NUMBER
6899 ) RETURN NUMBER
6900 AS
6901 l_Dum NUMBER := 1;
6902
6903 BEGIN
6904 -- Balances
6905 bal_PAYE_YTD := p_PAYE_YTD;
6906 bal_SITE_YTD := p_SITE_YTD;
6907 bal_TAX_YTD := p_TAX_YTD;
6908 bal_TX_ON_AB_PTD := p_TX_ON_AB_PTD;
6909 bal_TX_ON_AB_YTD := p_TX_ON_AB_YTD;
6910 bal_TX_ON_AP_PTD := p_TX_ON_AP_PTD;
6911 bal_TX_ON_AP_YTD := p_TX_ON_AP_YTD;
6912 bal_TX_ON_BP_PTD := p_TX_ON_BP_PTD;
6913 bal_TX_ON_BP_YTD := p_TX_ON_BP_YTD;
6914 bal_TX_ON_TA_PTD := p_TX_ON_TA_PTD;
6915 bal_TX_ON_TA_YTD := p_TX_ON_TA_YTD;
6916 bal_TX_ON_DR_PTD := p_TX_ON_DR_PTD;
6917 bal_TX_ON_DR_YTD := p_TX_ON_DR_YTD;
6918 bal_TX_ON_FB_PTD := p_TX_ON_FB_PTD;
6919 bal_TX_ON_FB_YTD := p_TX_ON_FB_YTD;
6920 bal_TX_ON_NI_PTD := p_TX_ON_NI_PTD;
6921 bal_TX_ON_NI_YTD := p_TX_ON_NI_YTD;
6922 bal_TX_ON_PO_PTD := p_TX_ON_PO_PTD;
6923 bal_TX_ON_PO_YTD := p_TX_ON_PO_YTD;
6924 bal_TX_ON_LS_PTD := p_TX_ON_LS_PTD;
6925 bal_TX_ON_RET_LS_PTD := p_TX_ON_RET_LS_PTD;
6926 /* NTG */
6927 bal_TX_ON_AP_NTG_YTD := p_TX_ON_AP_NTG_YTD;
6928 bal_TX_ON_AP_NTG_PTD := p_TX_ON_AP_NTG_PTD;
6929 bal_TX_ON_EE_DBT_NTG_YTD := p_TX_ON_EE_DBT_NTG_YTD;
6930 bal_TX_ON_EE_DBT_NTG_PTD := p_TX_ON_EE_DBT_NTG_PTD;
6931
6932 bal_TX_ON_LS_RUN := p_TX_ON_LS_RUN;
6933 bal_TX_ON_LS_YTD := p_TX_ON_LS_YTD;
6934
6935 RETURN l_Dum;
6936 EXCEPTION
6937 WHEN OTHERS THEN
6938 hr_utility.set_message(801, 'ZaTxBal4_01032012: '||TO_CHAR(SQLCODE));
6939 hr_utility.raise_error;
6940 END ZaTxBal4_01032012;
6941 -------------------------------------------------------------------------------
6942 -- ZaTxBal5_01032012 --
6943 -- Tax module supporting function --
6944 -------------------------------------------------------------------------------
6945 FUNCTION ZaTxBal5_01032012(
6946 -- Balances
6947 p_TOT_INC_PTD IN NUMBER
6948 ,p_TOT_INC_YTD IN NUMBER
6949 ,p_TOT_NRFI_AN_INC_CMTD IN NUMBER
6950 ,p_TOT_NRFI_AN_INC_CYTD IN NUMBER
6951 ,p_TOT_NRFI_AN_INC_RUN IN NUMBER
6952 ,p_TOT_NRFI_AN_INC_PTD IN NUMBER
6953 ,p_TOT_NRFI_AN_INC_YTD IN NUMBER
6954 ,p_TOT_NRFI_INC_CMTD IN NUMBER
6955 ,p_TOT_NRFI_INC_CYTD IN NUMBER
6956 ,p_TOT_NRFI_INC_RUN IN NUMBER
6957 ,p_TOT_NRFI_INC_PTD IN NUMBER
6958 ,p_TOT_NRFI_INC_YTD IN NUMBER
6959 ,p_TOT_RFI_AN_INC_CMTD IN NUMBER
6960 ,p_TOT_RFI_AN_INC_CYTD IN NUMBER
6961 ,p_TOT_RFI_AN_INC_RUN IN NUMBER
6962 ,p_TOT_RFI_AN_INC_PTD IN NUMBER
6963 ,p_TOT_RFI_AN_INC_YTD IN NUMBER
6964 ,p_TOT_RFI_INC_CMTD IN NUMBER
6965 ,p_TOT_RFI_INC_CYTD IN NUMBER
6966 ,p_TOT_RFI_INC_RUN IN NUMBER
6967 ,p_TOT_RFI_INC_PTD IN NUMBER
6968 ,p_TOT_RFI_INC_YTD IN NUMBER
6969 ,p_TOT_SEA_WRK_DYS_WRK_YTD IN NUMBER
6970 ,p_TOT_SKL_ANN_INC_CMTD IN NUMBER
6971 ,p_TOT_SKL_INC_CMTD IN NUMBER
6972 ,p_TOT_TXB_INC_ITD IN NUMBER
6973 --EMP201
6974 ,p_GROSS_REMUNERATION_CMTD IN NUMBER
6975 ,p_ANN_PAYMENTS_CMTD IN NUMBER
6976 --NTG
6977 ,p_TOT_RFI_EE_DBT_NTG_CMTD IN NUMBER
6978 ,p_TOT_RFI_EE_DBT_NTG_CYTD IN NUMBER
6979 ,p_TOT_RFI_EE_DBT_NTG_RUN IN NUMBER
6980 ,p_TOT_RFI_EE_DBT_NTG_PTD IN NUMBER
6981 ,p_TOT_RFI_EE_DBT_NTG_YTD IN NUMBER
6982 ,p_TOT_NRFI_EE_DBT_NTG_CMTD IN NUMBER
6983 ,p_TOT_NRFI_EE_DBT_NTG_CYTD IN NUMBER
6984 ,p_TOT_NRFI_EE_DBT_NTG_RUN IN NUMBER
6985 ,p_TOT_NRFI_EE_DBT_NTG_PTD IN NUMBER
6986 ,p_TOT_NRFI_EE_DBT_NTG_YTD IN NUMBER
6987 ,p_TOT_SKL_ANN_INC_NTG_CMTD IN NUMBER
6988 ) RETURN NUMBER
6989 AS
6990 l_Dum NUMBER := 1;
6991
6992 BEGIN
6993 -- Balances
6994 bal_TOT_INC_PTD := p_TOT_INC_PTD;
6995 bal_TOT_INC_YTD := p_TOT_INC_YTD;
6996 bal_TOT_NRFI_AN_INC_CMTD := p_TOT_NRFI_AN_INC_CMTD;
6997 bal_TOT_NRFI_AN_INC_CYTD := p_TOT_NRFI_AN_INC_CYTD;
6998 bal_TOT_NRFI_AN_INC_RUN := p_TOT_NRFI_AN_INC_RUN;
6999 bal_TOT_NRFI_AN_INC_PTD := p_TOT_NRFI_AN_INC_PTD;
7000 bal_TOT_NRFI_AN_INC_YTD := p_TOT_NRFI_AN_INC_YTD;
7001 bal_TOT_NRFI_INC_CMTD := p_TOT_NRFI_INC_CMTD;
7002 bal_TOT_NRFI_INC_CYTD := p_TOT_NRFI_INC_CYTD;
7003 bal_TOT_NRFI_INC_RUN := p_TOT_NRFI_INC_RUN;
7004 bal_TOT_NRFI_INC_PTD := p_TOT_NRFI_INC_PTD;
7005 bal_TOT_NRFI_INC_YTD := p_TOT_NRFI_INC_YTD;
7006 bal_TOT_RFI_AN_INC_CMTD := p_TOT_RFI_AN_INC_CMTD;
7007 bal_TOT_RFI_AN_INC_CYTD := p_TOT_RFI_AN_INC_CYTD;
7008 bal_TOT_RFI_AN_INC_RUN := p_TOT_RFI_AN_INC_RUN;
7009 bal_TOT_RFI_AN_INC_PTD := p_TOT_RFI_AN_INC_PTD;
7010 bal_TOT_RFI_AN_INC_YTD := p_TOT_RFI_AN_INC_YTD;
7011 bal_TOT_RFI_INC_CMTD := p_TOT_RFI_INC_CMTD;
7012 bal_TOT_RFI_INC_CYTD := p_TOT_RFI_INC_CYTD;
7013 bal_TOT_RFI_INC_RUN := p_TOT_RFI_INC_RUN;
7014 bal_TOT_RFI_INC_PTD := p_TOT_RFI_INC_PTD;
7015 bal_TOT_RFI_INC_YTD := p_TOT_RFI_INC_YTD;
7016 bal_TOT_SEA_WRK_DYS_WRK_YTD := p_TOT_SEA_WRK_DYS_WRK_YTD;
7017 bal_TOT_SKL_ANN_INC_CMTD := p_TOT_SKL_ANN_INC_CMTD;
7018 bal_TOT_SKL_INC_CMTD := p_TOT_SKL_INC_CMTD;
7019 bal_TOT_TXB_INC_ITD := p_TOT_TXB_INC_ITD;
7020 -- EMP201
7021 bal_GROSS_REMUNERATION_CMTD := p_GROSS_REMUNERATION_CMTD ;
7022 bal_ANN_PAYMENTS_CMTD := p_ANN_PAYMENTS_CMTD ;
7023 -- NTG
7024 bal_TOT_RFI_EE_DBT_NTG_CMTD := p_TOT_RFI_EE_DBT_NTG_CMTD;
7025 bal_TOT_RFI_EE_DBT_NTG_CYTD := p_TOT_RFI_EE_DBT_NTG_CYTD;
7026 bal_TOT_RFI_EE_DBT_NTG_RUN := p_TOT_RFI_EE_DBT_NTG_RUN;
7027 bal_TOT_RFI_EE_DBT_NTG_PTD := p_TOT_RFI_EE_DBT_NTG_PTD;
7028 bal_TOT_RFI_EE_DBT_NTG_YTD := p_TOT_RFI_EE_DBT_NTG_YTD;
7029 bal_TOT_NRFI_EE_DBT_NTG_CMTD:= p_TOT_NRFI_EE_DBT_NTG_CMTD;
7030 bal_TOT_NRFI_EE_DBT_NTG_CYTD:= p_TOT_NRFI_EE_DBT_NTG_CYTD;
7031 bal_TOT_NRFI_EE_DBT_NTG_RUN := p_TOT_NRFI_EE_DBT_NTG_RUN;
7032 bal_TOT_NRFI_EE_DBT_NTG_PTD := p_TOT_NRFI_EE_DBT_NTG_PTD;
7033 bal_TOT_NRFI_EE_DBT_NTG_YTD := p_TOT_NRFI_EE_DBT_NTG_YTD;
7034 bal_TOT_SKL_ANN_INC_NTG_CMTD:= p_TOT_SKL_ANN_INC_NTG_CMTD;
7035
7036 RETURN l_Dum;
7037 EXCEPTION
7038 WHEN OTHERS THEN
7039 hr_utility.set_message(801, 'ZaTxBal5_01032012: '||TO_CHAR(SQLCODE));
7040 hr_utility.raise_error;
7041 END ZaTxBal5_01032012;
7042
7043 -------------------------------------------------------------------------------
7044 -- ZaTxBal6_01032012 --
7045 -- Tax module supporting function --
7046 -------------------------------------------------------------------------------
7047 FUNCTION ZaTxBal6_01032012(
7048 -- Balances
7049 p_TOT_TXB_AB_CMTD IN NUMBER
7050 ,p_TOT_TXB_AB_RUN IN NUMBER
7051 ,p_TOT_TXB_AB_PTD IN NUMBER
7052 ,p_TOT_TXB_AB_YTD IN NUMBER
7053 ,p_TOT_TXB_AP_CMTD IN NUMBER
7054 ,p_TOT_TXB_AP_RUN IN NUMBER
7055 ,p_TOT_TXB_AP_PTD IN NUMBER
7056 ,p_TOT_TXB_AP_YTD IN NUMBER
7057 ,p_TOT_TXB_FB_CMTD IN NUMBER
7058 ,p_TOT_TXB_FB_CYTD IN NUMBER
7059 ,p_TOT_TXB_FB_RUN IN NUMBER
7060 ,p_TOT_TXB_FB_PTD IN NUMBER
7061 ,p_TOT_TXB_FB_YTD IN NUMBER
7062 ,p_TOT_TXB_NI_CMTD IN NUMBER
7063 ,p_TOT_TXB_NI_CYTD IN NUMBER
7064 ,p_TOT_TXB_NI_RUN IN NUMBER
7065 ,p_TOT_TXB_NI_PTD IN NUMBER
7066 ,p_TOT_TXB_NI_YTD IN NUMBER
7067 ,p_TOT_TXB_PO_CMTD IN NUMBER
7068 ,p_TOT_TXB_PO_RUN IN NUMBER
7069 ,p_TOT_TXB_PO_PTD IN NUMBER
7070 ,p_TOT_TXB_PO_YTD IN NUMBER
7071 ,p_TOT_TXB_TA_CMTD IN NUMBER
7072 ,p_TOT_TXB_TA_CYTD IN NUMBER
7073 ,p_TOT_TXB_TA_RUN IN NUMBER
7074 ,p_TOT_TXB_TA_PTD IN NUMBER
7075 ,p_TOT_TXB_TA_YTD IN NUMBER
7076 /* NTG */
7077 ,p_TOT_TXB_AP_NTG_CMTD IN NUMBER
7078 ,p_TOT_TXB_AP_NTG_RUN IN NUMBER
7079 ,p_TOT_TXB_AP_NTG_PTD IN NUMBER
7080 ,p_TOT_TXB_AP_NTG_YTD IN NUMBER
7081 ,p_TOT_TXB_EE_DBT_NTG_CMTD IN NUMBER
7082 ,p_TOT_TXB_EE_DBT_NTG_RUN IN NUMBER
7083 ,p_TOT_TXB_EE_DBT_NTG_PTD IN NUMBER
7084 ,p_TOT_TXB_EE_DBT_NTG_YTD IN NUMBER
7085 /* End NTG */
7086 ) RETURN NUMBER
7087 AS
7088 l_Dum NUMBER := 1;
7089
7090 BEGIN
7091 -- Balances
7092 bal_TOT_TXB_AB_CMTD := p_TOT_TXB_AB_CMTD;
7093 bal_TOT_TXB_AB_RUN := p_TOT_TXB_AB_RUN;
7094 bal_TOT_TXB_AB_PTD := p_TOT_TXB_AB_PTD;
7095 bal_TOT_TXB_AB_YTD := p_TOT_TXB_AB_YTD;
7096 bal_TOT_TXB_AP_CMTD := p_TOT_TXB_AP_CMTD;
7097 bal_TOT_TXB_AP_RUN := p_TOT_TXB_AP_RUN;
7098 bal_TOT_TXB_AP_PTD := p_TOT_TXB_AP_PTD;
7099 bal_TOT_TXB_AP_YTD := p_TOT_TXB_AP_YTD;
7100 bal_TOT_TXB_FB_CMTD := p_TOT_TXB_FB_CMTD;
7101 bal_TOT_TXB_FB_CYTD := p_TOT_TXB_FB_CYTD;
7102 bal_TOT_TXB_FB_RUN := p_TOT_TXB_FB_RUN;
7103 bal_TOT_TXB_FB_PTD := p_TOT_TXB_FB_PTD;
7104 bal_TOT_TXB_FB_YTD := p_TOT_TXB_FB_YTD;
7105 bal_TOT_TXB_NI_CMTD := p_TOT_TXB_NI_CMTD;
7106 bal_TOT_TXB_NI_CYTD := p_TOT_TXB_NI_CYTD;
7107 bal_TOT_TXB_NI_RUN := p_TOT_TXB_NI_RUN;
7108 bal_TOT_TXB_NI_PTD := p_TOT_TXB_NI_PTD;
7109 bal_TOT_TXB_NI_YTD := p_TOT_TXB_NI_YTD;
7110 bal_TOT_TXB_PO_CMTD := p_TOT_TXB_PO_CMTD;
7111 bal_TOT_TXB_PO_RUN := p_TOT_TXB_PO_RUN;
7112 bal_TOT_TXB_PO_PTD := p_TOT_TXB_PO_PTD;
7113 bal_TOT_TXB_PO_YTD := p_TOT_TXB_PO_YTD;
7114 bal_TOT_TXB_TA_CMTD := p_TOT_TXB_TA_CMTD;
7115 bal_TOT_TXB_TA_CYTD := p_TOT_TXB_TA_CYTD;
7116 bal_TOT_TXB_TA_RUN := p_TOT_TXB_TA_RUN;
7117 bal_TOT_TXB_TA_PTD := p_TOT_TXB_TA_PTD;
7118 bal_TOT_TXB_TA_YTD := p_TOT_TXB_TA_YTD;
7119 /* NTG */
7120 bal_TOT_TXB_AP_NTG_CMTD := p_TOT_TXB_AP_NTG_CMTD;
7121 bal_TOT_TXB_AP_NTG_RUN := p_TOT_TXB_AP_NTG_RUN;
7122 bal_TOT_TXB_AP_NTG_PTD := p_TOT_TXB_AP_NTG_PTD;
7123 bal_TOT_TXB_AP_NTG_YTD := p_TOT_TXB_AP_NTG_YTD;
7124 bal_TOT_TXB_EE_DBT_NTG_CMTD := p_TOT_TXB_EE_DBT_NTG_CMTD;
7125 bal_TOT_TXB_EE_DBT_NTG_RUN := p_TOT_TXB_EE_DBT_NTG_RUN;
7126 bal_TOT_TXB_EE_DBT_NTG_PTD := p_TOT_TXB_EE_DBT_NTG_PTD;
7127 bal_TOT_TXB_EE_DBT_NTG_YTD := p_TOT_TXB_EE_DBT_NTG_YTD;
7128 /* End NTG */
7129
7130
7131 RETURN l_Dum;
7132 EXCEPTION
7133 WHEN OTHERS THEN
7134 hr_utility.set_message(801, 'ZaTxBal6_01032012: '||TO_CHAR(SQLCODE));
7135 hr_utility.raise_error;
7136 END ZaTxBal6_01032012;
7137
7138 -------------------------------------------------------------------------------
7139 -- ZaTx_01032012 --
7140 -- Main Tax module function --
7141 -------------------------------------------------------------------------------
7142 FUNCTION ZaTx_01032012(
7143 /* PARAMETERS */
7144 -- Contexts
7145 ASSIGNMENT_ACTION_ID IN NUMBER
7146 , ASSIGNMENT_ID IN NUMBER
7147 , PAYROLL_ACTION_ID IN NUMBER
7148 , PAYROLL_ID IN NUMBER
7149 -- Out Parameters
7150 , p_LibWrn OUT NOCOPY VARCHAR2
7151 , p_LibFpDR OUT NOCOPY NUMBER
7152 , p_LibFpNI OUT NOCOPY NUMBER
7153 , p_LibFpFB OUT NOCOPY NUMBER
7154 , p_LibFpTA OUT NOCOPY NUMBER
7155 , p_LibFpBP OUT NOCOPY NUMBER
7156 , p_LibFpAB OUT NOCOPY NUMBER
7157 , p_LibFpAP OUT NOCOPY NUMBER
7158 , p_LibFpPO OUT NOCOPY NUMBER
7159 , p_PayValSD OUT NOCOPY NUMBER
7160 , p_PayValEC OUT NOCOPY NUMBER
7161 , p_PayeVal OUT NOCOPY NUMBER
7162 , p_SiteVal OUT NOCOPY NUMBER
7163 , p_It3Ind OUT NOCOPY NUMBER
7164 , p_PfUpdFig OUT NOCOPY NUMBER
7165 , p_RaUpdFig OUT NOCOPY NUMBER
7166 , p_OUpdFig OUT NOCOPY NUMBER
7167 , p_NtiUpdFig OUT NOCOPY NUMBER
7168 , p_OvrWrn OUT NOCOPY VARCHAR2
7169 , p_LSDirNum OUT NOCOPY VARCHAR2
7170 , p_LSDirVal OUT NOCOPY NUMBER
7171 , p_RETLSDirNum OUT NOCOPY VARCHAR2
7172 , p_RETLSDirVal OUT NOCOPY NUMBER
7173 --EMP201
7174 , p_NPtiUpdFig OUT NOCOPY NUMBER
7175 -- NTG
7176 , p_LibFpNtgAP OUT NOCOPY NUMBER
7177 , p_LibFpNtgEEDbt OUT NOCOPY NUMBER
7178 , p_LibFpNtg OUT NOCOPY NUMBER
7179 , p_MedCrUsed OUT NOCOPY NUMBER
7180 , p_MedCrUsedNI OUT NOCOPY NUMBER
7181 , p_MedCrUsedFB OUT NOCOPY NUMBER
7182 , p_MedCrUsedTA OUT NOCOPY NUMBER
7183 , p_MedCrUsedBP OUT NOCOPY NUMBER
7184 , p_MedCrUsedAB OUT NOCOPY NUMBER
7185 , p_MedCrUsedAP OUT NOCOPY NUMBER
7186 , p_MedCrUsedPO OUT NOCOPY NUMBER
7187 , p_MedCrUsedNtgAP OUT NOCOPY NUMBER
7188 , p_MedCrUsedNtgEEDbt OUT NOCOPY NUMBER
7189 , p_MedCrUsedDR OUT NOCOPY NUMBER
7190 , p_MedCrUsedLS OUT NOCOPY NUMBER
7191 )RETURN NUMBER
7192 AS
7193 -- Variables
7194 --
7195 l_Dum NUMBER := 1;
7196 -- Fix for Bug# 12351345
7197
7198 l_lmsm_proc_cnt NUMBER;
7199 l_ret_lmsm_proc_cnt NUMBER;
7200 l_65Year Date;
7201
7202 l_MdTxCrdtUDR_Adj Number;
7203 l_MdTxCrdtUNi_Adj Number;
7204 l_MdTxCrdtUFB_Adj Number;
7205 l_MdTxCrdtUTA_Adj Number;
7206 l_MdTxCrdtUBP_Adj Number;
7207 l_MdTxCrdtUAB_Adj Number;
7208 l_MdTxCrdtUAP_Adj Number;
7209 l_MdTxCrdtUPO_Adj Number;
7210 l_MdTxCrdtUNG_Adj Number;
7211 l_MdTxCrdtUEE_Adj Number;
7212
7213 -- Fix for Bug# 12351345
7214
7215 xpt_FxdPrc EXCEPTION;
7216
7217 cursor csr_all_LSDir(p_ass_action_id in number ) is
7218 SELECT /*+ use_nl ( ptp_all ppa_all feed)*/ process.result_value dirnum
7219 FROM pay_assignment_actions paa
7220 , pay_payroll_actions ppa
7221 , per_time_periods ptp
7222 , per_time_periods ptp_all
7223 , pay_assignment_actions paa_all
7224 , pay_payroll_actions ppa_all
7225 , pay_run_results prr_ls
7226 , pay_run_result_values target
7227 , pay_balance_feeds_f feed
7228 , pay_run_result_values process
7229 , pay_input_values_f process_iv
7230 , pay_balance_types pbt
7231 , pay_element_types_f pet
7232 , pay_input_values_f piv
7233 WHERE paa.assignment_action_id = p_ass_action_id
7234 AND ppa.payroll_action_id = paa.payroll_action_id
7235 AND ptp.time_period_id = ppa.time_period_id
7236 AND ptp_all.prd_information1 = ptp.prd_information1
7237 AND ppa_all.time_period_id = ptp_all.time_period_id
7238 AND paa_all.payroll_action_id = ppa_all.payroll_action_id
7239 AND paa_all.assignment_id = paa.assignment_id
7240 AND paa_all.action_sequence <= paa.action_sequence
7241 AND prr_ls.assignment_action_id = paa_all.assignment_action_id
7242 AND prr_ls.status IN ('P', 'PA')
7243 AND target.run_result_id = prr_ls.run_result_id
7244 AND feed.input_value_id = target.input_value_id
7245 AND ppa_all.effective_date
7246 BETWEEN feed.effective_start_date
7247 AND feed.effective_end_date
7248 AND process.run_result_id = prr_ls.run_result_id
7249 AND process.input_value_id = process_iv.input_value_id
7250 AND process_iv.name = 'Tax Directive Number'
7251 AND ppa_all.effective_date
7252 BETWEEN process_iv.effective_start_date
7253 AND process_iv.effective_end_date
7254 AND feed.balance_type_id = pbt.balance_type_id
7255 AND pbt.balance_name = 'Tax on Lump Sums'
7256 AND pet.element_name NOT LIKE 'Medical Tax Credit Used on LMPSM%'
7257 AND pet.element_type_id = piv.element_type_id
7258 AND ppa_all.effective_date
7259 BETWEEN pet.effective_start_date
7260 AND pet.effective_end_date
7261 AND piv.input_value_id = target.input_value_id
7262 ORDER BY paa_all.action_sequence , process.result_value;
7263
7264
7265 l_LSDirRec LSDirRec;
7266 l_LSDirNum VARCHAR2(100);
7267 l_ExMedTaxCr NUMBER;
7268
7269 l_TotMedTxCr_Upd NUMBER;
7270 l_MedTxCr_Adj NUMBER;
7271 l_TmpMedTxCr NUMBER;
7272 l_paye NUMBER;
7273
7274 -------------------------------------------------------------------------------
7275 BEGIN-- MAIN --
7276 -------------------------------------------------------------------------------
7277
7278
7279 -- Set hr_utility globals if debugging
7280 --
7281 -- py_za_tx_utl_01032012.g_HrTraceEnabled := TRUE;
7282 -- py_za_tx_utl_01032012.g_HrTracePipeName := 'ZATAX';
7283
7284 -- Call hr_utility start procedure
7285 py_za_tx_utl_01032012.StartHrTrace;
7286
7287 l_65Year := add_months(py_za_tx_01032012.dbi_PER_DTE_OF_BRTH,780);
7288 -- Setup Trace Header Info
7289 WrtHrTrc(' ');
7290 WrtHrTrc(' ');
7291 WrtHrTrc(' ');
7292 WrtHrTrc('------------------------------------------------------------');
7293 WrtHrTrc('-- Start of Tax Trace File');
7294 WrtHrTrc('------------------------------------------------------------');
7295 WrtHrTrc(' ');
7296 WrtHrTrc(' Processing Assignment ID : '||to_char(ASSIGNMENT_ID ));
7297 WrtHrTrc(' Assignment Action ID : '||to_char(ASSIGNMENT_ACTION_ID));
7298 WrtHrTrc(' Payroll Action ID : '||to_char(PAYROLL_ACTION_ID ));
7299 WrtHrTrc(' Payroll ID : '||to_char(PAYROLL_ID ));
7300 WrtHrTrc(' ');
7301 WrtHrTrc('------------------------------------------------------------');
7302 WrtHrTrc(' ');
7303 WrtHrTrc('-------------------------------------------------------------------------------');
7304 WrtHrTrc('-- Application Global Values');
7305 WrtHrTrc('-------------------------------------------------------------------------------');
7306 WrtHrTrc(' glb_ZA_ADL_TX_RBT: '||to_char(glb_ZA_ADL_TX_RBT ));
7307 WrtHrTrc(' glb_ZA_ARR_PF_AN_MX_ABT: '||to_char(glb_ZA_ARR_PF_AN_MX_ABT ));
7308 WrtHrTrc(' glb_ZA_ARR_RA_AN_MX_ABT: '||to_char(glb_ZA_ARR_RA_AN_MX_ABT ));
7309 WrtHrTrc(' glb_ZA_TRV_ALL_TX_PRC: '||to_char(glb_ZA_TRV_ALL_TX_PRC ));
7310 WrtHrTrc(' glb_ZA_CC_TX_PRC: '||to_char(glb_ZA_CC_TX_PRC ));
7311 WrtHrTrc(' glb_ZA_PF_AN_MX_ABT: '||to_char(glb_ZA_PF_AN_MX_ABT ));
7312 WrtHrTrc(' glb_ZA_PF_MX_PRC: '||to_char(glb_ZA_PF_MX_PRC ));
7313 WrtHrTrc(' glb_ZA_PER_SERV_COMP_PERC: '||to_char(glb_ZA_PER_SERV_COMP_PERC));
7314 WrtHrTrc(' glb_ZA_PER_SERV_TRST_PERC: '||to_char(glb_ZA_PER_SERV_TRST_PERC));
7315 WrtHrTrc(' glb_ZA_PRI_TX_RBT: '||to_char(glb_ZA_PRI_TX_RBT ));
7316 WrtHrTrc(' glb_ZA_PRI_TX_THRSHLD: '||to_char(glb_ZA_PRI_TX_THRSHLD ));
7317 WrtHrTrc(' glb_ZA_PBL_TX_PRC: '||to_char(glb_ZA_PBL_TX_PRC ));
7318 WrtHrTrc(' glb_ZA_PBL_TX_RTE: '||to_char(glb_ZA_PBL_TX_RTE ));
7319 WrtHrTrc(' glb_ZA_RA_AN_MX_ABT: '||to_char(glb_ZA_RA_AN_MX_ABT ));
7320 WrtHrTrc(' glb_ZA_RA_MX_PRC: '||to_char(glb_ZA_RA_MX_PRC ));
7321 WrtHrTrc(' glb_ZA_SC_TX_THRSHLD: '||to_char(glb_ZA_SC_TX_THRSHLD ));
7322 WrtHrTrc(' glb_ZA_SIT_LIM: '||to_char(glb_ZA_SIT_LIM ));
7323 WrtHrTrc(' glb_ZA_TMP_TX_RTE: '||to_char(glb_ZA_TMP_TX_RTE ));
7324 WrtHrTrc(' glb_ZA_WRK_DYS_PR_YR: '||to_char(glb_ZA_WRK_DYS_PR_YR ));
7325 /* TYS2010*/
7326 WrtHrTrc(' glb_ZA_ALLOW_DONATION_PERC: '||to_char(glb_ZA_ALLOW_DONATION_PERC ));
7327 WrtHrTrc(' glb_ZA_LATE_PAYMENT_PERC: '||to_char(glb_ZA_LATE_PAYMENT_PERC ));
7328 WrtHrTrc(' glb_ZA_TRI_TX_RBT: '||to_char(glb_ZA_TRI_TX_RBT ));
7329 WrtHrTrc(' glb_ZA_TRI_TX_THRSHLD: '||to_char(glb_ZA_TRI_TX_THRSHLD ));
7330
7331 WrtHrTrc('-------------------------------------------------------------------------------');
7332 WrtHrTrc('-- Application Database Items');
7333 WrtHrTrc('-------------------------------------------------------------------------------');
7334 WrtHrTrc(' dbi_BP_TX_RCV: '|| dbi_BP_TX_RCV );
7335 WrtHrTrc(' dbi_PAY_PROC_PRD_DTE_PD: '||to_char(dbi_PAY_PROC_PRD_DTE_PD,'DD/MM/YYYY'));
7336 WrtHrTrc(' dbi_PER_AGE: '||to_char(dbi_PER_AGE ));
7337 WrtHrTrc(' dbi_PER_DTE_OF_BRTH: '||to_char(dbi_PER_DTE_OF_BRTH ,'DD/MM/YYYY'));
7338 WrtHrTrc(' dbi_SEA_WRK_DYS_WRK: '||to_char(dbi_SEA_WRK_DYS_WRK ));
7339 WrtHrTrc(' dbi_SES_DTE: '||to_char(dbi_SES_DTE ,'DD/MM/YYYY'));
7340 WrtHrTrc(' dbi_TX_DIR_NUM: '|| dbi_TX_DIR_NUM );
7341 WrtHrTrc(' dbi_TX_DIR_VAL: '||to_char(dbi_TX_DIR_VAL ));
7342 WrtHrTrc(' dbi_TX_STA: '|| dbi_TX_STA );
7343 WrtHrTrc(' dbi_TX_MTD: '|| dbi_TX_MTD );
7344 WrtHrTrc(' dbi_ZA_ACT_END_DTE: '||to_char(dbi_ZA_ACT_END_DTE ,'DD/MM/YYYY'));
7345 WrtHrTrc(' dbi_ZA_ACT_STRT_DTE: '||to_char(dbi_ZA_ACT_STRT_DTE ,'DD/MM/YYYY'));
7346 WrtHrTrc(' dbi_ZA_ASG_TX_RTR_PRD: '|| dbi_ZA_ASG_TX_RTR_PRD );
7347 WrtHrTrc(' dbi_ZA_ASG_TAX_RTR_RSLTS: '|| dbi_ZA_ASG_TAX_RTR_RSLTS );
7348 /*
7349 WrtHrTrc(' dbi_ZA_ASG_TX_YR: '||to_char(dbi_ZA_ASG_TX_YR ));
7350 WrtHrTrc(' dbi_ZA_ASG_TX_YR_END: '||to_char(dbi_ZA_ASG_TX_YR_END ,'DD/MM/YYYY'));
7351 WrtHrTrc(' dbi_ZA_ASG_TX_YR_STRT: '||to_char(dbi_ZA_ASG_TX_YR_STRT ,'DD/MM/YYYY')); */
7352 WrtHrTrc(' dbi_ZA_CUR_PRD_END_DTE: '||to_char(dbi_ZA_CUR_PRD_END_DTE ,'DD/MM/YYYY'));
7353 WrtHrTrc(' dbi_ZA_CUR_PRD_STRT_DTE: '||to_char(dbi_ZA_CUR_PRD_STRT_DTE,'DD/MM/YYYY'));
7354 WrtHrTrc(' dbi_ZA_DYS_IN_YR: '||to_char(dbi_ZA_DYS_IN_YR ));
7355 WrtHrTrc(' dbi_ZA_PAY_PRDS_LFT: '||to_char(dbi_ZA_PAY_PRDS_LFT ));
7356 WrtHrTrc(' dbi_ZA_PAY_PRDS_PER_YR: '||to_char(dbi_ZA_PAY_PRDS_PER_YR ));
7357 WrtHrTrc(' dbi_ZA_TX_YR_END: '||to_char(dbi_ZA_TX_YR_END ,'DD/MM/YYYY'));
7358 WrtHrTrc(' dbi_ZA_TX_YR_STRT: '||to_char(dbi_ZA_TX_YR_STRT ,'DD/MM/YYYY'));
7359 WrtHrTrc(' dbi_ZA_LS_DIR_NUM: '|| dbi_ZA_LS_DIR_NUM );
7360 WrtHrTrc(' dbi_ZA_LS_DIR_VAL: '||to_char(dbi_ZA_LS_DIR_VAL ));
7361 WrtHrTrc(' dbi_ZA_RET_LS_DIR_NUM: '|| dbi_ZA_RET_LS_DIR_NUM );
7362 WrtHrTrc(' dbi_ZA_RET_LS_DIR_VAL: '||to_char(dbi_ZA_RET_LS_DIR_VAL ));
7363
7364 WrtHrTrc('-------------------------------------------------------------------------------');
7365 WrtHrTrc('-- Balances');
7366 WrtHrTrc('-------------------------------------------------------------------------------');
7367 WrtHrTrc(' bal_ANN_ARR_PF_CMTD: '||to_char(bal_ANN_ARR_PF_CMTD ));
7368 WrtHrTrc(' bal_ANN_ARR_PF_CYTD: '||to_char(bal_ANN_ARR_PF_CYTD ));
7369 WrtHrTrc(' bal_ANN_ARR_PF_RUN: '||to_char(bal_ANN_ARR_PF_RUN ));
7370 WrtHrTrc(' bal_ANN_ARR_PF_PTD: '||to_char(bal_ANN_ARR_PF_PTD ));
7371 WrtHrTrc(' bal_ANN_ARR_PF_YTD: '||to_char(bal_ANN_ARR_PF_YTD ));
7372 WrtHrTrc(' bal_ANN_ARR_RA_CMTD: '||to_char(bal_ANN_ARR_RA_CMTD ));
7373 WrtHrTrc(' bal_ANN_ARR_RA_CYTD: '||to_char(bal_ANN_ARR_RA_CYTD ));
7374 WrtHrTrc(' bal_ANN_ARR_RA_RUN: '||to_char(bal_ANN_ARR_RA_RUN ));
7375 WrtHrTrc(' bal_ANN_ARR_RA_PTD: '||to_char(bal_ANN_ARR_RA_PTD ));
7376 WrtHrTrc(' bal_ANN_ARR_RA_YTD: '||to_char(bal_ANN_ARR_RA_YTD ));
7377 WrtHrTrc(' bal_ANN_EE_INC_PRO_POL_CMTD: '||to_char(bal_ANN_EE_INC_PRO_POL_CMTD ));
7378 WrtHrTrc(' bal_ANN_EE_INC_PRO_POL_CYTD: '||to_char(bal_ANN_EE_INC_PRO_POL_CYTD ));
7379 WrtHrTrc(' bal_ANN_EE_INC_PRO_POL_RUN: '||to_char(bal_ANN_EE_INC_PRO_POL_RUN ));
7380 WrtHrTrc(' bal_ANN_EE_INC_PRO_POL_PTD: '||to_char(bal_ANN_EE_INC_PRO_POL_PTD ));
7381 WrtHrTrc(' bal_ANN_EE_INC_PRO_POL_YTD: '||to_char(bal_ANN_EE_INC_PRO_POL_YTD ));
7382 WrtHrTrc(' bal_ANN_MED_CNTRB_ABM_CMTD: '||to_char(bal_ANN_MED_CNTRB_ABM_CMTD ));
7383 WrtHrTrc(' bal_ANN_MED_CNTRB_ABM_CYTD: '||to_char(bal_ANN_MED_CNTRB_ABM_CYTD ));
7384 WrtHrTrc(' bal_ANN_MED_CNTRB_ABM_RUN: '||to_char(bal_ANN_MED_CNTRB_ABM_RUN ));
7385 WrtHrTrc(' bal_ANN_MED_CNTRB_ABM_PTD: '||to_char(bal_ANN_MED_CNTRB_ABM_PTD ));
7386 WrtHrTrc(' bal_ANN_MED_CNTRB_ABM_YTD: '||to_char(bal_ANN_MED_CNTRB_ABM_YTD ));
7387 WrtHrTrc(' bal_ANN_PF_CMTD: '||to_char(bal_ANN_PF_CMTD ));
7388 WrtHrTrc(' bal_ANN_PF_CYTD: '||to_char(bal_ANN_PF_CYTD ));
7389 WrtHrTrc(' bal_ANN_PF_RUN: '||to_char(bal_ANN_PF_RUN ));
7390 WrtHrTrc(' bal_ANN_PF_PTD: '||to_char(bal_ANN_PF_PTD ));
7391 WrtHrTrc(' bal_ANN_PF_YTD: '||to_char(bal_ANN_PF_YTD ));
7392 WrtHrTrc(' bal_ANN_RA_CMTD: '||to_char(bal_ANN_RA_CMTD ));
7393 WrtHrTrc(' bal_ANN_RA_CYTD: '||to_char(bal_ANN_RA_CYTD ));
7394 WrtHrTrc(' bal_ANN_RA_RUN: '||to_char(bal_ANN_RA_RUN ));
7395 WrtHrTrc(' bal_ANN_RA_PTD: '||to_char(bal_ANN_RA_PTD ));
7396 WrtHrTrc(' bal_ANN_RA_YTD: '||to_char(bal_ANN_RA_YTD ));
7397 /* TYS2010 */
7398 WrtHrTrc(' bal_ANN_DONAT_MD_EE_CMTD: '||to_char(bal_ANN_DONAT_MD_EE_CMTD ));
7399 WrtHrTrc(' bal_ANN_DONAT_MD_EE_CYTD: '||to_char(bal_ANN_DONAT_MD_EE_CYTD ));
7400 WrtHrTrc(' bal_ANN_DONAT_MD_EE_RUN: '||to_char(bal_ANN_DONAT_MD_EE_RUN ));
7401 WrtHrTrc(' bal_ANN_DONAT_MD_EE_PTD: '||to_char(bal_ANN_DONAT_MD_EE_PTD ));
7402 WrtHrTrc(' bal_ANN_DONAT_MD_EE_YTD: '||to_char(bal_ANN_DONAT_MD_EE_YTD ));
7403 /* End TYS2010 */
7404 WrtHrTrc(' bal_ARR_PF_CMTD: '||to_char(bal_ARR_PF_CMTD ));
7405 WrtHrTrc(' bal_ARR_PF_CYTD: '||to_char(bal_ARR_PF_CYTD ));
7406 WrtHrTrc(' bal_ARR_PF_PTD: '||to_char(bal_ARR_PF_PTD ));
7407 WrtHrTrc(' bal_ARR_PF_YTD: '||to_char(bal_ARR_PF_YTD ));
7408 WrtHrTrc(' bal_ARR_RA_CMTD: '||to_char(bal_ARR_RA_CMTD ));
7409 WrtHrTrc(' bal_ARR_RA_CYTD: '||to_char(bal_ARR_RA_CYTD ));
7410 WrtHrTrc(' bal_ARR_RA_PTD: '||to_char(bal_ARR_RA_PTD ));
7411 WrtHrTrc(' bal_ARR_RA_YTD: '||to_char(bal_ARR_RA_YTD ));
7412 WrtHrTrc(' bal_BP_CMTD: '||to_char(bal_BP_CMTD ));
7413 WrtHrTrc(' bal_BP_RUN: '||to_char(bal_BP_RUN ));
7414 WrtHrTrc(' bal_BP_PTD: '||to_char(bal_BP_PTD ));
7415 WrtHrTrc(' bal_BP_YTD: '||to_char(bal_BP_YTD ));
7416 WrtHrTrc(' bal_CUR_PF_CMTD: '||to_char(bal_CUR_PF_CMTD ));
7417 WrtHrTrc(' bal_CUR_PF_CYTD: '||to_char(bal_CUR_PF_CYTD ));
7418 WrtHrTrc(' bal_CUR_PF_RUN: '||to_char(bal_CUR_PF_RUN ));
7419 WrtHrTrc(' bal_CUR_PF_PTD: '||to_char(bal_CUR_PF_PTD ));
7420 WrtHrTrc(' bal_CUR_PF_YTD: '||to_char(bal_CUR_PF_YTD ));
7421 WrtHrTrc(' bal_CUR_RA_CMTD: '||to_char(bal_CUR_RA_CMTD ));
7422 WrtHrTrc(' bal_CUR_RA_CYTD: '||to_char(bal_CUR_RA_CYTD ));
7423 WrtHrTrc(' bal_CUR_RA_RUN: '||to_char(bal_CUR_RA_RUN ));
7424 WrtHrTrc(' bal_CUR_RA_PTD: '||to_char(bal_CUR_RA_PTD ));
7425 WrtHrTrc(' bal_CUR_RA_YTD: '||to_char(bal_CUR_RA_YTD ));
7426 WrtHrTrc(' bal_DIR_DMD_RMN_ITD: '||to_char(bal_DIR_DMD_RMN_ITD ));
7427 /* TYS2010 */
7428 WrtHrTrc(' bal_DONAT_MD_EE_CMTD: '||to_char(bal_DONAT_MD_EE_CMTD ));
7429 WrtHrTrc(' bal_DONAT_MD_EE_CYTD: '||to_char(bal_DONAT_MD_EE_CYTD ));
7430 WrtHrTrc(' bal_DONAT_MD_EE_RUN: '||to_char(bal_DONAT_MD_EE_RUN ));
7431 WrtHrTrc(' bal_DONAT_MD_EE_PTD: '||to_char(bal_DONAT_MD_EE_PTD ));
7432 WrtHrTrc(' bal_DONAT_MD_EE_YTD: '||to_char(bal_DONAT_MD_EE_YTD ));
7433 /*End TYS2010 */
7434 WrtHrTrc(' bal_EE_INC_PRO_POL_CMTD: '||to_char(bal_EE_INC_PRO_POL_CMTD ));
7435 WrtHrTrc(' bal_EE_INC_PRO_POL_CYTD: '||to_char(bal_EE_INC_PRO_POL_CYTD ));
7436 WrtHrTrc(' bal_EE_INC_PRO_POL_RUN: '||to_char(bal_EE_INC_PRO_POL_RUN ));
7437 WrtHrTrc(' bal_EE_INC_PRO_POL_PTD: '||to_char(bal_EE_INC_PRO_POL_PTD ));
7438 WrtHrTrc(' bal_EE_INC_PRO_POL_YTD: '||to_char(bal_EE_INC_PRO_POL_YTD ));
7439 WrtHrTrc(' bal_EXC_ARR_PEN_ITD: '||to_char(bal_EXC_ARR_PEN_ITD ));
7440 WrtHrTrc(' bal_EXC_ARR_PEN_PTD: '||to_char(bal_EXC_ARR_PEN_PTD ));
7441 WrtHrTrc(' bal_EXC_ARR_PEN_YTD: '||to_char(bal_EXC_ARR_PEN_YTD ));
7442 WrtHrTrc(' bal_EXC_ARR_RA_ITD: '||to_char(bal_EXC_ARR_RA_ITD ));
7443 WrtHrTrc(' bal_EXC_ARR_RA_PTD: '||to_char(bal_EXC_ARR_RA_PTD ));
7444 WrtHrTrc(' bal_EXC_ARR_RA_YTD: '||to_char(bal_EXC_ARR_RA_YTD ));
7445 WrtHrTrc(' bal_MED_CONTR_CMTD: '||to_char(bal_MED_CONTR_CMTD ));
7446 WrtHrTrc(' bal_MED_CONTR_CYTD: '||to_char(bal_MED_CONTR_CYTD ));
7447 WrtHrTrc(' bal_MED_CONTR_RUN: '||to_char(bal_MED_CONTR_RUN ));
7448 WrtHrTrc(' bal_MED_CONTR_PTD: '||to_char(bal_MED_CONTR_PTD ));
7449 WrtHrTrc(' bal_MED_CONTR_YTD: '||to_char(bal_MED_CONTR_YTD ));
7450 WrtHrTrc(' bal_MED_CNTRB_ABM_CMTD: '||to_char(bal_MED_CNTRB_ABM_CMTD ));
7451 WrtHrTrc(' bal_MED_CNTRB_ABM_CYTD: '||to_char(bal_MED_CNTRB_ABM_CYTD ));
7452 WrtHrTrc(' bal_MED_CNTRB_ABM_RUN: '||to_char(bal_MED_CNTRB_ABM_RUN ));
7453 WrtHrTrc(' bal_MED_CNTRB_ABM_PTD: '||to_char(bal_MED_CNTRB_ABM_PTD ));
7454 WrtHrTrc(' bal_MED_CNTRB_ABM_YTD: '||to_char(bal_MED_CNTRB_ABM_YTD ));
7455 WrtHrTrc(' bal_NET_PAY_RUN: '||to_char(bal_NET_PAY_RUN ));
7456 WrtHrTrc(' bal_NET_TXB_INC_CMTD: '||to_char(bal_NET_TXB_INC_CMTD ));
7457 WrtHrTrc(' bal_NET_PAYE_TXB_INC_CMTD: '||to_char(bal_NET_PAYE_TXB_INC_CMTD ));
7458
7459 WrtHrTrc(' bal_MED_AID_TAX_CR_CMTD: '||to_char(bal_MED_AID_TAX_CR_CMTD ));
7460 WrtHrTrc(' bal_MED_AID_TAX_CR_CYTD: '||to_char(bal_MED_AID_TAX_CR_CYTD ));
7461 WrtHrTrc(' bal_MED_AID_TAX_CR_RUN: '||to_char(bal_MED_AID_TAX_CR_RUN ));
7462 WrtHrTrc(' bal_MED_AID_TAX_CR_PTD: '||to_char(bal_MED_AID_TAX_CR_PTD ));
7463 WrtHrTrc(' bal_MED_AID_TAX_CR_YTD: '||to_char(bal_MED_AID_TAX_CR_YTD ));
7464 WrtHrTrc(' bal_ANN_MED_AID_TAX_CR_CMTD: '||to_char(bal_ANN_MED_AID_TAX_CR_CMTD ));
7465 WrtHrTrc(' bal_ANN_MED_AID_TAX_CR_CYTD: '||to_char(bal_ANN_MED_AID_TAX_CR_CYTD ));
7466 WrtHrTrc(' bal_ANN_MED_AID_TAX_CR_RUN: '||to_char(bal_ANN_MED_AID_TAX_CR_RUN ));
7467 WrtHrTrc(' bal_ANN_MED_AID_TAX_CR_PTD: '||to_char(bal_ANN_MED_AID_TAX_CR_PTD ));
7468 WrtHrTrc(' bal_ANN_MED_AID_TAX_CR_YTD: '||to_char(bal_ANN_MED_AID_TAX_CR_YTD ));
7469 WrtHrTrc(' bal_MED_AID_TAX_CR_USED_CMTD: '||to_char(bal_MED_AID_TAX_CR_USED_CMTD));
7470 WrtHrTrc(' bal_MED_AID_TAX_CR_USED_CYTD: '||to_char(bal_MED_AID_TAX_CR_USED_CYTD));
7471 WrtHrTrc(' bal_MED_AID_TAX_CR_USED_RUN: '||to_char(bal_MED_AID_TAX_CR_USED_RUN ));
7472 WrtHrTrc(' bal_MED_AID_TAX_CR_USED_PTD: '||to_char(bal_MED_AID_TAX_CR_USED_PTD ));
7473 WrtHrTrc(' bal_MED_AID_TAX_CR_USED_YTD: '||to_char(bal_MED_AID_TAX_CR_USED_YTD ));
7474
7475 WrtHrTrc(' bal_MED_TAX_CR_USED_NI_CMTD : '||to_char(bal_MED_TAX_CR_USED_NI_CMTD ));
7476 WrtHrTrc(' bal_MED_TAX_CR_USED_NI_CYTD : '||to_char(bal_MED_TAX_CR_USED_NI_CYTD ));
7477 WrtHrTrc(' bal_MED_TAX_CR_USED_NI_RUN : '||to_char(bal_MED_TAX_CR_USED_NI_RUN ));
7478 WrtHrTrc(' bal_MED_TAX_CR_USED_NI_PTD : '||to_char(bal_MED_TAX_CR_USED_NI_PTD ));
7479 WrtHrTrc(' bal_MED_TAX_CR_USED_NI_YTD : '||to_char(bal_MED_TAX_CR_USED_NI_YTD ));
7480 WrtHrTrc(' bal_MED_TAX_CR_USED_FB_CMTD : '||to_char(bal_MED_TAX_CR_USED_FB_CMTD ));
7481 WrtHrTrc(' bal_MED_TAX_CR_USED_FB_CYTD : '||to_char(bal_MED_TAX_CR_USED_FB_CYTD ));
7482 WrtHrTrc(' bal_MED_TAX_CR_USED_FB_RUN : '||to_char(bal_MED_TAX_CR_USED_FB_RUN ));
7483 WrtHrTrc(' bal_MED_TAX_CR_USED_FB_PTD : '||to_char(bal_MED_TAX_CR_USED_FB_PTD ));
7484 WrtHrTrc(' bal_MED_TAX_CR_USED_FB_YTD : '||to_char(bal_MED_TAX_CR_USED_FB_YTD ));
7485 WrtHrTrc(' bal_MED_TAX_CR_USED_TA_CMTD : '||to_char(bal_MED_TAX_CR_USED_TA_CMTD ));
7486 WrtHrTrc(' bal_MED_TAX_CR_USED_TA_CYTD : '||to_char(bal_MED_TAX_CR_USED_TA_CYTD ));
7487 WrtHrTrc(' bal_MED_TAX_CR_USED_TA_RUN : '||to_char(bal_MED_TAX_CR_USED_TA_RUN ));
7488 WrtHrTrc(' bal_MED_TAX_CR_USED_TA_PTD : '||to_char(bal_MED_TAX_CR_USED_TA_PTD ));
7489 WrtHrTrc(' bal_MED_TAX_CR_USED_TA_YTD : '||to_char(bal_MED_TAX_CR_USED_TA_YTD ));
7490 WrtHrTrc(' bal_MED_TAX_CR_USED_BP_CMTD : '||to_char(bal_MED_TAX_CR_USED_BP_CMTD ));
7491 WrtHrTrc(' bal_MED_TAX_CR_USED_BP_CYTD : '||to_char(bal_MED_TAX_CR_USED_BP_CYTD ));
7492 WrtHrTrc(' bal_MED_TAX_CR_USED_BP_RUN : '||to_char(bal_MED_TAX_CR_USED_BP_RUN ));
7493 WrtHrTrc(' bal_MED_TAX_CR_USED_BP_PTD : '||to_char(bal_MED_TAX_CR_USED_BP_PTD ));
7494 WrtHrTrc(' bal_MED_TAX_CR_USED_BP_YTD : '||to_char(bal_MED_TAX_CR_USED_BP_YTD ));
7495 WrtHrTrc(' bal_MED_TAX_CR_USED_AB_CMTD : '||to_char(bal_MED_TAX_CR_USED_AB_CMTD ));
7496 WrtHrTrc(' bal_MED_TAX_CR_USED_AB_CYTD : '||to_char(bal_MED_TAX_CR_USED_AB_CYTD ));
7497 WrtHrTrc(' bal_MED_TAX_CR_USED_AB_RUN : '||to_char(bal_MED_TAX_CR_USED_AB_RUN ));
7498 WrtHrTrc(' bal_MED_TAX_CR_USED_AB_PTD : '||to_char(bal_MED_TAX_CR_USED_AB_PTD ));
7499 WrtHrTrc(' bal_MED_TAX_CR_USED_AB_YTD : '||to_char(bal_MED_TAX_CR_USED_AB_YTD ));
7500 WrtHrTrc(' bal_MED_TAX_CR_USED_AP_CMTD : '||to_char(bal_MED_TAX_CR_USED_AP_CMTD ));
7501 WrtHrTrc(' bal_MED_TAX_CR_USED_AP_CYTD : '||to_char(bal_MED_TAX_CR_USED_AP_CYTD ));
7502 WrtHrTrc(' bal_MED_TAX_CR_USED_AP_RUN : '||to_char(bal_MED_TAX_CR_USED_AP_RUN ));
7503 WrtHrTrc(' bal_MED_TAX_CR_USED_AP_PTD : '||to_char(bal_MED_TAX_CR_USED_AP_PTD ));
7504 WrtHrTrc(' bal_MED_TAX_CR_USED_AP_YTD : '||to_char(bal_MED_TAX_CR_USED_AP_YTD ));
7505 WrtHrTrc(' bal_MED_TAX_CR_USED_PO_CMTD : '||to_char(bal_MED_TAX_CR_USED_PO_CMTD ));
7506 WrtHrTrc(' bal_MED_TAX_CR_USED_PO_CYTD : '||to_char(bal_MED_TAX_CR_USED_PO_CYTD ));
7507 WrtHrTrc(' bal_MED_TAX_CR_USED_PO_RUN : '||to_char(bal_MED_TAX_CR_USED_PO_RUN ));
7508 WrtHrTrc(' bal_MED_TAX_CR_USED_PO_PTD : '||to_char(bal_MED_TAX_CR_USED_PO_PTD ));
7509 WrtHrTrc(' bal_MED_TAX_CR_USED_PO_YTD : '||to_char(bal_MED_TAX_CR_USED_PO_YTD ));
7510 WrtHrTrc(' bal_MED_TAX_CR_USED_NG_CMTD : '||to_char(bal_MED_TAX_CR_USED_NG_CMTD ));
7511 WrtHrTrc(' bal_MED_TAX_CR_USED_NG_CYTD : '||to_char(bal_MED_TAX_CR_USED_NG_CYTD ));
7512 WrtHrTrc(' bal_MED_TAX_CR_USED_NG_RUN : '||to_char(bal_MED_TAX_CR_USED_NG_RUN ));
7513 WrtHrTrc(' bal_MED_TAX_CR_USED_NG_PTD : '||to_char(bal_MED_TAX_CR_USED_NG_PTD ));
7514 WrtHrTrc(' bal_MED_TAX_CR_USED_NG_YTD : '||to_char(bal_MED_TAX_CR_USED_NG_YTD ));
7515 WrtHrTrc(' bal_MED_TAX_CR_USED_EE_CMTD : '||to_char(bal_MED_TAX_CR_USED_EE_CMTD ));
7516 WrtHrTrc(' bal_MED_TAX_CR_USED_EE_CYTD : '||to_char(bal_MED_TAX_CR_USED_EE_CYTD ));
7517 WrtHrTrc(' bal_MED_TAX_CR_USED_EE_RUN : '||to_char(bal_MED_TAX_CR_USED_EE_RUN ));
7518 WrtHrTrc(' bal_MED_TAX_CR_USED_EE_PTD : '||to_char(bal_MED_TAX_CR_USED_EE_PTD ));
7519 WrtHrTrc(' bal_MED_TAX_CR_USED_EE_YTD : '||to_char(bal_MED_TAX_CR_USED_EE_YTD ));
7520 WrtHrTrc(' bal_PAYE_YTD: '||to_char(bal_PAYE_YTD ));
7521 WrtHrTrc(' bal_SITE_YTD: '||to_char(bal_SITE_YTD ));
7522 WrtHrTrc(' bal_TAX_YTD: '||to_char(bal_TAX_YTD ));
7523 WrtHrTrc(' bal_TX_ON_AB_PTD: '||to_char(bal_TX_ON_AB_PTD ));
7524 WrtHrTrc(' bal_TX_ON_AB_YTD: '||to_char(bal_TX_ON_AB_YTD ));
7525 WrtHrTrc(' bal_TX_ON_AP_PTD: '||to_char(bal_TX_ON_AP_PTD ));
7526 WrtHrTrc(' bal_TX_ON_AP_YTD: '||to_char(bal_TX_ON_AP_YTD ));
7527 WrtHrTrc(' bal_TX_ON_BP_PTD: '||to_char(bal_TX_ON_BP_PTD ));
7528 WrtHrTrc(' bal_TX_ON_BP_YTD: '||to_char(bal_TX_ON_BP_YTD ));
7529 WrtHrTrc(' bal_TX_ON_TA_PTD: '||to_char(bal_TX_ON_TA_PTD ));
7530 WrtHrTrc(' bal_TX_ON_TA_YTD: '||to_char(bal_TX_ON_TA_YTD ));
7531 WrtHrTrc(' bal_TX_ON_DR_PTD: '||to_char(bal_TX_ON_DR_PTD ));
7532 WrtHrTrc(' bal_TX_ON_DR_YTD: '||to_char(bal_TX_ON_DR_YTD ));
7533 WrtHrTrc(' bal_TX_ON_FB_PTD: '||to_char(bal_TX_ON_FB_PTD ));
7534 WrtHrTrc(' bal_TX_ON_FB_YTD: '||to_char(bal_TX_ON_FB_YTD ));
7535 WrtHrTrc(' bal_TX_ON_NI_PTD: '||to_char(bal_TX_ON_NI_PTD ));
7536 WrtHrTrc(' bal_TX_ON_NI_YTD: '||to_char(bal_TX_ON_NI_YTD ));
7537 WrtHrTrc(' bal_TX_ON_PO_PTD: '||to_char(bal_TX_ON_PO_PTD ));
7538 WrtHrTrc(' bal_TX_ON_PO_YTD: '||to_char(bal_TX_ON_PO_YTD ));
7539 WrtHrTrc(' bal_TX_ON_LS_PTD: '||to_char(bal_TX_ON_LS_PTD ));
7540 WrtHrTrc(' bal_TX_ON_RET_LS_PTD: '||to_char(bal_TX_ON_RET_LS_PTD ));
7541 /* NTG */
7542 WrtHrTrc(' bal_TX_ON_AP_NTG_PTD: '||to_char(bal_TX_ON_AP_NTG_PTD ));
7543 WrtHrTrc(' bal_TX_ON_AP_NTG_YTD: '||to_char(bal_TX_ON_AP_NTG_YTD ));
7544 WrtHrTrc(' bal_TX_ON_EE_DBT_NTG_PTD: '||to_char(bal_TX_ON_EE_DBT_NTG_PTD ));
7545 WrtHrTrc(' bal_TX_ON_EE_DBT_NTG_YTD: '||to_char(bal_TX_ON_EE_DBT_NTG_YTD ));
7546 /* End NTG */
7547 WrtHrTrc(' bal_TOT_INC_PTD: '||to_char(bal_TOT_INC_PTD ));
7548 WrtHrTrc(' bal_TOT_INC_YTD: '||to_char(bal_TOT_INC_YTD ));
7549 WrtHrTrc(' bal_TOT_NRFI_AN_INC_CMTD: '||to_char(bal_TOT_NRFI_AN_INC_CMTD ));
7550 WrtHrTrc(' bal_TOT_NRFI_AN_INC_CYTD: '||to_char(bal_TOT_NRFI_AN_INC_CYTD ));
7551 WrtHrTrc(' bal_TOT_NRFI_AN_INC_RUN: '||to_char(bal_TOT_NRFI_AN_INC_RUN ));
7552 WrtHrTrc(' bal_TOT_NRFI_AN_INC_PTD: '||to_char(bal_TOT_NRFI_AN_INC_PTD ));
7553 WrtHrTrc(' bal_TOT_NRFI_AN_INC_YTD: '||to_char(bal_TOT_NRFI_AN_INC_YTD ));
7554 WrtHrTrc(' bal_TOT_NRFI_INC_CMTD: '||to_char(bal_TOT_NRFI_INC_CMTD ));
7555 WrtHrTrc(' bal_TOT_NRFI_INC_CYTD: '||to_char(bal_TOT_NRFI_INC_CYTD ));
7556 WrtHrTrc(' bal_TOT_NRFI_INC_RUN: '||to_char(bal_TOT_NRFI_INC_RUN ));
7557 WrtHrTrc(' bal_TOT_NRFI_INC_PTD: '||to_char(bal_TOT_NRFI_INC_PTD ));
7558 WrtHrTrc(' bal_TOT_NRFI_INC_YTD: '||to_char(bal_TOT_NRFI_INC_YTD ));
7559 WrtHrTrc(' bal_TOT_RFI_AN_INC_CMTD: '||to_char(bal_TOT_RFI_AN_INC_CMTD ));
7560 WrtHrTrc(' bal_TOT_RFI_AN_INC_CYTD: '||to_char(bal_TOT_RFI_AN_INC_CYTD ));
7561 WrtHrTrc(' bal_TOT_RFI_AN_INC_RUN: '||to_char(bal_TOT_RFI_AN_INC_RUN ));
7562 WrtHrTrc(' bal_TOT_RFI_AN_INC_PTD: '||to_char(bal_TOT_RFI_AN_INC_PTD ));
7563 WrtHrTrc(' bal_TOT_RFI_AN_INC_YTD: '||to_char(bal_TOT_RFI_AN_INC_YTD ));
7564 WrtHrTrc(' bal_TOT_RFI_INC_CMTD: '||to_char(bal_TOT_RFI_INC_CMTD ));
7565 WrtHrTrc(' bal_TOT_RFI_INC_CYTD: '||to_char(bal_TOT_RFI_INC_CYTD ));
7566 WrtHrTrc(' bal_TOT_RFI_INC_RUN: '||to_char(bal_TOT_RFI_INC_RUN ));
7567 WrtHrTrc(' bal_TOT_RFI_INC_PTD: '||to_char(bal_TOT_RFI_INC_PTD ));
7568 WrtHrTrc(' bal_TOT_RFI_INC_YTD: '||to_char(bal_TOT_RFI_INC_YTD ));
7569 --NTG
7570 WrtHrTrc(' bal_TOT_RFI_EE_DBT_NTG_CMTD: '||to_char(bal_TOT_RFI_EE_DBT_NTG_CMTD ));
7571 WrtHrTrc(' bal_TOT_RFI_EE_DBT_NTG_CYTD: '||to_char(bal_TOT_RFI_EE_DBT_NTG_CYTD ));
7572 WrtHrTrc(' bal_TOT_RFI_EE_DBT_NTG_RUN: '||to_char(bal_TOT_RFI_EE_DBT_NTG_RUN ));
7573 WrtHrTrc(' bal_TOT_RFI_EE_DBT_NTG_PTD: '||to_char(bal_TOT_RFI_EE_DBT_NTG_PTD ));
7574 WrtHrTrc(' bal_TOT_RFI_EE_DBT_NTG_YTD: '||to_char(bal_TOT_RFI_EE_DBT_NTG_YTD ));
7575 WrtHrTrc(' bal_TOT_NRFI_EE_DBT_NTG_CMTD: '||to_char(bal_TOT_NRFI_EE_DBT_NTG_CMTD ));
7576 WrtHrTrc(' bal_TOT_NRFI_EE_DBT_NTG_CYTD: '||to_char(bal_TOT_NRFI_EE_DBT_NTG_CYTD ));
7577 WrtHrTrc(' bal_TOT_NRFI_EE_DBT_NTG_RUN: '||to_char(bal_TOT_NRFI_EE_DBT_NTG_RUN ));
7578 WrtHrTrc(' bal_TOT_NRFI_EE_DBT_NTG_PTD: '||to_char(bal_TOT_NRFI_EE_DBT_NTG_PTD ));
7579 WrtHrTrc(' bal_TOT_NRFI_EE_DBT_NTG_YTD: '||to_char(bal_TOT_NRFI_EE_DBT_NTG_YTD ));
7580 WrtHrTrc(' bal_TOT_SKL_ANN_INC_NTG_CMTD: '||to_char(bal_TOT_SKL_ANN_INC_NTG_CMTD));
7581 -- End NTG
7582
7583 WrtHrTrc(' bal_TOT_SEA_WRK_DYS_WRK_YTD: '||to_char(bal_TOT_SEA_WRK_DYS_WRK_YTD ));
7584 WrtHrTrc(' bal_TOT_SKL_ANN_INC_CMTD: '||to_char(bal_TOT_SKL_ANN_INC_CMTD ));
7585 WrtHrTrc(' bal_TOT_SKL_INC_CMTD: '||to_char(bal_TOT_SKL_INC_CMTD ));
7586 WrtHrTrc(' bal_GROSS_REMUNERATION_CMTD: '||to_char(bal_GROSS_REMUNERATION_CMTD ));
7587 WrtHrTrc(' bal_ANN_PAYMENTS_CMTD: '||to_char(bal_ANN_PAYMENTS_CMTD ));
7588 WrtHrTrc(' bal_TOT_TXB_INC_ITD: '||to_char(bal_TOT_TXB_INC_ITD ));
7589 WrtHrTrc(' bal_TOT_TXB_AB_CMTD: '||to_char(bal_TOT_TXB_AB_CMTD ));
7590 WrtHrTrc(' bal_TOT_TXB_AB_RUN: '||to_char(bal_TOT_TXB_AB_RUN ));
7591 WrtHrTrc(' bal_TOT_TXB_AB_PTD: '||to_char(bal_TOT_TXB_AB_PTD ));
7592 WrtHrTrc(' bal_TOT_TXB_AB_YTD: '||to_char(bal_TOT_TXB_AB_YTD ));
7593 WrtHrTrc(' bal_TOT_TXB_AP_CMTD: '||to_char(bal_TOT_TXB_AP_CMTD ));
7594 WrtHrTrc(' bal_TOT_TXB_AP_RUN: '||to_char(bal_TOT_TXB_AP_RUN ));
7595 WrtHrTrc(' bal_TOT_TXB_AP_PTD: '||to_char(bal_TOT_TXB_AP_PTD ));
7596 WrtHrTrc(' bal_TOT_TXB_AP_YTD: '||to_char(bal_TOT_TXB_AP_YTD ));
7597 WrtHrTrc(' bal_TOT_TXB_FB_CMTD: '||to_char(bal_TOT_TXB_FB_CMTD ));
7598 WrtHrTrc(' bal_TOT_TXB_FB_CYTD: '||to_char(bal_TOT_TXB_FB_CYTD ));
7599 WrtHrTrc(' bal_TOT_TXB_FB_RUN: '||to_char(bal_TOT_TXB_FB_RUN ));
7600 WrtHrTrc(' bal_TOT_TXB_FB_PTD: '||to_char(bal_TOT_TXB_FB_PTD ));
7601 WrtHrTrc(' bal_TOT_TXB_FB_YTD: '||to_char(bal_TOT_TXB_FB_YTD ));
7602 WrtHrTrc(' bal_TOT_TXB_NI_CMTD: '||to_char(bal_TOT_TXB_NI_CMTD ));
7603 WrtHrTrc(' bal_TOT_TXB_NI_CYTD: '||to_char(bal_TOT_TXB_NI_CYTD ));
7604 WrtHrTrc(' bal_TOT_TXB_NI_RUN: '||to_char(bal_TOT_TXB_NI_RUN ));
7605 WrtHrTrc(' bal_TOT_TXB_NI_PTD: '||to_char(bal_TOT_TXB_NI_PTD ));
7606 WrtHrTrc(' bal_TOT_TXB_NI_YTD: '||to_char(bal_TOT_TXB_NI_YTD ));
7607 WrtHrTrc(' bal_TOT_TXB_PO_CMTD: '||to_char(bal_TOT_TXB_PO_CMTD ));
7608 WrtHrTrc(' bal_TOT_TXB_PO_RUN: '||to_char(bal_TOT_TXB_PO_RUN ));
7609 WrtHrTrc(' bal_TOT_TXB_PO_PTD: '||to_char(bal_TOT_TXB_PO_PTD ));
7610 WrtHrTrc(' bal_TOT_TXB_PO_YTD: '||to_char(bal_TOT_TXB_PO_YTD ));
7611 WrtHrTrc(' bal_TOT_TXB_TA_CMTD: '||to_char(bal_TOT_TXB_TA_CMTD ));
7612 WrtHrTrc(' bal_TOT_TXB_TA_CYTD: '||to_char(bal_TOT_TXB_TA_CYTD ));
7613 WrtHrTrc(' bal_TOT_TXB_TA_RUN: '||to_char(bal_TOT_TXB_TA_RUN ));
7614 WrtHrTrc(' bal_TOT_TXB_TA_PTD: '||to_char(bal_TOT_TXB_TA_PTD ));
7615 WrtHrTrc(' bal_TOT_TXB_TA_YTD: '||to_char(bal_TOT_TXB_TA_YTD ));
7616 /* NTG */
7617 WrtHrTrc(' bal_TOT_TXB_AP_NTG_CMTD: '||to_char(bal_TOT_TXB_AP_NTG_CMTD ));
7618 WrtHrTrc(' bal_TOT_TXB_AP_NTG_RUN: '||to_char(bal_TOT_TXB_AP_NTG_RUN ));
7619 WrtHrTrc(' bal_TOT_TXB_AP_NTG_PTD: '||to_char(bal_TOT_TXB_AP_NTG_PTD ));
7620 WrtHrTrc(' bal_TOT_TXB_AP_NTG_YTD: '||to_char(bal_TOT_TXB_AP_NTG_YTD ));
7621 WrtHrTrc(' bal_TOT_TXB_EE_DBT_NTG_CMTD: '||to_char(bal_TOT_TXB_EE_DBT_NTG_CMTD ));
7622 WrtHrTrc(' bal_TOT_TXB_EE_DBT_NTG_RUN: '||to_char(bal_TOT_TXB_EE_DBT_NTG_RUN ));
7623 WrtHrTrc(' bal_TOT_TXB_EE_DBT_NTG_PTD: '||to_char(bal_TOT_TXB_EE_DBT_NTG_PTD ));
7624 WrtHrTrc(' bal_TOT_TXB_EE_DBT_NTG_YTD: '||to_char(bal_TOT_TXB_EE_DBT_NTG_YTD ));
7625 /* Medical Aid Employer Contribution */
7626 WrtHrTrc(' bal_ER_MED_CONTR_CMTD: '||to_char(bal_ER_MED_CONTR_CMTD ));
7627 WrtHrTrc(' bal_ER_MED_CONTR_CYTD: '||to_char(bal_ER_MED_CONTR_CYTD ));
7628 WrtHrTrc(' bal_ER_MED_CONTR_RUN: '||to_char(bal_ER_MED_CONTR_RUN ));
7629 WrtHrTrc(' bal_ER_MED_CONTR_PTD: '||to_char(bal_ER_MED_CONTR_PTD ));
7630 WrtHrTrc(' bal_ER_MED_CONTR_YTD: '||to_char(bal_ER_MED_CONTR_YTD ));
7631 -- Bug 14024624
7632 WrtHrTrc(' bal_MED_TAX_CR_USED_DR_CMTD : '||to_char(bal_MED_TAX_CR_USED_DR_CMTD ));
7633 WrtHrTrc(' bal_MED_TAX_CR_USED_DR_CYTD : '||to_char(bal_MED_TAX_CR_USED_DR_CYTD ));
7634 WrtHrTrc(' bal_MED_TAX_CR_USED_DR_RUN : '||to_char(bal_MED_TAX_CR_USED_DR_RUN ));
7635 WrtHrTrc(' bal_MED_TAX_CR_USED_DR_PTD : '||to_char(bal_MED_TAX_CR_USED_DR_PTD ));
7636 WrtHrTrc(' bal_MED_TAX_CR_USED_DR_YTD : '||to_char(bal_MED_TAX_CR_USED_DR_YTD ));
7637 -- Bug 14024624
7638 WrtHrTrc(' bal_MED_TAX_CR_USED_LS_PTD : '||to_char(bal_MED_AID_TAX_CR_USED_LS_PTD ));
7639 WrtHrTrc(' bal_MED_TAX_CR_USED_LS_YTD : '||to_char(bal_MED_AID_TAX_CR_USED_LS_YTD ));
7640
7641 WrtHrTrc(' bal_TX_ON_LS_RUN: '||to_char(bal_TX_ON_LS_RUN ));
7642 WrtHrTrc(' bal_TX_ON_LS_YTD: '||to_char(bal_TX_ON_LS_YTD ));
7643
7644 -- Bug 14168167
7645 WrtHrTrc(' bal_MED_EMP_NRFI_ASG_RUN: '||to_char(bal_MED_EMP_NRFI_ASG_RUN ));
7646 WrtHrTrc(' bal_MED_EMP_NRFI_ASG_TAX_PTD: '||to_char(bal_MED_EMP_NRFI_ASG_TAX_PTD ));
7647 WrtHrTrc(' bal_MED_EMP_NRFI_ASG_TAX_YTD: '||to_char(bal_MED_EMP_NRFI_ASG_TAX_YTD ));
7648
7649 WrtHrTrc(' bal_MED_EMP_PKG_ASG_RUN: '||to_char(bal_MED_EMP_PKG_ASG_RUN ));
7650 WrtHrTrc(' bal_MED_EMP_PKG_ASG_TAX_PTD: '||to_char(bal_MED_EMP_PKG_ASG_TAX_PTD ));
7651 WrtHrTrc(' bal_MED_EMP_PKG_ASG_TAX_YTD: '||to_char(bal_MED_EMP_PKG_ASG_TAX_YTD ));
7652
7653 WrtHrTrc(' bal_MED_EMP_RFI_ASG_RUN: '||to_char(bal_MED_EMP_RFI_ASG_RUN ));
7654 WrtHrTrc(' bal_MED_EMP_RFI_ASG_TAX_PTD: '||to_char(bal_MED_EMP_RFI_ASG_TAX_PTD ));
7655 WrtHrTrc(' bal_MED_EMP_RFI_ASG_TAX_YTD: '||to_char(bal_MED_EMP_RFI_ASG_TAX_YTD ));
7656 -- Bug 14168167
7657
7658 WrtHrTrc(' l_65Year: '||to_char(l_65Year,'DD/MM/YYYY' ));
7659
7660 /* End NTG */
7661
7662 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',1);
7663
7664 -- Initialise Package Globals
7665 -- Contexts
7666 con_ASG_ACT_ID := ASSIGNMENT_ACTION_ID;
7667 con_ASG_ID := ASSIGNMENT_ID;
7668 con_PRL_ACT_ID := PAYROLL_ACTION_ID;
7669 con_PRL_ID := PAYROLL_ID;
7670
7671 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',2);
7672
7673 trc_MedTxCrUsedDR := 0;
7674 trc_MedTxCrUsedNI := 0;
7675 trc_MedTxCrUsedFB := 0;
7676 trc_MedTxCrUsedTA := 0;
7677 trc_MedTxCrUsedBP := 0;
7678 trc_MedTxCrUsedAB := 0;
7679 trc_MedTxCrUsedAP := 0;
7680 trc_MedTxCrUsedPO := 0;
7681 trc_MedTxCrUsedNtgAP := 0;
7682 trc_MedTxCrUsedNtgEEDbt := 0;
7683 trc_MedTxCrUsedNtgAP_Upd := 0;
7684 trc_MedTxCrUsedNtgEEDbt_Upd := 0;
7685
7686 trc_MedTxCrUsed_Upd :=0;
7687 trc_MedTxCrUsedDR_Upd :=0;
7688 trc_MedTxCrUsedNI_Upd :=0;
7689 trc_MedTxCrUsedFB_Upd :=0;
7690 trc_MedTxCrUsedTA_Upd :=0;
7691 trc_MedTxCrUsedBP_Upd :=0;
7692 trc_MedTxCrUsedAB_Upd :=0;
7693 trc_MedTxCrUsedAP_Upd :=0;
7694 trc_MedTxCrUsedPO_Upd :=0;
7695 trc_MedTxCrUsedNtgAP_Upd :=0;
7696 trc_MedTxCrUsedNtgEEDbt_Upd :=0;
7697
7698 trc_LibFpDR_Upd :=0;
7699 trc_LibFyNI_Upd :=0;
7700 trc_LibFpNI_Upd :=0;
7701 trc_LibFyFB_Upd :=0;
7702 trc_LibFpFB_Upd :=0;
7703 trc_LibFyTA_Upd :=0;
7704 trc_LibFpTA_Upd :=0;
7705 trc_LibFyBP_Upd :=0;
7706 trc_LibFpBP_Upd :=0;
7707 trc_LibFyAB_Upd :=0;
7708 trc_LibFpAB_Upd :=0;
7709 trc_LibFyAP_Upd :=0;
7710 trc_LibFpAP_Upd :=0;
7711 trc_LibFyPO_Upd :=0;
7712 trc_LibFpPO_Upd :=0;
7713 trc_LibFpNtgAP_Upd :=0;
7714 trc_LibFpNtgEEDbt_Upd :=0;
7715
7716 trc_TotLibBse_Upd :=0;
7717 trc_TotLibNI_Upd :=0;
7718 trc_TotLibFB_Upd :=0;
7719 trc_TotLibTA_Upd :=0;
7720 trc_TotLibBP_Upd :=0;
7721 trc_TotLibAB_Upd :=0;
7722 trc_TotLibAP_Upd :=0;
7723 trc_TotLibPO_Upd :=0;
7724
7725 -- Bug 13777759
7726 -- To handle the Medical Tax Credit previous implementation
7727 -- Where individual balances were not present
7728 p_MedCrUsed := 0;
7729
7730 l_MdTxCrdtUDR_Adj := 0;
7731 l_MdTxCrdtUNi_Adj := 0;
7732 l_MdTxCrdtUFB_Adj := 0;
7733 l_MdTxCrdtUTA_Adj := 0;
7734 l_MdTxCrdtUBP_Adj := 0;
7735 l_MdTxCrdtUAB_Adj := 0;
7736 l_MdTxCrdtUAP_Adj := 0;
7737 l_MdTxCrdtUPO_Adj := 0;
7738 l_MdTxCrdtUNG_Adj := 0;
7739 l_MdTxCrdtUEE_Adj := 0;
7740
7741 trc_curMedTxCrEle := 0;
7742 trc_LSDirTab.delete;
7743
7744 -- Only If the employee is below 65 year the Medical Tax credit Should be calculated
7745 -- So making the Available Medical Tax Credit as Zero for others.
7746 IF l_65Year <= dbi_ZA_TX_YR_END or py_za_tx_utl_01032012.AllowRefund(p_65Year => l_65Year) THEN
7747 bal_MED_AID_TAX_CR_CMTD := 0;
7748 bal_MED_AID_TAX_CR_CYTD := 0;
7749 bal_MED_AID_TAX_CR_RUN := 0;
7750 bal_MED_AID_TAX_CR_PTD := 0;
7751 bal_MED_AID_TAX_CR_YTD := 0;
7752 bal_ANN_MED_AID_TAX_CR_CMTD := 0;
7753 bal_ANN_MED_AID_TAX_CR_CYTD := 0;
7754 bal_ANN_MED_AID_TAX_CR_RUN := 0;
7755 bal_ANN_MED_AID_TAX_CR_PTD := 0;
7756 bal_ANN_MED_AID_TAX_CR_YTD := 0;
7757
7758 WrtHrTrc(' Employee Above 65:'||to_char(bal_ER_MED_CONTR_PTD));
7759 WrtHrTrc(' l_65Year:'||to_char(l_65Year));
7760 WrtHrTrc(' bal_MED_AID_TAX_CR_YTD:'||to_char(bal_ER_MED_CONTR_PTD));
7761 WrtHrTrc(' bal_ANN_MED_AID_TAX_CR_YTD:'||to_char(bal_ER_MED_CONTR_YTD));
7762
7763 END IF;
7764
7765 IF bal_MED_AID_TAX_CR_USED_YTD > 0 AND
7766 bal_MED_TAX_CR_USED_DR_YTD = 0 AND
7767 bal_MED_AID_TAX_CR_USED_LS_YTD = 0 AND
7768 bal_MED_TAX_CR_USED_NI_YTD = 0 AND
7769 bal_MED_TAX_CR_USED_FB_YTD = 0 AND
7770 bal_MED_TAX_CR_USED_TA_YTD = 0 AND
7771 bal_MED_TAX_CR_USED_BP_YTD = 0 AND
7772 bal_MED_TAX_CR_USED_AB_YTD = 0 AND
7773 bal_MED_TAX_CR_USED_AP_YTD = 0 AND
7774 bal_MED_TAX_CR_USED_PO_YTD = 0 AND
7775 bal_MED_TAX_CR_USED_NG_YTD = 0 AND
7776 bal_MED_TAX_CR_USED_EE_YTD = 0 THEN
7777
7778 if bal_TOT_TXB_NI_YTD - bal_TOT_TXB_NI_RUN > 0 and p_MedCrUsed = 0 then
7779 bal_MED_TAX_CR_USED_NI_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7780 bal_MED_TAX_CR_USED_NI_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7781 l_MdTxCrdtUNi_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7782 p_MedCrUsed := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7783 end if;
7784
7785 if bal_TOT_TXB_FB_YTD - bal_TOT_TXB_FB_RUN> 0 and p_MedCrUsed = 0 then
7786 bal_MED_TAX_CR_USED_FB_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7787 bal_MED_TAX_CR_USED_FB_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7788 l_MdTxCrdtUFB_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7789 p_MedCrUsed := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7790 end if;
7791
7792 if bal_TOT_TXB_TA_YTD - bal_TOT_TXB_TA_RUN > 0 and p_MedCrUsed = 0 then
7793 bal_MED_TAX_CR_USED_TA_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7794 bal_MED_TAX_CR_USED_TA_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7795 l_MdTxCrdtUTA_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7796 p_MedCrUsed := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7797 end if;
7798
7799 if bal_BP_YTD - bal_BP_RUN > 0 and p_MedCrUsed = 0 then
7800 bal_MED_TAX_CR_USED_BP_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7801 bal_MED_TAX_CR_USED_BP_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7802 l_MdTxCrdtUBP_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7803 p_MedCrUsed := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7804 end if;
7805
7806
7807 if bal_TOT_TXB_AB_YTD - bal_TOT_TXB_AB_RUN> 0 and p_MedCrUsed = 0 then
7808 bal_MED_TAX_CR_USED_AB_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7809 bal_MED_TAX_CR_USED_AB_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7810 l_MdTxCrdtUAB_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7811 p_MedCrUsed := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7812 end if;
7813
7814 if bal_TOT_TXB_AP_YTD - bal_TOT_TXB_AP_RUN > 0 and p_MedCrUsed = 0 then
7815 bal_MED_TAX_CR_USED_AP_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7816 bal_MED_TAX_CR_USED_AP_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7817 l_MdTxCrdtUAP_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7818 p_MedCrUsed := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7819 end if;
7820
7821 if bal_TOT_TXB_PO_PTD - bal_TOT_TXB_PO_RUN > 0 and p_MedCrUsed = 0 then
7822 bal_MED_TAX_CR_USED_PO_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7823 bal_MED_TAX_CR_USED_PO_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7824 l_MdTxCrdtUPO_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7825 p_MedCrUsed := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7826 end if;
7827
7828 if bal_TOT_TXB_AP_NTG_YTD - bal_TOT_TXB_AP_NTG_RUN > 0 and p_MedCrUsed = 0 then
7829 bal_MED_TAX_CR_USED_NG_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7830 bal_MED_TAX_CR_USED_NG_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7831 l_MdTxCrdtUNG_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7832 p_MedCrUsed := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7833 end if;
7834
7835 if bal_TOT_TXB_EE_DBT_NTG_YTD - bal_TOT_TXB_EE_DBT_NTG_RUN > 0 and p_MedCrUsed = 0 then
7836 bal_MED_TAX_CR_USED_EE_YTD := bal_MED_AID_TAX_CR_USED_YTD;
7837 bal_MED_TAX_CR_USED_EE_PTD := bal_MED_AID_TAX_CR_USED_PTD;
7838 l_MdTxCrdtUEE_Adj := bal_MED_AID_TAX_CR_USED_YTD;
7839 p_MedCrUsed := -1 * bal_MED_AID_TAX_CR_USED_YTD;
7840 end if;
7841
7842 hr_utility.set_location(' p_MedCrUsed:'||p_MedCrUsed,99);
7843 hr_utility.set_location('l_MdTxCrdtUDR_Adj:'||l_MdTxCrdtUDR_Adj,99);
7844 hr_utility.set_location('l_MdTxCrdtUNi_Adj:'||l_MdTxCrdtUNi_Adj,99);
7845 hr_utility.set_location('l_MdTxCrdtUFB_Adj:'||l_MdTxCrdtUFB_Adj,99);
7846 hr_utility.set_location('l_MdTxCrdtUAP_Adj:'||l_MdTxCrdtUAP_Adj,99);
7847 hr_utility.set_location('l_MdTxCrdtUTA_Adj:'||l_MdTxCrdtUTA_Adj,99);
7848 hr_utility.set_location('l_MdTxCrdtUBP_Adj:'||l_MdTxCrdtUBP_Adj,99);
7849 hr_utility.set_location('l_MdTxCrdtUAB_Adj:'||l_MdTxCrdtUAB_Adj,99);
7850 hr_utility.set_location('l_MdTxCrdtUNG_Adj:'||l_MdTxCrdtUNG_Adj,99);
7851 hr_utility.set_location('l_MdTxCrdtUEE_Adj:'||l_MdTxCrdtUEE_Adj,99);
7852 END IF;
7853
7854 -- Bug 14168167
7855 IF py_za_tx_utl_01032012.AllowRefund(p_65Year => l_65Year) THEN
7856
7857 bal_MED_AID_TAX_CR_USED_CMTD := 0;
7858 bal_MED_AID_TAX_CR_USED_CYTD := 0;
7859 bal_MED_AID_TAX_CR_USED_RUN := 0;
7860 bal_MED_AID_TAX_CR_USED_PTD := 0;
7861 bal_MED_AID_TAX_CR_USED_YTD := 0;
7862
7863 END IF;
7864 -- Bug 14168167
7865 -- Tax Override Validation
7866 --
7867 /*
7868 V = Amount
7869 P = Percentage
7870 S = Force Site Calculation
7871 */
7872
7873 -- Added for Bug 9369895
7874 -- Retrieve the Pension Basis
7875 -- 1 : Fixed Percentage of Total Package
7876 -- 2 : Percentage of Specific Income
7877 -- If ZA_SPECIFIC_INFO is not filled for an assignment, we default it to Percentage of Specific Income
7878 begin
7879 select paei.AEI_INFORMATION8
7880 into trc_PenBasis
7881 from per_assignment_extra_info paei
7882 where paei.assignment_id = con_ASG_ID
7883 and paei.information_type = 'ZA_SPECIFIC_INFO';
7884 hr_utility.set_location('Pension Basis: '||to_char(trc_PenBasis),2);
7885 exception
7886 when others then
7887 trc_PenBasis:= 2;
7888 hr_utility.set_location('Pension Basis: '||to_char(trc_PenBasis),3);
7889 end;
7890
7891 -- Tax Status Validation
7892 --
7893 /*
7894 A = Normal
7895 B = Provisional
7896 C = Directive Amount
7897 D = Directive Percentage
7898 E = Close Corporation
7899 F = Temporary Worker/Student
7900 G = Seasonal Worker
7901 H = Zero Tax
7902 J = Personal Service Company
7903 K = Personal Service Trust
7904 L = Labour Broker
7905 M = Private Director
7906 N = Private Director with Directive Amount
7907 P = Private Director with Directive Percentage
7908 Q = Private Director Zero Tax
7909 */
7910 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',3);
7911
7912 -- C = Directive Amount
7913 -- N = Private Director with Directive Amount
7914 --
7915 IF dbi_TX_STA IN ('C','N') THEN
7916 IF trc_OvrTxCalc AND (trc_OvrTyp = 'S' OR trc_OvrTyp = 'P') THEN
7917 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',4);
7918 IF xpt_Msg = 'No Error' THEN
7919 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',5);
7920 xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_C';
7921 END IF;
7922 RAISE xpt_E;
7923 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',6);
7924 ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
7925 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',7);
7926 trc_CalTyp := 'OvrCalc';
7927 trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
7928 -- Check Directive Number First
7929 ELSIF dbi_TX_DIR_NUM = 'NULL' THEN
7930 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',8);
7931 IF xpt_Msg = 'No Error' THEN
7932 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',9);
7933 xpt_Msg := 'PY_ZA_TX_DIR_NUM';
7934 END IF;
7935 RAISE xpt_E;
7936 -- Check that directive value is filled in
7937 ELSIF dbi_TX_DIR_VAL = -1 THEN
7938 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',10);
7939 IF xpt_Msg = 'No Error' THEN
7940 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',11);
7941 xpt_Msg := 'PY_ZA_TX_DIR_MONT';
7942 END IF;
7943 RAISE xpt_E;
7944 ELSE
7945 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',12);
7946 trc_CalTyp := 'NoCalc';
7947 -- Liability = entered value
7948 trc_LibFpNI := dbi_TX_DIR_VAL;
7949 -- Medical Tax Credit Available
7950 trc_curMedTxCrEle := greatest(bal_MED_AID_TAX_CR_YTD + bal_ANN_MED_AID_TAX_CR_YTD - bal_MED_AID_TAX_CR_USED_YTD,0);
7951
7952 hr_utility.set_location('trc_MedTxCr:'||trc_MedTxCr,6);
7953
7954 -- Normal Income
7955 IF (trc_LibFpNI > 0) THEN
7956 trc_MedTxCrUsedNI := least(trc_curMedTxCrEle, trc_LibFpNI);
7957 trc_MedTxCrUsedNI_Upd := trc_MedTxCrUsedNI;
7958 END IF;
7959 trc_LibFpNI_Upd := trc_LibFpNI - trc_MedTxCrUsedNI_Upd;
7960 trc_curMedTxCrEle := greatest(trc_curMedTxCrEle - trc_MedTxCrUsedNI,0);
7961
7962 hr_utility.set_location('trc_MedTxCrUsedNI:'||trc_MedTxCrUsedNI,9);
7963 hr_utility.set_location('trc_LibFpNI_Upd:'||trc_LibFpNI_Upd,9);
7964 hr_utility.set_location('trc_curMedTxCrEle: '||trc_curMedTxCrEle,9);
7965 hr_utility.set_location('trc_MedTxCrUsedNI_Upd: '||trc_MedTxCrUsedNI_Upd,9);
7966
7967 trc_LibFpNI := trc_LibFpNI_Upd;
7968
7969 -- Standard NetPay Validation
7970 py_za_tx_utl_01032012.ValidateTaxOns;
7971 END IF;
7972 -- D = Directive Percentage
7973 -- P = Private Director wth Directive Percentage
7974 --
7975 ELSIF dbi_TX_STA IN ('D','P') THEN
7976 IF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
7977 IF xpt_Msg = 'No Error' THEN
7978 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',13);
7979 xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_DEF';
7980 END IF;
7981 RAISE xpt_E;
7982 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',14);
7983 ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
7984 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',15);
7985 trc_CalTyp := 'OvrCalc';
7986 trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
7987 ELSE
7988 IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
7989 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',16);
7990 trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
7991 -- Percentage taken into account in py_za_tx_utl_01032012.TaxLiability
7992 END IF;
7993 -- Check Directive Number First
7994 IF dbi_TX_DIR_NUM = 'NULL' THEN
7995 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',17);
7996 IF xpt_Msg = 'No Error' THEN
7997 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',18);
7998 xpt_Msg := 'PY_ZA_TX_DIR_NUM';
7999 END IF;
8000 RAISE xpt_E;
8001 -- Check that directive value is filled in
8002 ELSIF dbi_TX_DIR_VAL = -1 THEN
8003 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',19);
8004 IF xpt_Msg = 'No Error' THEN
8005 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',20);
8006 xpt_Msg := 'PY_ZA_TX_DIR_PERC';
8007 END IF;
8008 RAISE xpt_E;
8009 ELSE
8010 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',21);
8011 DirCalc;
8012 END IF;
8013 END IF;
8014 -- E = Close Corporation
8015 -- F = Temporary Worker/Student
8016 -- J = Personal Service Company
8017 -- K = Personal Service Trust
8018 -- L = Labour Broker
8019 --
8020 ELSIF dbi_TX_STA IN ('E','F','J','K','L') THEN
8021 IF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
8022 IF xpt_Msg = 'No Error' THEN
8023 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',22);
8024 xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_DEF';
8025 END IF;
8026 RAISE xpt_E;
8027 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',23);
8028 ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
8029 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',24);
8030 trc_CalTyp := 'OvrCalc';
8031 trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
8032 ELSE
8033 IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
8034 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',25);
8035 trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
8036 -- Percentage taken into account in py_za_tx_utl_01032012.TaxLiability
8037 END IF;
8038 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',26);
8039 -- Simply Execute the Directive Calculation
8040 DirCalc;
8041 END IF;
8042 -- G = Seasonal Worker
8043 --
8044 ELSIF dbi_TX_STA = 'G' THEN
8045 IF trc_OvrTxCalc AND (trc_OvrTyp = 'S' OR trc_OvrTyp = 'P') THEN
8046 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',27);
8047 IF xpt_Msg = 'No Error' THEN
8048 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',28);
8049 xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_G';
8050 END IF;
8051 RAISE xpt_E;
8052 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',29);
8053 -- Check that seasonal worker days worked is filled in
8054 ELSIF dbi_SEA_WRK_DYS_WRK = 0 THEN
8055 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',30);
8056 IF xpt_Msg = 'No Error' THEN
8057 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',31);
8058 xpt_Msg := 'PY_ZA_TX_SEA_WRK_DYS';
8059 END IF;
8060 RAISE xpt_E;
8061 ELSE
8062 IF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
8063 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',32);
8064 trc_CalTyp := 'OvrCalc';
8065 trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
8066 py_za_tx_utl_01032012.SetRebates;
8067 ELSE
8068 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',33);
8069 SeaCalc;
8070 END IF;
8071 END IF;
8072 -- A = Normal
8073 -- B = Provisional
8074 -- M = Private Director
8075 --
8076 ELSIF dbi_TX_STA IN ('A','B','M') THEN
8077 IF dbi_TX_STA <> 'M' THEN
8078 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',34);
8079 -- Deemed Remuneration only applicable to 'M'
8080 bal_DIR_DMD_RMN_ITD := 0;
8081 END IF;
8082
8083 IF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
8084 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',35);
8085 trc_CalTyp := 'OvrCalc';
8086 trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
8087 py_za_tx_utl_01032012.SetRebates;
8088 trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032012.DaysWorked;
8089 ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
8090 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',36);
8091 trc_CalTyp := 'OvrCalc';
8092 trc_OvrWrn := 'WARNING: Tax Override - Forced Site Calculation';
8093 -- Force the Site Calculation
8094 SitCalc;
8095 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',37);
8096 ELSE
8097 IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
8098 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',38);
8099 trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
8100 -- Percentage taken into account in py_za_tx_utl_01032012.TaxLiability
8101 END IF;
8102
8103 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',39);
8104 IF py_za_tx_utl_01032012.LatePayPeriod THEN
8105 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',40);
8106 LteCalc;
8107 -- Is this a SITE Period?
8108 ELSIF py_za_tx_utl_01032012.EmpTermPrePeriod THEN
8109 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',41);
8110 SitCalc;
8111 ELSIF py_za_tx_utl_01032012.LstPeriod OR py_za_tx_utl_01032012.EmpTermInPeriod THEN
8112 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',42);
8113 IF py_za_tx_utl_01032012.PreErnPeriod THEN
8114 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',43);
8115 --When a YtdCalc or CalCalc would be performed,
8116 --the system must do a Bascalc if the method is non-cumulative
8117 IF (dbi_TX_MTD = 'N') then
8118 BasCalc;
8119 ELSE
8120 YtdCalc;
8121 END IF;
8122 ELSE
8123 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',44);
8124 SitCalc;
8125 END IF;
8126 ElSE
8127 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',45);
8128 -- The employee has NOT been terminated!
8129 IF py_za_tx_utl_01032012.PreErnPeriod THEN
8130 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',46);
8131 --When a YtdCalc or CalCalc would be performed,
8132 --the system must do a Bascalc if the method is non-cumulative
8133 IF (dbi_TX_MTD = 'N') then
8134 BasCalc;
8135 ELSE
8136 YtdCalc;
8137 END IF;
8138 -- Bug 4346955 Bug 5148830
8139 /* ELSIF dbi_ZA_ASG_TX_RTR_PRD = 'Y' THEN
8140 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',47);
8141 IF dbi_ZA_ASG_TAX_RTR_RSLTS = 'Y' THEN
8142 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',48);
8143 SitCalc;
8144 ELSIF py_za_tx_utl_01032012.NegPtd THEN
8145 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',49);
8146 SitCalc;
8147 ELSE
8148 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',50);
8149 NorCalc;
8150 END IF; */
8151 ELSIF py_za_tx_utl_01032012.NegPtd THEN
8152 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',51);
8153 SitCalc;
8154 ELSE
8155 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',52);
8156 NorCalc;
8157 END IF;
8158 END IF;
8159 END IF;
8160 -- H = Zero Tax
8161 -- Q = Private Director Zero Tax
8162 --
8163 ELSIF dbi_TX_STA IN ('H','Q') THEN
8164 IF trc_OvrTxCalc THEN
8165 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',53);
8166 IF xpt_Msg = 'No Error' THEN
8167 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',54);
8168 xpt_Msg := 'PY_ZA_TX_OVR_TX_STATE_H';
8169 END IF;
8170 RAISE xpt_E;
8171 ELSE
8172 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',55);
8173 trc_LibFpNI := -1 * bal_TX_ON_NI_YTD;
8174 trc_LibFpFB := -1 * bal_TX_ON_FB_YTD;
8175 trc_LibFpTA := -1 * bal_TX_ON_TA_YTD;
8176 trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
8177 trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
8178 trc_LibFpAP := -1 * bal_TX_ON_AP_YTD;
8179 trc_LibFpPO := -1 * bal_TX_ON_PO_YTD;
8180 trc_MedTxCrUsedNI_Upd := -1 * bal_MED_TAX_CR_USED_NI_YTD;
8181 trc_MedTxCrUsedFB_Upd := -1 * bal_MED_TAX_CR_USED_FB_YTD;
8182 trc_MedTxCrUsedTA_Upd := -1 * bal_MED_TAX_CR_USED_TA_YTD;
8183 trc_MedTxCrUsedBP_Upd := -1 * bal_MED_TAX_CR_USED_BP_YTD;
8184 trc_MedTxCrUsedAB_Upd := -1 * bal_MED_TAX_CR_USED_AB_YTD;
8185 trc_MedTxCrUsedAP_Upd := -1 * bal_MED_TAX_CR_USED_AP_YTD;
8186 trc_MedTxCrUsedPO_Upd := -1 * bal_MED_TAX_CR_USED_PO_YTD;
8187 END IF;
8188 ELSE
8189 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',56);
8190 -- Bug 8691928
8191 -- Changed the way of raising exception so as to avoid
8192 -- the text from being overwritten in exception block
8193 xpt_Msg := 'Invalid Tax Status' ;
8194 RAISE xpt_E;
8195 END IF;
8196
8197 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',57);
8198
8199 -- Post Calculation Steps
8200 --
8201
8202 --
8203 l_paye := trc_LibFpDR
8204 + trc_LibFpNI
8205 + trc_LibFpFB
8206 + trc_LibFpTA
8207 + trc_LibFpBP
8208 + trc_LibFpAB
8209 + trc_LibFpAP
8210 + trc_LibFpPO
8211 + trc_LibFpNtgAP
8212 + trc_LibFpNtgEEDbt;
8213 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012 l_paye '|| l_paye,58);
8214 l_TotMedTxCr_Upd := trc_MedTxCrUsedDR_Upd +
8215 trc_MedTxCrUsedNI_Upd +
8216 trc_MedTxCrUsedFB_Upd +
8217 trc_MedTxCrUsedTA_Upd +
8218 trc_MedTxCrUsedBP_Upd +
8219 trc_MedTxCrUsedAB_Upd +
8220 trc_MedTxCrUsedAP_Upd +
8221 trc_MedTxCrUsedPO_Upd +
8222 trc_MedTxCrUsedNtgAP_Upd +
8223 trc_MedTxCrUsedNtgEEDbt_Upd;
8224 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012 l_TotMedTxCr_Upd '|| l_TotMedTxCr_Upd,58);
8225
8226
8227 if l_paye < 0 and l_TotMedTxCr_Upd > 0 then
8228
8229 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',59);
8230 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012 trc_curMedTxCrEle '|| trc_curMedTxCrEle,59);
8231 trc_curMedTxCrEle := py_za_tx_utl_01032012.AdjMACTxOns
8232 ( p_MedTxCrUsedDR_Upd => trc_MedTxCrUsedDR_Upd
8233 , p_MedTxCrUsedNI_Upd => trc_MedTxCrUsedNI_Upd
8234 , p_MedTxCrUsedFB_Upd => trc_MedTxCrUsedFB_Upd
8235 , p_MedTxCrUsedTA_Upd => trc_MedTxCrUsedTA_Upd
8236 , p_MedTxCrUsedBP_Upd => trc_MedTxCrUsedBP_Upd
8237 , p_MedTxCrUsedAB_Upd => trc_MedTxCrUsedAB_Upd
8238 , p_MedTxCrUsedAP_Upd => trc_MedTxCrUsedAP_Upd
8239 , p_MedTxCrUsedPO_Upd => trc_MedTxCrUsedPO_Upd
8240 , p_MedTxCrUsedNtgAP_Upd => trc_MedTxCrUsedNtgAP_Upd
8241 , p_MedTxCrUsedNtgEEDbt_Upd => trc_MedTxCrUsedNtgEEDbt_Upd
8242 , p_MedTxCrAvailable => trc_curMedTxCrEle
8243 );
8244 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012 trc_curMedTxCrEle '|| trc_curMedTxCrEle,59);
8245 end if;
8246 l_paye :=0;
8247 l_TotMedTxCr_Upd :=0;
8248 --
8249 py_za_tx_utl_01032012.SitPaySplit;
8250
8251 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',58);
8252
8253 -- Execute the Arrear Processing
8254 --
8255 IF py_za_tx_utl_01032012.SitePeriod THEN
8256 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',59);
8257 py_za_tx_utl_01032012.ArrearExcess;
8258 END IF;
8259
8260 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',60);
8261
8262 -- Calculate Net Taxable Income
8263 --
8264 NetTxbIncCalc(ASSIGNMENT_ACTION_ID);
8265
8266 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',61);
8267 --
8268 -- Tax on Lump Sums
8269 --
8270 -- If tax on lump sums has already been calculated
8271 -- do not return the values again by resetting the
8272 -- dbi's to their default values
8273 --
8274
8275 -- Fix for Bug# 12351345 starts
8276
8277 -- Added additional check in case the ptd is getting 0 value with multiple runs.
8278
8279 hr_utility.set_location('bal_TX_ON_LS_PTD' || bal_TX_ON_LS_PTD, 1);
8280 hr_utility.set_location('con_ASG_ACT_ID' || con_ASG_ACT_ID, 1);
8281
8282 If bal_TX_ON_LS_PTD = 0 Then
8283
8284 -- Query to check if there are multiple runs which sets the ptd as zero
8285
8286 Select count(*)
8287 into l_lmsm_proc_cnt
8288 from
8289 pay_balance_feeds_f FEED,
8290 pay_run_result_values TARGET,
8291 pay_run_results RR,
8292 pay_payroll_actions PACT,
8293 pay_assignment_actions ASSACT,
8294 pay_payroll_actions BACT,
8295 pay_assignment_actions BAL_ASSACT
8296 where FEED.BALANCE_TYPE_ID = (
8297 select BALANCE_TYPE_ID
8298 from pay_balance_types
8299 where balance_name= 'Tax on Lump Sums'
8300 and legislation_code = 'ZA') -- Balance_type_id for Tax on Lump Sums
8301 and BAL_ASSACT.assignment_action_id = con_ASG_ACT_ID
8302 and BAL_ASSACT.payroll_action_id = BACT.payroll_action_id
8303 and FEED.input_value_id = TARGET.input_value_id
8304 and TARGET.run_result_id = RR.run_result_id
8305 and RR.assignment_action_id = ASSACT.assignment_action_id
8306 and ASSACT.payroll_action_id = PACT.payroll_action_id
8307 and PACT.effective_date between FEED.effective_start_date
8308 and FEED.effective_end_date
8309 and RR.status in ('P','PA')
8310 and PACT.time_period_id = BACT.time_period_id
8311 and ASSACT.action_sequence <= BAL_ASSACT.action_sequence
8312 and ASSACT.assignment_id = BAL_ASSACT.assignment_id;
8313
8314 hr_utility.set_location('l_lmsm_proc_cnt' || l_lmsm_proc_cnt, 1);
8315
8316 if l_lmsm_proc_cnt > 0 then
8317 dbi_ZA_LS_DIR_NUM := 'To Be Advised';
8318 dbi_ZA_LS_DIR_VAL := -1;
8319 end if;
8320 else
8321
8322 dbi_ZA_LS_DIR_NUM := 'To Be Advised';
8323 dbi_ZA_LS_DIR_VAL := -1;
8324
8325 end if;
8326
8327
8328
8329 /*
8330 IF bal_TX_ON_LS_PTD <> 0 THEN
8331 dbi_ZA_LS_DIR_NUM := 'To Be Advised';
8332 dbi_ZA_LS_DIR_VAL := -1;
8333 END IF;
8334 */
8335 -- Setup the Out Parameters
8336 --
8337
8338 -- Tax on Retirement Fund Lump Sums
8339 --
8340 -- If tax on retirement fund lump sums has already been calculated
8341 -- do not return the values again by resetting the
8342 -- dbi's to their default values
8343 --
8344
8345 -- Added additional check in case the ptd is getting 0 value with multiple runs.
8346
8347 hr_utility.set_location('bal_TX_ON_RET_LS_PTD ' || bal_TX_ON_RET_LS_PTD , 2);
8348 hr_utility.set_location('con_ASG_ACT_ID' || con_ASG_ACT_ID, 2);
8349
8350 If bal_TX_ON_RET_LS_PTD = 0 Then
8351
8352 -- Query to check if there are multiple runs which sets the ptd as zero
8353
8354 Select count(*)
8355 into l_ret_lmsm_proc_cnt
8356 from
8357 pay_balance_feeds_f FEED,
8358 pay_run_result_values TARGET,
8359 pay_run_results RR,
8360 pay_payroll_actions PACT,
8361 pay_assignment_actions ASSACT,
8362 pay_payroll_actions BACT,
8363 pay_assignment_actions BAL_ASSACT
8364 where FEED.BALANCE_TYPE_ID = (
8365 select BALANCE_TYPE_ID
8366 from pay_balance_types
8367 where balance_name= 'Tax on Retirement Fund Lump Sums'
8368 and legislation_code = 'ZA') -- Balance_type_id for Tax on Retirement Fund Lump Sums
8369 and BAL_ASSACT.assignment_action_id = con_ASG_ACT_ID
8370 and BAL_ASSACT.payroll_action_id = BACT.payroll_action_id
8371 and FEED.input_value_id = TARGET.input_value_id
8372 and TARGET.run_result_id = RR.run_result_id
8373 and RR.assignment_action_id = ASSACT.assignment_action_id
8374 and ASSACT.payroll_action_id = PACT.payroll_action_id
8375 and PACT.effective_date between FEED.effective_start_date
8376 and FEED.effective_end_date
8377 and RR.status in ('P','PA')
8378 and PACT.time_period_id = BACT.time_period_id
8379 and ASSACT.action_sequence <= BAL_ASSACT.action_sequence
8380 and ASSACT.assignment_id = BAL_ASSACT.assignment_id;
8381
8382 hr_utility.set_location('l_ret_lmsm_proc_cnt' || l_ret_lmsm_proc_cnt, 2);
8383
8384 if l_ret_lmsm_proc_cnt > 0 then
8385 dbi_ZA_RET_LS_DIR_NUM := 'To Be Advised';
8386 dbi_ZA_RET_LS_DIR_VAL := 0;
8387 end if;
8388
8389 else
8390
8391 dbi_ZA_RET_LS_DIR_NUM := 'To Be Advised';
8392 dbi_ZA_RET_LS_DIR_VAL := 0;
8393
8394 end if;
8395
8396 /* IF bal_TX_ON_RET_LS_PTD <> 0 THEN
8397 dbi_ZA_RET_LS_DIR_NUM := 'To Be Advised';
8398 dbi_ZA_RET_LS_DIR_VAL := 0;
8399 END IF;
8400 */
8401 -- Fix for Bug# 12351345 ends
8402
8403
8404
8405 -- Setup the Out Parameters
8406
8407 -- Messages
8408 p_LibWrn := trc_LibWrn; -- Liability Warning
8409 p_OvrWrn := trc_OvrWrn; -- Override Warning
8410
8411 -- Pay Values
8412 trc_PayValSD := ( trc_LibFpNI
8413 + trc_LibFpFB
8414 + trc_LibFpTA
8415 + trc_LibFpBP
8416 + trc_LibFpAB
8417 + trc_LibFpAP
8418 + trc_LibFpPO
8419 );
8420 trc_PayValEC := trc_LibFpDR;
8421
8422
8423 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',62);
8424
8425 -- Tax On's
8426 p_LibFpDR := trc_LibFpDR;
8427 p_LibFpNI := trc_LibFpNI;
8428 p_LibFpFB := trc_LibFpFB;
8429 p_LibFpTA := trc_LibFpTA;
8430 p_LibFpBP := trc_LibFpBP;
8431 p_LibFpAB := trc_LibFpAB;
8432 p_LibFpAP := trc_LibFpAP;
8433 p_LibFpPO := trc_LibFpPO;
8434 p_PayValSD := trc_PayValSD;
8435 p_PayValEC := trc_PayValEC;
8436 -- NTG
8437 p_LibFpNtgAP := trc_LibFpNtgAP;
8438 p_LibFpNtgEEDbt := trc_LibFpNtgEEDbt;
8439 p_LibFpNtg := trc_LibFpNtgAP + trc_LibFpNtgEEDbt;
8440 -- End NTG
8441
8442 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',63);
8443
8444 -- Indicators, Splits and Updates
8445 p_PayeVal := trc_PayeVal;
8446 p_SiteVal := trc_SiteVal;
8447 p_It3Ind := trc_It3Ind;
8448 p_PfUpdFig := trc_PfUpdFig;
8449 p_RaUpdFig := trc_RaUpdFig;
8450 p_OUpdFig := trc_OUpdFig;
8451 p_NtiUpdFig := trc_NtiUpdFig;
8452 p_NPtiUpdFig := trc_NPtiUpdFig; --EMP201
8453
8454 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',64);
8455
8456 p_LSDirNum := dbi_ZA_LS_DIR_NUM;
8457 p_LSDirVal := dbi_ZA_LS_DIR_VAL;
8458 p_RETLSDirNum := dbi_ZA_RET_LS_DIR_NUM;
8459 p_RETLSDirVal := dbi_ZA_RET_LS_DIR_VAL;
8460
8461 -- Start Medical Tax Credit Lump Sum Changes
8462 hr_utility.set_location('-----------------------------------------',65);
8463 hr_utility.set_location('Start Medical Tax Credit Lump Sum Changes',65);
8464 hr_utility.set_location('-----------------------------------------',65);
8465 hr_utility.set_location('Before loop trc_curMedTxCrEle:'||trc_curMedTxCrEle,66);
8466 -- IF Tax on Lump Sums YTD and Med Tax Credit Used on Lump Sums YTD is 0 do nothing.
8467 IF NOT (bal_TX_ON_LS_YTD = 0 AND bal_MED_AID_TAX_CR_USED_LS_YTD = 0) THEN
8468
8469 FOR LSDir in csr_all_LSDir(ASSIGNMENT_ACTION_ID)
8470 LOOP
8471 l_LSDirRec := null;
8472 py_za_tx_utl_01032012.StopHrTrace;
8473 pay_balance_pkg.set_context('SOURCE_TEXT',LSDir.dirnum);
8474 l_LSDirRec.TxOnLSDirRUN := pay_balance_pkg.get_value(get_def_bal_id('Tax on Lump Sums',
8475 '_ASG_LMPSM_RUN')
8476 ,ASSIGNMENT_ACTION_ID);
8477 l_LSDirRec.TxOnLSDirPTD := pay_balance_pkg.get_value(get_def_bal_id('Tax on Lump Sums',
8478 '_ASG_LMPSM_TAX_PTD')
8479 ,ASSIGNMENT_ACTION_ID);
8480 l_LSDirRec.TxOnLSDirYTD := pay_balance_pkg.get_value(get_def_bal_id('Tax on Lump Sums',
8481 '_ASG_LMPSM_TAX_YTD')
8482 ,ASSIGNMENT_ACTION_ID);
8483 l_LSDirRec.MedTxCrUsedOnLSDirRUN := pay_balance_pkg.get_value(get_def_bal_id('Medical Tax Credit Used on Lump Sums',
8484 '_ASG_LMPSM_RUN')
8485 ,ASSIGNMENT_ACTION_ID);
8486 l_LSDirRec.MedTxCrUsedOnLSDirPTD := pay_balance_pkg.get_value(get_def_bal_id('Medical Tax Credit Used on Lump Sums',
8487 '_ASG_LMPSM_TAX_PTD')
8488 ,ASSIGNMENT_ACTION_ID);
8489 l_LSDirRec.MedTxCrUsedOnLSDirYTD := pay_balance_pkg.get_value(get_def_bal_id('Medical Tax Credit Used on Lump Sums',
8490 '_ASG_LMPSM_TAX_YTD')
8491 ,ASSIGNMENT_ACTION_ID);
8492 py_za_tx_utl_01032012.StartHrTrace;
8493 hr_utility.set_location('trc_curMedTxCrEle:'||trc_curMedTxCrEle,67);
8494 hr_utility.set_location('LSDir.dirnum:'||LSDir.dirnum,67);
8495 hr_utility.set_location('l_LSDirRec.TxOnLSDirRUN:'||l_LSDirRec.TxOnLSDirRUN,67);
8496 hr_utility.set_location('l_LSDirRec.TxOnLSDirPTD:'||l_LSDirRec.TxOnLSDirPTD,67);
8497 hr_utility.set_location('l_LSDirRec.TxOnLSDirYTD:'||l_LSDirRec.TxOnLSDirYTD,67);
8498 hr_utility.set_location('l_LSDirRec.MedTxCrUsedOnLSDirRUN:'||l_LSDirRec.MedTxCrUsedOnLSDirRUN,67);
8499 hr_utility.set_location('l_LSDirRec.MedTxCrUsedOnLSDirPTD:'||l_LSDirRec.MedTxCrUsedOnLSDirPTD,67);
8500 hr_utility.set_location('l_LSDirRec.MedTxCrUsedOnLSDirYTD:'||l_LSDirRec.MedTxCrUsedOnLSDirYTD,67);
8501
8502 IF (trc_curMedTxCrEle > 0) THEN
8503 -- Means Not the Current Run LS Directive so we can not increase the Med Tax credit
8504 IF (l_LSDirRec.TxOnLSDirRUN = 0) THEN
8505 -- In This case we can only reduce the Med Tax credit
8506 IF (trc_curMedTxCrEle < l_LSDirRec.MedTxCrUsedOnLSDirYTD) THEN
8507 l_ExMedTaxCr := (l_LSDirRec.MedTxCrUsedOnLSDirYTD - trc_curMedTxCrEle);
8508 l_LSDirRec.MedTxCrUsedOnLSDirRUN := -1 * l_ExMedTaxCr;
8509 trc_curMedTxCrEle := trc_curMedTxCrEle - (l_LSDirRec.MedTxCrUsedOnLSDirYTD - l_ExMedTaxCr);
8510 ELSE
8511 trc_curMedTxCrEle := trc_curMedTxCrEle - l_LSDirRec.MedTxCrUsedOnLSDirYTD;
8512 END IF;
8513 ELSE -- Means Current Run LS Directive so we can increase/decrease the Med Tax Credit
8514 l_LSDirRec.MedTxCrUsedOnLSDirRUN := LEAST(l_LSDirRec.TxOnLSDirRUN,trc_curMedTxCrEle);
8515 trc_curMedTxCrEle := trc_curMedTxCrEle - l_LSDirRec.MedTxCrUsedOnLSDirRUN;
8516 END IF;
8517
8518 ELSE -- IF Med Tax Credit Available is 0
8519 -- Reduce the Credit to 0 and Collect Tax
8520 IF (l_LSDirRec.MedTxCrUsedOnLSDirYTD > 0) THEN
8521 l_LSDirRec.MedTxCrUsedOnLSDirRUN := -1 * l_LSDirRec.MedTxCrUsedOnLSDirYTD;
8522 END IF;
8523
8524 END IF;
8525
8526 IF (l_LSDirRec.MedTxCrUsedOnLSDirRUN <>0) THEN
8527 trc_LSDirTab(LSDir.dirnum) := l_LSDirRec;
8528 END IF;
8529
8530 hr_utility.set_location('trc_curMedTxCrEle:'||trc_curMedTxCrEle,68);
8531 hr_utility.set_location('l_LSDirRec.TxOnLSDirRUN:'||l_LSDirRec.TxOnLSDirRUN,68);
8532 hr_utility.set_location('l_LSDirRec.MedTxCrUsedOnLSDirRUN:'||l_LSDirRec.MedTxCrUsedOnLSDirRUN,68);
8533
8534 END LOOP;
8535
8536 END IF;
8537
8538
8539 IF ( NOT(p_LSDirNum = 'To Be Advised') ) THEN
8540 IF (trc_curMedTxCrEle > 0) THEN
8541 hr_utility.set_location('Processing single lump sum:'||p_LSDirNum,69);
8542 l_LSDirRec := null;
8543 l_LSDirRec.MedTxCrUsedOnLSDirRUN := LEAST(p_LSDirVal,trc_curMedTxCrEle);
8544 trc_curMedTxCrEle := trc_curMedTxCrEle - l_LSDirRec.MedTxCrUsedOnLSDirRUN;
8545 trc_LSDirTab(p_LSDirNum) := l_LSDirRec;
8546
8547 hr_utility.set_location('Single trc_curMedTxCrEle:'||trc_curMedTxCrEle,70);
8548 hr_utility.set_location('p_LSDirNum:'||p_LSDirNum,70);
8549 hr_utility.set_location('l_LSDirRec.MedTxCrUsedOnLSDirRUN:'||l_LSDirRec.MedTxCrUsedOnLSDirRUN,70);
8550 END IF;
8551 END IF;
8552
8553 hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,71);
8554 p_MedCrUsedLS :=trc_LSDirTab.count;
8555
8556 -- End Medical Tax Credit Lump Sum Changes
8557 hr_utility.set_location('End Medical Tax Credit Lump Sum Changes',72);
8558
8559 -- Start Medical Tax credit Changes
8560 l_TotMedTxCr_Upd := trc_MedTxCrUsedDR_Upd +
8561 trc_MedTxCrUsedNI_Upd +
8562 trc_MedTxCrUsedFB_Upd +
8563 trc_MedTxCrUsedTA_Upd +
8564 trc_MedTxCrUsedBP_Upd +
8565 trc_MedTxCrUsedAB_Upd +
8566 trc_MedTxCrUsedAP_Upd +
8567 trc_MedTxCrUsedPO_Upd +
8568 trc_MedTxCrUsedNtgAP_Upd +
8569 trc_MedTxCrUsedNtgEEDbt_Upd;
8570
8571 l_LSDirNum := trc_LSDirTab.first;
8572 while (l_LSDirNum is not null)
8573 loop
8574 l_TotMedTxCr_Upd := l_TotMedTxCr_Upd +trc_LSDirTab(l_LSDirNum).MedTxCrUsedOnLSDirRUN;
8575 l_LSDirNum := trc_LSDirTab.next(l_LSDirNum);
8576 end loop;
8577
8578 -- To allow refund incase of employee above 65
8579 -- or when balances in code 3810, 4005, 4474 is zero
8580 IF (l_TotMedTxCr_Upd < 0 and
8581 not py_za_tx_utl_01032012.AllowRefund(p_65Year => l_65Year)
8582 ) THEN
8583 LOOP
8584 -- Normal Earnings
8585 IF trc_MedTxCrUsedDR_Upd < 0 THEN
8586 l_MedTxCr_Adj := greatest(trc_MedTxCrUsedDR_Upd,l_TotMedTxCr_Upd);
8587 trc_MedTxCrUsedDR_Upd := trc_MedTxCrUsedDR_Upd - l_MedTxCr_Adj;
8588 l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8589 EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8590 END IF;
8591 IF trc_MedTxCrUsedNI_Upd < 0 THEN
8592 l_MedTxCr_Adj := greatest(trc_MedTxCrUsedNI_Upd,l_TotMedTxCr_Upd);
8593 trc_MedTxCrUsedNI_Upd := trc_MedTxCrUsedNI_Upd - l_MedTxCr_Adj;
8594 l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8595 EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8596 END IF;
8597 IF trc_MedTxCrUsedFB_Upd < 0 THEN
8598 l_MedTxCr_Adj := greatest(trc_MedTxCrUsedFB_Upd,l_TotMedTxCr_Upd);
8599 trc_MedTxCrUsedFB_Upd := trc_MedTxCrUsedFB_Upd - l_MedTxCr_Adj;
8600 l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8601 EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8602 END IF;
8603 IF trc_MedTxCrUsedTA_Upd < 0 THEN
8604 l_MedTxCr_Adj := greatest(trc_MedTxCrUsedTA_Upd,l_TotMedTxCr_Upd);
8605 trc_MedTxCrUsedTA_Upd := trc_MedTxCrUsedTA_Upd - l_MedTxCr_Adj;
8606 l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8607 EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8608 END IF;
8609 IF trc_MedTxCrUsedBP_Upd < 0 THEN
8610 l_MedTxCr_Adj := greatest(trc_MedTxCrUsedBP_Upd,l_TotMedTxCr_Upd);
8611 trc_MedTxCrUsedBP_Upd := trc_MedTxCrUsedBP_Upd - l_MedTxCr_Adj;
8612 l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8613 EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8614 END IF;
8615 IF trc_MedTxCrUsedAB_Upd < 0 THEN
8616 l_MedTxCr_Adj := greatest(trc_MedTxCrUsedAB_Upd,l_TotMedTxCr_Upd);
8617 trc_MedTxCrUsedAB_Upd := trc_MedTxCrUsedAB_Upd - l_MedTxCr_Adj;
8618 l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8619 EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8620 END IF;
8621 IF trc_MedTxCrUsedAP_Upd < 0 THEN
8622 l_MedTxCr_Adj := greatest(trc_MedTxCrUsedAP_Upd,l_TotMedTxCr_Upd);
8623 trc_MedTxCrUsedAP_Upd := trc_MedTxCrUsedAP_Upd - l_MedTxCr_Adj;
8624 l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8625 EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8626 END IF;
8627 IF trc_MedTxCrUsedPO_Upd < 0 THEN
8628 l_MedTxCr_Adj := greatest(trc_MedTxCrUsedPO_Upd,l_TotMedTxCr_Upd);
8629 trc_MedTxCrUsedPO_Upd := trc_MedTxCrUsedPO_Upd - l_MedTxCr_Adj;
8630 l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8631 EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8632 END IF;
8633 IF trc_MedTxCrUsedNtgAP_Upd < 0 THEN
8634 l_MedTxCr_Adj := greatest(trc_MedTxCrUsedNtgAP_Upd,l_TotMedTxCr_Upd);
8635 trc_MedTxCrUsedNtgAP_Upd := trc_MedTxCrUsedNtgAP_Upd - l_MedTxCr_Adj;
8636 l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8637 EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8638 END IF;
8639 IF trc_MedTxCrUsedNtgEEDbt_Upd < 0 THEN
8640 l_MedTxCr_Adj := greatest(trc_MedTxCrUsedNtgEEDbt_Upd,l_TotMedTxCr_Upd);
8641 trc_MedTxCrUsedNtgEEDbt_Upd := trc_MedTxCrUsedNtgEEDbt_Upd - l_MedTxCr_Adj;
8642 l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8643 EXIT WHEN (l_TotMedTxCr_Upd >=0) ;
8644 END IF;
8645 -- Lumpsum Directives
8646 l_LSDirNum := trc_LSDirTab.first;
8647 WHILE (l_LSDirNum is not null)
8648 LOOP
8649 l_TmpMedTxCr := trc_LSDirTab(l_LSDirNum).MedTxCrUsedOnLSDirRUN;
8650 IF (l_TmpMedTxCr < 0 ) THEN
8651 l_MedTxCr_Adj := greatest(l_TmpMedTxCr,l_TotMedTxCr_Upd);
8652 trc_LSDirTab(l_LSDirNum).MedTxCrUsedOnLSDirRUN := l_TmpMedTxCr - l_MedTxCr_Adj;
8653 l_TotMedTxCr_Upd := l_TotMedTxCr_Upd - l_MedTxCr_Adj;
8654 EXIT WHEN (l_TotMedTxCr_Upd >=0);
8655 END IF;
8656 l_LSDirNum := trc_LSDirTab.next(l_LSDirNum);
8657 END LOOP;
8658 EXIT;
8659 END LOOP;
8660 END IF;
8661
8662 IF (trc_CalTyp <> 'LteCalc') THEN
8663 p_MedCrUsedDR := trc_MedTxCrUsedDR_Upd + l_MdTxCrdtUDR_Adj;
8664 p_MedCrUsedNI := trc_MedTxCrUsedNI_Upd + l_MdTxCrdtUNi_Adj;
8665 p_MedCrUsedFB := trc_MedTxCrUsedFB_Upd + l_MdTxCrdtUFB_Adj;
8666 p_MedCrUsedTA := trc_MedTxCrUsedTA_Upd + l_MdTxCrdtUTA_Adj;
8667 p_MedCrUsedBP := trc_MedTxCrUsedBP_Upd + l_MdTxCrdtUBP_Adj;
8668 p_MedCrUsedAB := trc_MedTxCrUsedAB_Upd + l_MdTxCrdtUAB_Adj;
8669 p_MedCrUsedAP := trc_MedTxCrUsedAP_Upd + l_MdTxCrdtUAP_Adj;
8670 p_MedCrUsedPO := trc_MedTxCrUsedPO_Upd + l_MdTxCrdtUPO_Adj;
8671 p_MedCrUsedNtgAP := trc_MedTxCrUsedNtgAP_Upd + l_MdTxCrdtUNG_Adj;
8672 p_MedCrUsedNtgEEDbt := trc_MedTxCrUsedNtgEEDbt_Upd + l_MdTxCrdtUEE_Adj;
8673 ELSE
8674 p_MedCrUsedDR := 0;
8675 p_MedCrUsedNI := 0;
8676 p_MedCrUsedFB := 0;
8677 p_MedCrUsedTA := 0;
8678 p_MedCrUsedBP := 0;
8679 p_MedCrUsedAB := 0;
8680 p_MedCrUsedAP := 0;
8681 p_MedCrUsedPO := 0;
8682 p_MedCrUsedNtgAP := 0;
8683 p_MedCrUsedNtgEEDbt := 0;
8684 END IF;
8685
8686 hr_utility.set_location('p_MedCrUsedDR : '|| p_MedCrUsedDR,1000);
8687 hr_utility.set_location('p_MedCrUsedNI : '|| p_MedCrUsedNI,1000);
8688 hr_utility.set_location('p_MedCrUsedFB : '|| p_MedCrUsedFB,1000);
8689 hr_utility.set_location('p_MedCrUsedTA : '|| p_MedCrUsedTA,1000);
8690 hr_utility.set_location('p_MedCrUsedBP : '|| p_MedCrUsedBP,1000);
8691 hr_utility.set_location('p_MedCrUsedAB : '|| p_MedCrUsedAB,1000);
8692 hr_utility.set_location('p_MedCrUsedAP : '|| p_MedCrUsedAP,1000);
8693 hr_utility.set_location('p_MedCrUsedPO : '|| p_MedCrUsedPO,1000);
8694 hr_utility.set_location('p_MedCrUsedNtgAP : '|| p_MedCrUsedNtgAP,1000);
8695 hr_utility.set_location('p_MedCrUsedNtgEEDbt : '|| p_MedCrUsedNtgEEDbt,1000);
8696
8697 -- End Medical Tax credit Changes
8698
8699 -- Execute The Tax Trace
8700 --
8701 py_za_tx_utl_01032012.Trace;
8702
8703 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',65);
8704
8705 -- Clear Globals
8706 --
8707 py_za_tx_utl_01032012.ClearGlobals;
8708
8709 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',66);
8710
8711 -- End off Trace File
8712 WrtHrTrc('------------------------------------------------------------');
8713 WrtHrTrc('-- End of Tax Trace File --');
8714 WrtHrTrc('------------------------------------------------------------');
8715 WrtHrTrc(' -- ');
8716
8717 -- Call hr_utility stop procedure
8718 py_za_tx_utl_01032012.StopHrTrace;
8719
8720 --dbms_debug.debug_off;
8721
8722 RETURN l_Dum;
8723
8724 EXCEPTION
8725 WHEN xpt_FxdPrc THEN
8726 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',67);
8727 WrtHrTrc('Sql error msg: Fixed Percentage was not entered');
8728 py_za_tx_utl_01032012.StopHrTrace;
8729 hr_utility.set_message(801, 'Fixed Percentage not entered');
8730 py_za_tx_utl_01032012.ClearGlobals;
8731 hr_utility.raise_error;
8732 WHEN xpt_E THEN
8733 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',68);
8734 WrtHrTrc('xpt_Msg: '||xpt_Msg);
8735 py_za_tx_utl_01032012.StopHrTrace;
8736 hr_utility.set_message(801, xpt_Msg);
8737 py_za_tx_utl_01032012.ClearGlobals;
8738 hr_utility.raise_error;
8739 WHEN OTHERS THEN
8740 hr_utility.set_location('py_za_tx_01032012.ZaTx_01032012',69);
8741 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
8742 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
8743 py_za_tx_utl_01032012.StopHrTrace;
8744 hr_utility.set_message(801, 'ZaTx_01032012: '||TO_CHAR(SQLCODE));
8745 py_za_tx_utl_01032012.ClearGlobals;
8746 hr_utility.raise_error;
8747 END ZaTx_01032012;
8748
8749
8750 FUNCTION ZaTxMedTxCrLmpSm1_01032012(
8751 p_MedCrUsedLS OUT NOCOPY NUMBER
8752 , p_DirNum1 OUT NOCOPY VARCHAR2
8753 , p_MedTxCrUsed1 OUT NOCOPY NUMBER
8754 , p_DirNum2 OUT NOCOPY VARCHAR2
8755 , p_MedTxCrUsed2 OUT NOCOPY NUMBER
8756 , p_DirNum3 OUT NOCOPY VARCHAR2
8757 , p_MedTxCrUsed3 OUT NOCOPY NUMBER
8758 , p_DirNum4 OUT NOCOPY VARCHAR2
8759 , p_MedTxCrUsed4 OUT NOCOPY NUMBER
8760 , p_DirNum5 OUT NOCOPY VARCHAR2
8761 , p_MedTxCrUsed5 OUT NOCOPY NUMBER
8762 , p_DirNum6 OUT NOCOPY VARCHAR2
8763 , p_MedTxCrUsed6 OUT NOCOPY NUMBER
8764 , p_DirNum7 OUT NOCOPY VARCHAR2
8765 , p_MedTxCrUsed7 OUT NOCOPY NUMBER
8766 , p_DirNum8 OUT NOCOPY VARCHAR2
8767 , p_MedTxCrUsed8 OUT NOCOPY NUMBER
8768 , p_DirNum9 OUT NOCOPY VARCHAR2
8769 , p_MedTxCrUsed9 OUT NOCOPY NUMBER
8770 , p_DirNum10 OUT NOCOPY VARCHAR2
8771 , p_MedTxCrUsed10 OUT NOCOPY NUMBER
8772 )RETURN NUMBER
8773 AS
8774
8775 l_chunk number :=1;
8776 l_dir_st number := 1;
8777 l_dir_end number := 10;
8778 l_ls_dirnum varchar2(100);
8779 l_cur_max_dir number;
8780 l_count number :=0;
8781
8782
8783 BEGIN
8784 py_za_tx_utl_01032012.StartHrTrace;
8785 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm1_01032012',1);
8786
8787 p_DirNum1 :=' ';
8788 p_MedTxCrUsed1 :=0;
8789 p_DirNum2 :=' ';
8790 p_MedTxCrUsed2 :=0;
8791 p_DirNum3 :=' ';
8792 p_MedTxCrUsed3 :=0;
8793 p_DirNum4 :=' ';
8794 p_MedTxCrUsed4 :=0;
8795 p_DirNum5 :=' ';
8796 p_MedTxCrUsed5 :=0;
8797 p_DirNum6 :=' ';
8798 p_MedTxCrUsed6 :=0;
8799 p_DirNum7 :=' ';
8800 p_MedTxCrUsed7 :=0;
8801 p_DirNum8 :=' ';
8802 p_MedTxCrUsed8 :=0;
8803 p_DirNum9 :=' ';
8804 p_MedTxCrUsed9 :=0;
8805 p_DirNum10 :=' ';
8806 p_MedTxCrUsed10 :=0;
8807
8808 l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
8809 hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
8810
8811 l_ls_dirnum := trc_LSDirTab.first;
8812 while (l_ls_dirnum is not null)
8813 loop
8814 hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
8815 hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
8816 l_count := l_count+1;
8817 IF (l_count = l_dir_st) THEN
8818 p_DirNum1 := l_ls_dirnum;
8819 p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8820 ELSIF (l_count = l_dir_st +1) THEN
8821 p_DirNum2 := l_ls_dirnum;
8822 p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8823 ELSIF (l_count = l_dir_st +2) THEN
8824 p_DirNum3 := l_ls_dirnum;
8825 p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8826 ELSIF (l_count = l_dir_st +3) THEN
8827 p_DirNum4 := l_ls_dirnum;
8828 p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8829 ELSIF (l_count = l_dir_st +4) THEN
8830 p_DirNum5 := l_ls_dirnum;
8831 p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8832 ELSIF (l_count = l_dir_st +5) THEN
8833 p_DirNum6 := l_ls_dirnum;
8834 p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8835 ELSIF (l_count = l_dir_st +6) THEN
8836 p_DirNum7 := l_ls_dirnum;
8837 p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8838 ELSIF (l_count = l_dir_st +7) THEN
8839 p_DirNum8 := l_ls_dirnum;
8840 p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8841 ELSIF (l_count = l_dir_st +8) THEN
8842 p_DirNum9 := l_ls_dirnum;
8843 p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8844 ELSIF (l_count = l_dir_st +9) THEN
8845 p_DirNum10 := l_ls_dirnum;
8846 p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8847 END IF;
8848
8849 IF (l_count = l_cur_max_dir) THEN
8850 EXIT;
8851 END IF;
8852 l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
8853 end loop;
8854
8855 p_MedCrUsedLS := l_cur_max_dir;
8856 hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
8857 hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
8858
8859 py_za_tx_utl_01032012.StopHrTrace;
8860
8861 RETURN 1;
8862
8863 EXCEPTION
8864 WHEN OTHERS THEN
8865 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm1_01032012',50);
8866 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
8867 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
8868 py_za_tx_utl_01032012.StopHrTrace;
8869 hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm1_01032012: '||TO_CHAR(SQLCODE));
8870 hr_utility.raise_error;
8871 END ZaTxMedTxCrLmpSm1_01032012;
8872
8873 FUNCTION ZaTxMedTxCrLmpSm2_01032012(
8874 p_MedCrUsedLS OUT NOCOPY NUMBER
8875 , p_DirNum1 OUT NOCOPY VARCHAR2
8876 , p_MedTxCrUsed1 OUT NOCOPY NUMBER
8877 , p_DirNum2 OUT NOCOPY VARCHAR2
8878 , p_MedTxCrUsed2 OUT NOCOPY NUMBER
8879 , p_DirNum3 OUT NOCOPY VARCHAR2
8880 , p_MedTxCrUsed3 OUT NOCOPY NUMBER
8881 , p_DirNum4 OUT NOCOPY VARCHAR2
8882 , p_MedTxCrUsed4 OUT NOCOPY NUMBER
8883 , p_DirNum5 OUT NOCOPY VARCHAR2
8884 , p_MedTxCrUsed5 OUT NOCOPY NUMBER
8885 , p_DirNum6 OUT NOCOPY VARCHAR2
8886 , p_MedTxCrUsed6 OUT NOCOPY NUMBER
8887 , p_DirNum7 OUT NOCOPY VARCHAR2
8888 , p_MedTxCrUsed7 OUT NOCOPY NUMBER
8889 , p_DirNum8 OUT NOCOPY VARCHAR2
8890 , p_MedTxCrUsed8 OUT NOCOPY NUMBER
8891 , p_DirNum9 OUT NOCOPY VARCHAR2
8892 , p_MedTxCrUsed9 OUT NOCOPY NUMBER
8893 , p_DirNum10 OUT NOCOPY VARCHAR2
8894 , p_MedTxCrUsed10 OUT NOCOPY NUMBER
8895 )RETURN NUMBER
8896 AS
8897
8898 l_chunk number :=2;
8899 l_dir_st number := 11;
8900 l_dir_end number := 20;
8901 l_ls_dirnum varchar2(100);
8902 l_cur_max_dir number;
8903 l_count number :=0;
8904
8905
8906 BEGIN
8907 py_za_tx_utl_01032012.StartHrTrace;
8908 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm2_01032012',1);
8909
8910 p_DirNum1 :=' ';
8911 p_MedTxCrUsed1 :=0;
8912 p_DirNum2 :=' ';
8913 p_MedTxCrUsed2 :=0;
8914 p_DirNum3 :=' ';
8915 p_MedTxCrUsed3 :=0;
8916 p_DirNum4 :=' ';
8917 p_MedTxCrUsed4 :=0;
8918 p_DirNum5 :=' ';
8919 p_MedTxCrUsed5 :=0;
8920 p_DirNum6 :=' ';
8921 p_MedTxCrUsed6 :=0;
8922 p_DirNum7 :=' ';
8923 p_MedTxCrUsed7 :=0;
8924 p_DirNum8 :=' ';
8925 p_MedTxCrUsed8 :=0;
8926 p_DirNum9 :=' ';
8927 p_MedTxCrUsed9 :=0;
8928 p_DirNum10 :=' ';
8929 p_MedTxCrUsed10 :=0;
8930
8931 l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
8932 hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
8933
8934 l_ls_dirnum := trc_LSDirTab.first;
8935 while (l_ls_dirnum is not null)
8936 loop
8937 hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
8938 hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
8939 l_count := l_count+1;
8940 IF (l_count = l_dir_st) THEN
8941 p_DirNum1 := l_ls_dirnum;
8942 p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8943 ELSIF (l_count = l_dir_st +1) THEN
8944 p_DirNum2 := l_ls_dirnum;
8945 p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8946 ELSIF (l_count = l_dir_st +2) THEN
8947 p_DirNum3 := l_ls_dirnum;
8948 p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8949 ELSIF (l_count = l_dir_st +3) THEN
8950 p_DirNum4 := l_ls_dirnum;
8951 p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8952 ELSIF (l_count = l_dir_st +4) THEN
8953 p_DirNum5 := l_ls_dirnum;
8954 p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8955 ELSIF (l_count = l_dir_st +5) THEN
8956 p_DirNum6 := l_ls_dirnum;
8957 p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8958 ELSIF (l_count = l_dir_st +6) THEN
8959 p_DirNum7 := l_ls_dirnum;
8960 p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8961 ELSIF (l_count = l_dir_st +7) THEN
8962 p_DirNum8 := l_ls_dirnum;
8963 p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8964 ELSIF (l_count = l_dir_st +8) THEN
8965 p_DirNum9 := l_ls_dirnum;
8966 p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8967 ELSIF (l_count = l_dir_st +9) THEN
8968 p_DirNum10 := l_ls_dirnum;
8969 p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
8970 END IF;
8971
8972 IF (l_count = l_cur_max_dir) THEN
8973 EXIT;
8974 END IF;
8975 l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
8976 end loop;
8977
8978 p_MedCrUsedLS := l_cur_max_dir;
8979 hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
8980 hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
8981
8982 py_za_tx_utl_01032012.StopHrTrace;
8983
8984 RETURN 1;
8985
8986 EXCEPTION
8987 WHEN OTHERS THEN
8988 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm2_01032012',50);
8989 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
8990 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
8991 py_za_tx_utl_01032012.StopHrTrace;
8992 hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm2_01032012: '||TO_CHAR(SQLCODE));
8993 hr_utility.raise_error;
8994 END ZaTxMedTxCrLmpSm2_01032012;
8995
8996 FUNCTION ZaTxMedTxCrLmpSm3_01032012(
8997 p_MedCrUsedLS OUT NOCOPY NUMBER
8998 , p_DirNum1 OUT NOCOPY VARCHAR2
8999 , p_MedTxCrUsed1 OUT NOCOPY NUMBER
9000 , p_DirNum2 OUT NOCOPY VARCHAR2
9001 , p_MedTxCrUsed2 OUT NOCOPY NUMBER
9002 , p_DirNum3 OUT NOCOPY VARCHAR2
9003 , p_MedTxCrUsed3 OUT NOCOPY NUMBER
9004 , p_DirNum4 OUT NOCOPY VARCHAR2
9005 , p_MedTxCrUsed4 OUT NOCOPY NUMBER
9006 , p_DirNum5 OUT NOCOPY VARCHAR2
9007 , p_MedTxCrUsed5 OUT NOCOPY NUMBER
9008 , p_DirNum6 OUT NOCOPY VARCHAR2
9009 , p_MedTxCrUsed6 OUT NOCOPY NUMBER
9010 , p_DirNum7 OUT NOCOPY VARCHAR2
9011 , p_MedTxCrUsed7 OUT NOCOPY NUMBER
9012 , p_DirNum8 OUT NOCOPY VARCHAR2
9013 , p_MedTxCrUsed8 OUT NOCOPY NUMBER
9014 , p_DirNum9 OUT NOCOPY VARCHAR2
9015 , p_MedTxCrUsed9 OUT NOCOPY NUMBER
9016 , p_DirNum10 OUT NOCOPY VARCHAR2
9017 , p_MedTxCrUsed10 OUT NOCOPY NUMBER
9018 )RETURN NUMBER
9019 AS
9020
9021 l_chunk number :=3;
9022 l_dir_st number := 21;
9023 l_dir_end number := 30;
9024 l_ls_dirnum varchar2(100);
9025 l_cur_max_dir number;
9026 l_count number :=0;
9027
9028
9029 BEGIN
9030 py_za_tx_utl_01032012.StartHrTrace;
9031 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm3_01032012',1);
9032
9033 p_DirNum1 :=' ';
9034 p_MedTxCrUsed1 :=0;
9035 p_DirNum2 :=' ';
9036 p_MedTxCrUsed2 :=0;
9037 p_DirNum3 :=' ';
9038 p_MedTxCrUsed3 :=0;
9039 p_DirNum4 :=' ';
9040 p_MedTxCrUsed4 :=0;
9041 p_DirNum5 :=' ';
9042 p_MedTxCrUsed5 :=0;
9043 p_DirNum6 :=' ';
9044 p_MedTxCrUsed6 :=0;
9045 p_DirNum7 :=' ';
9046 p_MedTxCrUsed7 :=0;
9047 p_DirNum8 :=' ';
9048 p_MedTxCrUsed8 :=0;
9049 p_DirNum9 :=' ';
9050 p_MedTxCrUsed9 :=0;
9051 p_DirNum10 :=' ';
9052 p_MedTxCrUsed10 :=0;
9053
9054 l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
9055 hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
9056
9057 l_ls_dirnum := trc_LSDirTab.first;
9058 while (l_ls_dirnum is not null)
9059 loop
9060 hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
9061 hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
9062 l_count := l_count+1;
9063 IF (l_count = l_dir_st) THEN
9064 p_DirNum1 := l_ls_dirnum;
9065 p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9066 ELSIF (l_count = l_dir_st +1) THEN
9067 p_DirNum2 := l_ls_dirnum;
9068 p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9069 ELSIF (l_count = l_dir_st +2) THEN
9070 p_DirNum3 := l_ls_dirnum;
9071 p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9072 ELSIF (l_count = l_dir_st +3) THEN
9073 p_DirNum4 := l_ls_dirnum;
9074 p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9075 ELSIF (l_count = l_dir_st +4) THEN
9076 p_DirNum5 := l_ls_dirnum;
9077 p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9078 ELSIF (l_count = l_dir_st +5) THEN
9079 p_DirNum6 := l_ls_dirnum;
9080 p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9081 ELSIF (l_count = l_dir_st +6) THEN
9082 p_DirNum7 := l_ls_dirnum;
9083 p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9084 ELSIF (l_count = l_dir_st +7) THEN
9085 p_DirNum8 := l_ls_dirnum;
9086 p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9087 ELSIF (l_count = l_dir_st +8) THEN
9088 p_DirNum9 := l_ls_dirnum;
9089 p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9090 ELSIF (l_count = l_dir_st +9) THEN
9091 p_DirNum10 := l_ls_dirnum;
9092 p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9093 END IF;
9094
9095 IF (l_count = l_cur_max_dir) THEN
9096 EXIT;
9097 END IF;
9098 l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
9099 end loop;
9100
9101 p_MedCrUsedLS := l_cur_max_dir;
9102 hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
9103 hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
9104
9105 py_za_tx_utl_01032012.StopHrTrace;
9106
9107 RETURN 1;
9108
9109 EXCEPTION
9110 WHEN OTHERS THEN
9111 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm3_01032012',50);
9112 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
9113 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
9114 py_za_tx_utl_01032012.StopHrTrace;
9115 hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm3_01032012: '||TO_CHAR(SQLCODE));
9116 hr_utility.raise_error;
9117 END ZaTxMedTxCrLmpSm3_01032012;
9118
9119
9120 FUNCTION ZaTxMedTxCrLmpSm4_01032012(
9121 p_MedCrUsedLS OUT NOCOPY NUMBER
9122 , p_DirNum1 OUT NOCOPY VARCHAR2
9123 , p_MedTxCrUsed1 OUT NOCOPY NUMBER
9124 , p_DirNum2 OUT NOCOPY VARCHAR2
9125 , p_MedTxCrUsed2 OUT NOCOPY NUMBER
9126 , p_DirNum3 OUT NOCOPY VARCHAR2
9127 , p_MedTxCrUsed3 OUT NOCOPY NUMBER
9128 , p_DirNum4 OUT NOCOPY VARCHAR2
9129 , p_MedTxCrUsed4 OUT NOCOPY NUMBER
9130 , p_DirNum5 OUT NOCOPY VARCHAR2
9131 , p_MedTxCrUsed5 OUT NOCOPY NUMBER
9132 , p_DirNum6 OUT NOCOPY VARCHAR2
9133 , p_MedTxCrUsed6 OUT NOCOPY NUMBER
9134 , p_DirNum7 OUT NOCOPY VARCHAR2
9135 , p_MedTxCrUsed7 OUT NOCOPY NUMBER
9136 , p_DirNum8 OUT NOCOPY VARCHAR2
9137 , p_MedTxCrUsed8 OUT NOCOPY NUMBER
9138 , p_DirNum9 OUT NOCOPY VARCHAR2
9139 , p_MedTxCrUsed9 OUT NOCOPY NUMBER
9140 , p_DirNum10 OUT NOCOPY VARCHAR2
9141 , p_MedTxCrUsed10 OUT NOCOPY NUMBER
9142 )RETURN NUMBER
9143 AS
9144
9145 l_chunk number :=4;
9146 l_dir_st number := 31;
9147 l_dir_end number := 40;
9148 l_ls_dirnum varchar2(100);
9149 l_cur_max_dir number;
9150 l_count number :=0;
9151
9152
9153 BEGIN
9154 py_za_tx_utl_01032012.StartHrTrace;
9155 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm4_01032012',1);
9156
9157 p_DirNum1 :=' ';
9158 p_MedTxCrUsed1 :=0;
9159 p_DirNum2 :=' ';
9160 p_MedTxCrUsed2 :=0;
9161 p_DirNum3 :=' ';
9162 p_MedTxCrUsed3 :=0;
9163 p_DirNum4 :=' ';
9164 p_MedTxCrUsed4 :=0;
9165 p_DirNum5 :=' ';
9166 p_MedTxCrUsed5 :=0;
9167 p_DirNum6 :=' ';
9168 p_MedTxCrUsed6 :=0;
9169 p_DirNum7 :=' ';
9170 p_MedTxCrUsed7 :=0;
9171 p_DirNum8 :=' ';
9172 p_MedTxCrUsed8 :=0;
9173 p_DirNum9 :=' ';
9174 p_MedTxCrUsed9 :=0;
9175 p_DirNum10 :=' ';
9176 p_MedTxCrUsed10 :=0;
9177
9178 l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
9179 hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
9180
9181 l_ls_dirnum := trc_LSDirTab.first;
9182 while (l_ls_dirnum is not null)
9183 loop
9184 hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
9185 hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
9186 l_count := l_count+1;
9187 IF (l_count = l_dir_st) THEN
9188 p_DirNum1 := l_ls_dirnum;
9189 p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9190 ELSIF (l_count = l_dir_st +1) THEN
9191 p_DirNum2 := l_ls_dirnum;
9192 p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9193 ELSIF (l_count = l_dir_st +2) THEN
9194 p_DirNum3 := l_ls_dirnum;
9195 p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9196 ELSIF (l_count = l_dir_st +3) THEN
9197 p_DirNum4 := l_ls_dirnum;
9198 p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9199 ELSIF (l_count = l_dir_st +4) THEN
9200 p_DirNum5 := l_ls_dirnum;
9201 p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9202 ELSIF (l_count = l_dir_st +5) THEN
9203 p_DirNum6 := l_ls_dirnum;
9204 p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9205 ELSIF (l_count = l_dir_st +6) THEN
9206 p_DirNum7 := l_ls_dirnum;
9207 p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9208 ELSIF (l_count = l_dir_st +7) THEN
9209 p_DirNum8 := l_ls_dirnum;
9210 p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9211 ELSIF (l_count = l_dir_st +8) THEN
9212 p_DirNum9 := l_ls_dirnum;
9213 p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9214 ELSIF (l_count = l_dir_st +9) THEN
9215 p_DirNum10 := l_ls_dirnum;
9216 p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9217 END IF;
9218
9219 IF (l_count = l_cur_max_dir) THEN
9220 EXIT;
9221 END IF;
9222 l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
9223 end loop;
9224
9225 p_MedCrUsedLS := l_cur_max_dir;
9226 hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
9227 hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
9228
9229 py_za_tx_utl_01032012.StopHrTrace;
9230
9231 RETURN 1;
9232
9233 EXCEPTION
9234 WHEN OTHERS THEN
9235 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm4_01032012',50);
9236 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
9237 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
9238 py_za_tx_utl_01032012.StopHrTrace;
9239 hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm4_01032012: '||TO_CHAR(SQLCODE));
9240 hr_utility.raise_error;
9241 END ZaTxMedTxCrLmpSm4_01032012;
9242
9243 FUNCTION ZaTxMedTxCrLmpSm5_01032012(
9244 p_MedCrUsedLS OUT NOCOPY NUMBER
9245 , p_DirNum1 OUT NOCOPY VARCHAR2
9246 , p_MedTxCrUsed1 OUT NOCOPY NUMBER
9247 , p_DirNum2 OUT NOCOPY VARCHAR2
9248 , p_MedTxCrUsed2 OUT NOCOPY NUMBER
9249 , p_DirNum3 OUT NOCOPY VARCHAR2
9250 , p_MedTxCrUsed3 OUT NOCOPY NUMBER
9251 , p_DirNum4 OUT NOCOPY VARCHAR2
9252 , p_MedTxCrUsed4 OUT NOCOPY NUMBER
9253 , p_DirNum5 OUT NOCOPY VARCHAR2
9254 , p_MedTxCrUsed5 OUT NOCOPY NUMBER
9255 , p_DirNum6 OUT NOCOPY VARCHAR2
9256 , p_MedTxCrUsed6 OUT NOCOPY NUMBER
9257 , p_DirNum7 OUT NOCOPY VARCHAR2
9258 , p_MedTxCrUsed7 OUT NOCOPY NUMBER
9259 , p_DirNum8 OUT NOCOPY VARCHAR2
9260 , p_MedTxCrUsed8 OUT NOCOPY NUMBER
9261 , p_DirNum9 OUT NOCOPY VARCHAR2
9262 , p_MedTxCrUsed9 OUT NOCOPY NUMBER
9263 , p_DirNum10 OUT NOCOPY VARCHAR2
9264 , p_MedTxCrUsed10 OUT NOCOPY NUMBER
9265 )RETURN NUMBER
9266 AS
9267
9268 l_chunk number :=5;
9269 l_dir_st number := 41;
9270 l_dir_end number := 50;
9271 l_ls_dirnum varchar2(100);
9272 l_cur_max_dir number;
9273 l_count number :=0;
9274
9275
9276 BEGIN
9277 py_za_tx_utl_01032012.StartHrTrace;
9278 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm5_01032012',1);
9279
9280 p_DirNum1 :=' ';
9281 p_MedTxCrUsed1 :=0;
9282 p_DirNum2 :=' ';
9283 p_MedTxCrUsed2 :=0;
9284 p_DirNum3 :=' ';
9285 p_MedTxCrUsed3 :=0;
9286 p_DirNum4 :=' ';
9287 p_MedTxCrUsed4 :=0;
9288 p_DirNum5 :=' ';
9289 p_MedTxCrUsed5 :=0;
9290 p_DirNum6 :=' ';
9291 p_MedTxCrUsed6 :=0;
9292 p_DirNum7 :=' ';
9293 p_MedTxCrUsed7 :=0;
9294 p_DirNum8 :=' ';
9295 p_MedTxCrUsed8 :=0;
9296 p_DirNum9 :=' ';
9297 p_MedTxCrUsed9 :=0;
9298 p_DirNum10 :=' ';
9299 p_MedTxCrUsed10 :=0;
9300
9301 l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
9302 hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
9303
9304 l_ls_dirnum := trc_LSDirTab.first;
9305 while (l_ls_dirnum is not null)
9306 loop
9307 hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
9308 hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
9309 l_count := l_count+1;
9310 IF (l_count = l_dir_st) THEN
9311 p_DirNum1 := l_ls_dirnum;
9312 p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9313 ELSIF (l_count = l_dir_st +1) THEN
9314 p_DirNum2 := l_ls_dirnum;
9315 p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9316 ELSIF (l_count = l_dir_st +2) THEN
9317 p_DirNum3 := l_ls_dirnum;
9318 p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9319 ELSIF (l_count = l_dir_st +3) THEN
9320 p_DirNum4 := l_ls_dirnum;
9321 p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9322 ELSIF (l_count = l_dir_st +4) THEN
9323 p_DirNum5 := l_ls_dirnum;
9324 p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9325 ELSIF (l_count = l_dir_st +5) THEN
9326 p_DirNum6 := l_ls_dirnum;
9327 p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9328 ELSIF (l_count = l_dir_st +6) THEN
9329 p_DirNum7 := l_ls_dirnum;
9330 p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9331 ELSIF (l_count = l_dir_st +7) THEN
9332 p_DirNum8 := l_ls_dirnum;
9333 p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9334 ELSIF (l_count = l_dir_st +8) THEN
9335 p_DirNum9 := l_ls_dirnum;
9336 p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9337 ELSIF (l_count = l_dir_st +9) THEN
9338 p_DirNum10 := l_ls_dirnum;
9339 p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9340 END IF;
9341
9342 IF (l_count = l_cur_max_dir) THEN
9343 EXIT;
9344 END IF;
9345 l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
9346 end loop;
9347
9348 p_MedCrUsedLS := l_cur_max_dir;
9349 hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
9350 hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
9351
9352 py_za_tx_utl_01032012.StopHrTrace;
9353
9354 RETURN 1;
9355
9356 EXCEPTION
9357 WHEN OTHERS THEN
9358 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm5_01032012',50);
9359 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
9360 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
9361 py_za_tx_utl_01032012.StopHrTrace;
9362 hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm5_01032012: '||TO_CHAR(SQLCODE));
9363 hr_utility.raise_error;
9364 END ZaTxMedTxCrLmpSm5_01032012;
9365
9366 FUNCTION ZaTxMedTxCrLmpSm6_01032012(
9367 p_MedCrUsedLS OUT NOCOPY NUMBER
9368 , p_DirNum1 OUT NOCOPY VARCHAR2
9369 , p_MedTxCrUsed1 OUT NOCOPY NUMBER
9370 , p_DirNum2 OUT NOCOPY VARCHAR2
9371 , p_MedTxCrUsed2 OUT NOCOPY NUMBER
9372 , p_DirNum3 OUT NOCOPY VARCHAR2
9373 , p_MedTxCrUsed3 OUT NOCOPY NUMBER
9374 , p_DirNum4 OUT NOCOPY VARCHAR2
9375 , p_MedTxCrUsed4 OUT NOCOPY NUMBER
9376 , p_DirNum5 OUT NOCOPY VARCHAR2
9377 , p_MedTxCrUsed5 OUT NOCOPY NUMBER
9378 , p_DirNum6 OUT NOCOPY VARCHAR2
9379 , p_MedTxCrUsed6 OUT NOCOPY NUMBER
9380 , p_DirNum7 OUT NOCOPY VARCHAR2
9381 , p_MedTxCrUsed7 OUT NOCOPY NUMBER
9382 , p_DirNum8 OUT NOCOPY VARCHAR2
9383 , p_MedTxCrUsed8 OUT NOCOPY NUMBER
9384 , p_DirNum9 OUT NOCOPY VARCHAR2
9385 , p_MedTxCrUsed9 OUT NOCOPY NUMBER
9386 , p_DirNum10 OUT NOCOPY VARCHAR2
9387 , p_MedTxCrUsed10 OUT NOCOPY NUMBER
9388 )RETURN NUMBER
9389 AS
9390
9391 l_chunk number :=6;
9392 l_dir_st number := 51;
9393 l_dir_end number := 60;
9394 l_ls_dirnum varchar2(100);
9395 l_cur_max_dir number;
9396 l_count number :=0;
9397
9398
9399 BEGIN
9400 py_za_tx_utl_01032012.StartHrTrace;
9401 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm6_01032012',1);
9402
9403 p_DirNum1 :=' ';
9404 p_MedTxCrUsed1 :=0;
9405 p_DirNum2 :=' ';
9406 p_MedTxCrUsed2 :=0;
9407 p_DirNum3 :=' ';
9408 p_MedTxCrUsed3 :=0;
9409 p_DirNum4 :=' ';
9410 p_MedTxCrUsed4 :=0;
9411 p_DirNum5 :=' ';
9412 p_MedTxCrUsed5 :=0;
9413 p_DirNum6 :=' ';
9414 p_MedTxCrUsed6 :=0;
9415 p_DirNum7 :=' ';
9416 p_MedTxCrUsed7 :=0;
9417 p_DirNum8 :=' ';
9418 p_MedTxCrUsed8 :=0;
9419 p_DirNum9 :=' ';
9420 p_MedTxCrUsed9 :=0;
9421 p_DirNum10 :=' ';
9422 p_MedTxCrUsed10 :=0;
9423
9424 l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
9425 hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
9426
9427 l_ls_dirnum := trc_LSDirTab.first;
9428 while (l_ls_dirnum is not null)
9429 loop
9430 hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
9431 hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
9432 l_count := l_count+1;
9433 IF (l_count = l_dir_st) THEN
9434 p_DirNum1 := l_ls_dirnum;
9435 p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9436 ELSIF (l_count = l_dir_st +1) THEN
9437 p_DirNum2 := l_ls_dirnum;
9438 p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9439 ELSIF (l_count = l_dir_st +2) THEN
9440 p_DirNum3 := l_ls_dirnum;
9441 p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9442 ELSIF (l_count = l_dir_st +3) THEN
9443 p_DirNum4 := l_ls_dirnum;
9444 p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9445 ELSIF (l_count = l_dir_st +4) THEN
9446 p_DirNum5 := l_ls_dirnum;
9447 p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9448 ELSIF (l_count = l_dir_st +5) THEN
9449 p_DirNum6 := l_ls_dirnum;
9450 p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9451 ELSIF (l_count = l_dir_st +6) THEN
9452 p_DirNum7 := l_ls_dirnum;
9453 p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9454 ELSIF (l_count = l_dir_st +7) THEN
9455 p_DirNum8 := l_ls_dirnum;
9456 p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9457 ELSIF (l_count = l_dir_st +8) THEN
9458 p_DirNum9 := l_ls_dirnum;
9459 p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9460 ELSIF (l_count = l_dir_st +9) THEN
9461 p_DirNum10 := l_ls_dirnum;
9462 p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9463 END IF;
9464
9465 IF (l_count = l_cur_max_dir) THEN
9466 EXIT;
9467 END IF;
9468 l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
9469 end loop;
9470
9471 p_MedCrUsedLS := l_cur_max_dir;
9472 hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
9473 hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
9474
9475 py_za_tx_utl_01032012.StopHrTrace;
9476
9477 RETURN 1;
9478
9479 EXCEPTION
9480 WHEN OTHERS THEN
9481 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm6_01032012',50);
9482 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
9483 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
9484 py_za_tx_utl_01032012.StopHrTrace;
9485 hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm6_01032012: '||TO_CHAR(SQLCODE));
9486 hr_utility.raise_error;
9487 END ZaTxMedTxCrLmpSm6_01032012;
9488
9489
9490 FUNCTION ZaTxMedTxCrLmpSm7_01032012(
9491 p_MedCrUsedLS OUT NOCOPY NUMBER
9492 , p_DirNum1 OUT NOCOPY VARCHAR2
9493 , p_MedTxCrUsed1 OUT NOCOPY NUMBER
9494 , p_DirNum2 OUT NOCOPY VARCHAR2
9495 , p_MedTxCrUsed2 OUT NOCOPY NUMBER
9496 , p_DirNum3 OUT NOCOPY VARCHAR2
9497 , p_MedTxCrUsed3 OUT NOCOPY NUMBER
9498 , p_DirNum4 OUT NOCOPY VARCHAR2
9499 , p_MedTxCrUsed4 OUT NOCOPY NUMBER
9500 , p_DirNum5 OUT NOCOPY VARCHAR2
9501 , p_MedTxCrUsed5 OUT NOCOPY NUMBER
9502 , p_DirNum6 OUT NOCOPY VARCHAR2
9503 , p_MedTxCrUsed6 OUT NOCOPY NUMBER
9504 , p_DirNum7 OUT NOCOPY VARCHAR2
9505 , p_MedTxCrUsed7 OUT NOCOPY NUMBER
9506 , p_DirNum8 OUT NOCOPY VARCHAR2
9507 , p_MedTxCrUsed8 OUT NOCOPY NUMBER
9508 , p_DirNum9 OUT NOCOPY VARCHAR2
9509 , p_MedTxCrUsed9 OUT NOCOPY NUMBER
9510 , p_DirNum10 OUT NOCOPY VARCHAR2
9511 , p_MedTxCrUsed10 OUT NOCOPY NUMBER
9512 )RETURN NUMBER
9513 AS
9514
9515 l_chunk number :=7;
9516 l_dir_st number := 61;
9517 l_dir_end number := 70;
9518 l_ls_dirnum varchar2(100);
9519 l_cur_max_dir number;
9520 l_count number :=0;
9521
9522
9523 BEGIN
9524 py_za_tx_utl_01032012.StartHrTrace;
9525 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm7_01032012',1);
9526
9527 p_DirNum1 :=' ';
9528 p_MedTxCrUsed1 :=0;
9529 p_DirNum2 :=' ';
9530 p_MedTxCrUsed2 :=0;
9531 p_DirNum3 :=' ';
9532 p_MedTxCrUsed3 :=0;
9533 p_DirNum4 :=' ';
9534 p_MedTxCrUsed4 :=0;
9535 p_DirNum5 :=' ';
9536 p_MedTxCrUsed5 :=0;
9537 p_DirNum6 :=' ';
9538 p_MedTxCrUsed6 :=0;
9539 p_DirNum7 :=' ';
9540 p_MedTxCrUsed7 :=0;
9541 p_DirNum8 :=' ';
9542 p_MedTxCrUsed8 :=0;
9543 p_DirNum9 :=' ';
9544 p_MedTxCrUsed9 :=0;
9545 p_DirNum10 :=' ';
9546 p_MedTxCrUsed10 :=0;
9547
9548 l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
9549 hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
9550
9551 l_ls_dirnum := trc_LSDirTab.first;
9552 while (l_ls_dirnum is not null)
9553 loop
9554 hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
9555 hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
9556 l_count := l_count+1;
9557 IF (l_count = l_dir_st) THEN
9558 p_DirNum1 := l_ls_dirnum;
9559 p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9560 ELSIF (l_count = l_dir_st +1) THEN
9561 p_DirNum2 := l_ls_dirnum;
9562 p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9563 ELSIF (l_count = l_dir_st +2) THEN
9564 p_DirNum3 := l_ls_dirnum;
9565 p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9566 ELSIF (l_count = l_dir_st +3) THEN
9567 p_DirNum4 := l_ls_dirnum;
9568 p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9569 ELSIF (l_count = l_dir_st +4) THEN
9570 p_DirNum5 := l_ls_dirnum;
9571 p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9572 ELSIF (l_count = l_dir_st +5) THEN
9573 p_DirNum6 := l_ls_dirnum;
9574 p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9575 ELSIF (l_count = l_dir_st +6) THEN
9576 p_DirNum7 := l_ls_dirnum;
9577 p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9578 ELSIF (l_count = l_dir_st +7) THEN
9579 p_DirNum8 := l_ls_dirnum;
9580 p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9581 ELSIF (l_count = l_dir_st +8) THEN
9582 p_DirNum9 := l_ls_dirnum;
9583 p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9584 ELSIF (l_count = l_dir_st +9) THEN
9585 p_DirNum10 := l_ls_dirnum;
9586 p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9587 END IF;
9588
9589 IF (l_count = l_cur_max_dir) THEN
9590 EXIT;
9591 END IF;
9592 l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
9593 end loop;
9594
9595 p_MedCrUsedLS := l_cur_max_dir;
9596 hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
9597 hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
9598
9599 py_za_tx_utl_01032012.StopHrTrace;
9600
9601 RETURN 1;
9602
9603 EXCEPTION
9604 WHEN OTHERS THEN
9605 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm7_01032012',50);
9606 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
9607 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
9608 py_za_tx_utl_01032012.StopHrTrace;
9609 hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm7_01032012: '||TO_CHAR(SQLCODE));
9610 hr_utility.raise_error;
9611 END ZaTxMedTxCrLmpSm7_01032012;
9612
9613
9614 FUNCTION ZaTxMedTxCrLmpSm8_01032012(
9615 p_MedCrUsedLS OUT NOCOPY NUMBER
9616 , p_DirNum1 OUT NOCOPY VARCHAR2
9617 , p_MedTxCrUsed1 OUT NOCOPY NUMBER
9618 , p_DirNum2 OUT NOCOPY VARCHAR2
9619 , p_MedTxCrUsed2 OUT NOCOPY NUMBER
9620 , p_DirNum3 OUT NOCOPY VARCHAR2
9621 , p_MedTxCrUsed3 OUT NOCOPY NUMBER
9622 , p_DirNum4 OUT NOCOPY VARCHAR2
9623 , p_MedTxCrUsed4 OUT NOCOPY NUMBER
9624 , p_DirNum5 OUT NOCOPY VARCHAR2
9625 , p_MedTxCrUsed5 OUT NOCOPY NUMBER
9626 , p_DirNum6 OUT NOCOPY VARCHAR2
9627 , p_MedTxCrUsed6 OUT NOCOPY NUMBER
9628 , p_DirNum7 OUT NOCOPY VARCHAR2
9629 , p_MedTxCrUsed7 OUT NOCOPY NUMBER
9630 , p_DirNum8 OUT NOCOPY VARCHAR2
9631 , p_MedTxCrUsed8 OUT NOCOPY NUMBER
9632 , p_DirNum9 OUT NOCOPY VARCHAR2
9633 , p_MedTxCrUsed9 OUT NOCOPY NUMBER
9634 , p_DirNum10 OUT NOCOPY VARCHAR2
9635 , p_MedTxCrUsed10 OUT NOCOPY NUMBER
9636 )RETURN NUMBER
9637 AS
9638
9639 l_chunk number :=8;
9640 l_dir_st number := 71;
9641 l_dir_end number := 80;
9642 l_ls_dirnum varchar2(100);
9643 l_cur_max_dir number;
9644 l_count number :=0;
9645
9646
9647 BEGIN
9648 py_za_tx_utl_01032012.StartHrTrace;
9649 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm8_01032012',1);
9650
9651 p_DirNum1 :=' ';
9652 p_MedTxCrUsed1 :=0;
9653 p_DirNum2 :=' ';
9654 p_MedTxCrUsed2 :=0;
9655 p_DirNum3 :=' ';
9656 p_MedTxCrUsed3 :=0;
9657 p_DirNum4 :=' ';
9658 p_MedTxCrUsed4 :=0;
9659 p_DirNum5 :=' ';
9660 p_MedTxCrUsed5 :=0;
9661 p_DirNum6 :=' ';
9662 p_MedTxCrUsed6 :=0;
9663 p_DirNum7 :=' ';
9664 p_MedTxCrUsed7 :=0;
9665 p_DirNum8 :=' ';
9666 p_MedTxCrUsed8 :=0;
9667 p_DirNum9 :=' ';
9668 p_MedTxCrUsed9 :=0;
9669 p_DirNum10 :=' ';
9670 p_MedTxCrUsed10 :=0;
9671
9672 l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
9673 hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
9674
9675 l_ls_dirnum := trc_LSDirTab.first;
9676 while (l_ls_dirnum is not null)
9677 loop
9678 hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
9679 hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
9680 l_count := l_count+1;
9681 IF (l_count = l_dir_st) THEN
9682 p_DirNum1 := l_ls_dirnum;
9683 p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9684 ELSIF (l_count = l_dir_st +1) THEN
9685 p_DirNum2 := l_ls_dirnum;
9686 p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9687 ELSIF (l_count = l_dir_st +2) THEN
9688 p_DirNum3 := l_ls_dirnum;
9689 p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9690 ELSIF (l_count = l_dir_st +3) THEN
9691 p_DirNum4 := l_ls_dirnum;
9692 p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9693 ELSIF (l_count = l_dir_st +4) THEN
9694 p_DirNum5 := l_ls_dirnum;
9695 p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9696 ELSIF (l_count = l_dir_st +5) THEN
9697 p_DirNum6 := l_ls_dirnum;
9698 p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9699 ELSIF (l_count = l_dir_st +6) THEN
9700 p_DirNum7 := l_ls_dirnum;
9701 p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9702 ELSIF (l_count = l_dir_st +7) THEN
9703 p_DirNum8 := l_ls_dirnum;
9704 p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9705 ELSIF (l_count = l_dir_st +8) THEN
9706 p_DirNum9 := l_ls_dirnum;
9707 p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9708 ELSIF (l_count = l_dir_st +9) THEN
9709 p_DirNum10 := l_ls_dirnum;
9710 p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9711 END IF;
9712
9713 IF (l_count = l_cur_max_dir) THEN
9714 EXIT;
9715 END IF;
9716 l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
9717 end loop;
9718
9719 p_MedCrUsedLS := l_cur_max_dir;
9720 hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
9721 hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
9722
9723 py_za_tx_utl_01032012.StopHrTrace;
9724
9725 RETURN 1;
9726
9727 EXCEPTION
9728 WHEN OTHERS THEN
9729 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm8_01032012',50);
9730 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
9731 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
9732 py_za_tx_utl_01032012.StopHrTrace;
9733 hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm8_01032012: '||TO_CHAR(SQLCODE));
9734 hr_utility.raise_error;
9735 END ZaTxMedTxCrLmpSm8_01032012;
9736
9737
9738 FUNCTION ZaTxMedTxCrLmpSm9_01032012(
9739 p_MedCrUsedLS OUT NOCOPY NUMBER
9740 , p_DirNum1 OUT NOCOPY VARCHAR2
9741 , p_MedTxCrUsed1 OUT NOCOPY NUMBER
9742 , p_DirNum2 OUT NOCOPY VARCHAR2
9743 , p_MedTxCrUsed2 OUT NOCOPY NUMBER
9744 , p_DirNum3 OUT NOCOPY VARCHAR2
9745 , p_MedTxCrUsed3 OUT NOCOPY NUMBER
9746 , p_DirNum4 OUT NOCOPY VARCHAR2
9747 , p_MedTxCrUsed4 OUT NOCOPY NUMBER
9748 , p_DirNum5 OUT NOCOPY VARCHAR2
9749 , p_MedTxCrUsed5 OUT NOCOPY NUMBER
9750 , p_DirNum6 OUT NOCOPY VARCHAR2
9751 , p_MedTxCrUsed6 OUT NOCOPY NUMBER
9752 , p_DirNum7 OUT NOCOPY VARCHAR2
9753 , p_MedTxCrUsed7 OUT NOCOPY NUMBER
9754 , p_DirNum8 OUT NOCOPY VARCHAR2
9755 , p_MedTxCrUsed8 OUT NOCOPY NUMBER
9756 , p_DirNum9 OUT NOCOPY VARCHAR2
9757 , p_MedTxCrUsed9 OUT NOCOPY NUMBER
9758 , p_DirNum10 OUT NOCOPY VARCHAR2
9759 , p_MedTxCrUsed10 OUT NOCOPY NUMBER
9760 )RETURN NUMBER
9761 AS
9762
9763 l_chunk number :=9;
9764 l_dir_st number := 81;
9765 l_dir_end number := 90;
9766 l_ls_dirnum varchar2(100);
9767 l_cur_max_dir number;
9768 l_count number :=0;
9769
9770
9771 BEGIN
9772 py_za_tx_utl_01032012.StartHrTrace;
9773 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm9_01032012',1);
9774
9775 p_DirNum1 :=' ';
9776 p_MedTxCrUsed1 :=0;
9777 p_DirNum2 :=' ';
9778 p_MedTxCrUsed2 :=0;
9779 p_DirNum3 :=' ';
9780 p_MedTxCrUsed3 :=0;
9781 p_DirNum4 :=' ';
9782 p_MedTxCrUsed4 :=0;
9783 p_DirNum5 :=' ';
9784 p_MedTxCrUsed5 :=0;
9785 p_DirNum6 :=' ';
9786 p_MedTxCrUsed6 :=0;
9787 p_DirNum7 :=' ';
9788 p_MedTxCrUsed7 :=0;
9789 p_DirNum8 :=' ';
9790 p_MedTxCrUsed8 :=0;
9791 p_DirNum9 :=' ';
9792 p_MedTxCrUsed9 :=0;
9793 p_DirNum10 :=' ';
9794 p_MedTxCrUsed10 :=0;
9795
9796 l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
9797 hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
9798
9799 l_ls_dirnum := trc_LSDirTab.first;
9800 while (l_ls_dirnum is not null)
9801 loop
9802 hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
9803 hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
9804 l_count := l_count+1;
9805 IF (l_count = l_dir_st) THEN
9806 p_DirNum1 := l_ls_dirnum;
9807 p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9808 ELSIF (l_count = l_dir_st +1) THEN
9809 p_DirNum2 := l_ls_dirnum;
9810 p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9811 ELSIF (l_count = l_dir_st +2) THEN
9812 p_DirNum3 := l_ls_dirnum;
9813 p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9814 ELSIF (l_count = l_dir_st +3) THEN
9815 p_DirNum4 := l_ls_dirnum;
9816 p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9817 ELSIF (l_count = l_dir_st +4) THEN
9818 p_DirNum5 := l_ls_dirnum;
9819 p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9820 ELSIF (l_count = l_dir_st +5) THEN
9821 p_DirNum6 := l_ls_dirnum;
9822 p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9823 ELSIF (l_count = l_dir_st +6) THEN
9824 p_DirNum7 := l_ls_dirnum;
9825 p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9826 ELSIF (l_count = l_dir_st +7) THEN
9827 p_DirNum8 := l_ls_dirnum;
9828 p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9829 ELSIF (l_count = l_dir_st +8) THEN
9830 p_DirNum9 := l_ls_dirnum;
9831 p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9832 ELSIF (l_count = l_dir_st +9) THEN
9833 p_DirNum10 := l_ls_dirnum;
9834 p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9835 END IF;
9836
9837 IF (l_count = l_cur_max_dir) THEN
9838 EXIT;
9839 END IF;
9840 l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
9841 end loop;
9842
9843 p_MedCrUsedLS := l_cur_max_dir;
9844 hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
9845 hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
9846
9847 py_za_tx_utl_01032012.StopHrTrace;
9848
9849 RETURN 1;
9850
9851 EXCEPTION
9852 WHEN OTHERS THEN
9853 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm9_01032012',50);
9854 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
9855 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
9856 py_za_tx_utl_01032012.StopHrTrace;
9857 hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm9_01032012: '||TO_CHAR(SQLCODE));
9858 hr_utility.raise_error;
9859 END ZaTxMedTxCrLmpSm9_01032012;
9860
9861
9862 FUNCTION ZaTxMedTxCrLmpSm10_01032012(
9863 p_MedCrUsedLS OUT NOCOPY NUMBER
9864 , p_DirNum1 OUT NOCOPY VARCHAR2
9865 , p_MedTxCrUsed1 OUT NOCOPY NUMBER
9866 , p_DirNum2 OUT NOCOPY VARCHAR2
9867 , p_MedTxCrUsed2 OUT NOCOPY NUMBER
9868 , p_DirNum3 OUT NOCOPY VARCHAR2
9869 , p_MedTxCrUsed3 OUT NOCOPY NUMBER
9870 , p_DirNum4 OUT NOCOPY VARCHAR2
9871 , p_MedTxCrUsed4 OUT NOCOPY NUMBER
9872 , p_DirNum5 OUT NOCOPY VARCHAR2
9873 , p_MedTxCrUsed5 OUT NOCOPY NUMBER
9874 , p_DirNum6 OUT NOCOPY VARCHAR2
9875 , p_MedTxCrUsed6 OUT NOCOPY NUMBER
9876 , p_DirNum7 OUT NOCOPY VARCHAR2
9877 , p_MedTxCrUsed7 OUT NOCOPY NUMBER
9878 , p_DirNum8 OUT NOCOPY VARCHAR2
9879 , p_MedTxCrUsed8 OUT NOCOPY NUMBER
9880 , p_DirNum9 OUT NOCOPY VARCHAR2
9881 , p_MedTxCrUsed9 OUT NOCOPY NUMBER
9882 , p_DirNum10 OUT NOCOPY VARCHAR2
9883 , p_MedTxCrUsed10 OUT NOCOPY NUMBER
9884 )RETURN NUMBER
9885 AS
9886
9887 l_chunk number :=10;
9888 l_dir_st number := 91;
9889 l_dir_end number := 100;
9890 l_ls_dirnum varchar2(100);
9891 l_cur_max_dir number;
9892 l_count number :=0;
9893
9894
9895 BEGIN
9896 py_za_tx_utl_01032012.StartHrTrace;
9897 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm10_01032012',1);
9898
9899 p_DirNum1 :=' ';
9900 p_MedTxCrUsed1 :=0;
9901 p_DirNum2 :=' ';
9902 p_MedTxCrUsed2 :=0;
9903 p_DirNum3 :=' ';
9904 p_MedTxCrUsed3 :=0;
9905 p_DirNum4 :=' ';
9906 p_MedTxCrUsed4 :=0;
9907 p_DirNum5 :=' ';
9908 p_MedTxCrUsed5 :=0;
9909 p_DirNum6 :=' ';
9910 p_MedTxCrUsed6 :=0;
9911 p_DirNum7 :=' ';
9912 p_MedTxCrUsed7 :=0;
9913 p_DirNum8 :=' ';
9914 p_MedTxCrUsed8 :=0;
9915 p_DirNum9 :=' ';
9916 p_MedTxCrUsed9 :=0;
9917 p_DirNum10 :=' ';
9918 p_MedTxCrUsed10 :=0;
9919
9920 l_cur_max_dir := LEAST(l_dir_end, trc_LSDirTab.count - ((l_chunk-1)*l_dir_end));
9921 hr_utility.set_location('l_cur_max_dir:'||l_cur_max_dir,2);
9922
9923 l_ls_dirnum := trc_LSDirTab.first;
9924 while (l_ls_dirnum is not null)
9925 loop
9926 hr_utility.set_location('DirNum:'||l_ls_dirnum,3);
9927 hr_utility.set_location('DirValue:'||trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN,3);
9928 l_count := l_count+1;
9929 IF (l_count = l_dir_st) THEN
9930 p_DirNum1 := l_ls_dirnum;
9931 p_MedTxCrUsed1 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9932 ELSIF (l_count = l_dir_st +1) THEN
9933 p_DirNum2 := l_ls_dirnum;
9934 p_MedTxCrUsed2 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9935 ELSIF (l_count = l_dir_st +2) THEN
9936 p_DirNum3 := l_ls_dirnum;
9937 p_MedTxCrUsed3 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9938 ELSIF (l_count = l_dir_st +3) THEN
9939 p_DirNum4 := l_ls_dirnum;
9940 p_MedTxCrUsed4 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9941 ELSIF (l_count = l_dir_st +4) THEN
9942 p_DirNum5 := l_ls_dirnum;
9943 p_MedTxCrUsed5 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9944 ELSIF (l_count = l_dir_st +5) THEN
9945 p_DirNum6 := l_ls_dirnum;
9946 p_MedTxCrUsed6 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9947 ELSIF (l_count = l_dir_st +6) THEN
9948 p_DirNum7 := l_ls_dirnum;
9949 p_MedTxCrUsed7 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9950 ELSIF (l_count = l_dir_st +7) THEN
9951 p_DirNum8 := l_ls_dirnum;
9952 p_MedTxCrUsed8 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9953 ELSIF (l_count = l_dir_st +8) THEN
9954 p_DirNum9 := l_ls_dirnum;
9955 p_MedTxCrUsed9 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9956 ELSIF (l_count = l_dir_st +9) THEN
9957 p_DirNum10 := l_ls_dirnum;
9958 p_MedTxCrUsed10 := -1 * trc_LSDirTab(l_ls_dirnum).MedTxCrUsedOnLSDirRUN;
9959 END IF;
9960
9961 IF (l_count = l_cur_max_dir) THEN
9962 EXIT;
9963 END IF;
9964 l_ls_dirnum := trc_LSDirTab.next(l_ls_dirnum);
9965 end loop;
9966
9967 p_MedCrUsedLS := l_cur_max_dir;
9968 hr_utility.set_location('trc_LSDirTab.count:'||trc_LSDirTab.count,4);
9969 hr_utility.set_location('p_MedCrUsedLS:'||p_MedCrUsedLS,4);
9970
9971 py_za_tx_utl_01032012.StopHrTrace;
9972
9973 RETURN 1;
9974
9975 EXCEPTION
9976 WHEN OTHERS THEN
9977 hr_utility.set_location('PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm10_01032012',50);
9978 WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
9979 WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
9980 py_za_tx_utl_01032012.StopHrTrace;
9981 hr_utility.set_message(801, 'PY_ZA_TX_01032012.ZaTxMedTxCrLmpSm10_01032012: '||TO_CHAR(SQLCODE));
9982 hr_utility.raise_error;
9983 END ZaTxMedTxCrLmpSm10_01032012;
9984
9985
9986 END PY_ZA_TX_01032012;