57:
58: PUBLIC PROCEDURES
59: StartHrTrace
60: Sets package global that determines if extra trace information
61: will be written to file - hr_utility
62: StopHrTrace
63: Stops trace information from being written to file
64: WriteHrTrace
65: Writes extra trace information to file if global
151: -------------------------------------------------------------------------------
152:
153: -------------------------------------------------------------------------------
154: -- StartHrTrace --
155: -- Wrapper for hr_utility.trace_on --
156: -------------------------------------------------------------------------------
157: PROCEDURE StartHrTrace AS
158: BEGIN
159: IF g_HrTraceEnabled THEN
156: -------------------------------------------------------------------------------
157: PROCEDURE StartHrTrace AS
158: BEGIN
159: IF g_HrTraceEnabled THEN
160: hr_utility.trace_on(null,g_HrTracePipeName);
161: END IF;
162: END StartHrTrace;
163: -------------------------------------------------------------------------------
164: -- StartHrTrace --
161: END IF;
162: END StartHrTrace;
163: -------------------------------------------------------------------------------
164: -- StartHrTrace --
165: -- Function wrapper for hr_utility.trace_on --
166: -------------------------------------------------------------------------------
167: FUNCTION StartHrTrace(
168: p_HrTracePipeName VARCHAR2
169: ) RETURN VARCHAR2
168: p_HrTracePipeName VARCHAR2
169: ) RETURN VARCHAR2
170: AS
171: BEGIN
172: hr_utility.trace_on(null,p_HrTracePipeName);
173: RETURN p_HrTracePipeName;
174: END StartHrTrace;
175: -------------------------------------------------------------------------------
176: -- StopHrTrace --
173: RETURN p_HrTracePipeName;
174: END StartHrTrace;
175: -------------------------------------------------------------------------------
176: -- StopHrTrace --
177: -- Wrapper for hr_utility.trace_off --
178: -------------------------------------------------------------------------------
179: PROCEDURE StopHrTrace AS
180: BEGIN
181: IF g_HrTraceEnabled THEN
178: -------------------------------------------------------------------------------
179: PROCEDURE StopHrTrace AS
180: BEGIN
181: IF g_HrTraceEnabled THEN
182: hr_utility.trace_off;
183: END IF;
184: END StopHrTrace;
185: -------------------------------------------------------------------------------
186: -- StopHrTrace --
183: END IF;
184: END StopHrTrace;
185: -------------------------------------------------------------------------------
186: -- StopHrTrace --
187: -- Function wrapper for hr_utility.trace_off --
188: -------------------------------------------------------------------------------
189: FUNCTION StopHrTrace RETURN VARCHAR2 AS
190: BEGIN
191: hr_utility.trace_off;
187: -- Function wrapper for hr_utility.trace_off --
188: -------------------------------------------------------------------------------
189: FUNCTION StopHrTrace RETURN VARCHAR2 AS
190: BEGIN
191: hr_utility.trace_off;
192: RETURN 'TRACE_OFF';
193: END StopHrTrace;
194: -------------------------------------------------------------------------------
195: -- WriteHrTrace --
192: RETURN 'TRACE_OFF';
193: END StopHrTrace;
194: -------------------------------------------------------------------------------
195: -- WriteHrTrace --
196: -- Wrapper for hr_utility.trace --
197: -------------------------------------------------------------------------------
198: PROCEDURE WriteHrTrace(
199: p_Buffer VARCHAR2
200: )
201: AS
202: BEGIN
203: IF g_HrTraceEnabled THEN
204: -- Write the Line
205: hr_utility.trace(p_Buffer);
206: END IF;
207: END WriteHrTrace;
208:
209:
220: AS
221: -- Variables
222: l_GlbVal t_balance;
223: BEGIN
224: hr_utility.set_location('py_za_tx_utl_01032009.GlbVal',1);
225: WriteHrTrace('p_GlbNme :'||p_GlbNme);
226: WriteHrTrace('p_EffDte :'||to_char(p_EffDte,'DD/MM/YYYY'));
227: --
228: SELECT TO_NUMBER(global_value)
230: FROM ff_globals_f
231: WHERE p_EffDte between effective_start_date and effective_end_date
232: AND global_name = p_GlbNme;
233:
234: hr_utility.set_location('py_za_tx_utl_01032009.GlbVal',2);
235: RETURN l_GlbVal;
236:
237: EXCEPTION
238: WHEN OTHERS THEN
254:
255: -------------------------------------------------------------------------------
256: BEGIN -- MAIN --
257: -------------------------------------------------------------------------------
258: hr_utility.set_location('py_za_tx_utl_01032009.TotPrdTxbIncYtd',1);
259:
260: l_tot_txb_prd_inc_ytd :=
261: ( py_za_tx_01032009.bal_TOT_TXB_NI_YTD
262: + py_za_tx_01032009.bal_TOT_TXB_FB_YTD
261: ( py_za_tx_01032009.bal_TOT_TXB_NI_YTD
262: + py_za_tx_01032009.bal_TOT_TXB_FB_YTD
263: + py_za_tx_01032009.bal_TOT_TXB_TA_YTD
264: );
265: hr_utility.set_location('py_za_tx_utl_01032009.TotPrdTxbIncYtd',2);
266: RETURN l_tot_txb_prd_inc_ytd;
267:
268: EXCEPTION
269: WHEN OTHERS THEN
266: RETURN l_tot_txb_prd_inc_ytd;
267:
268: EXCEPTION
269: WHEN OTHERS THEN
270: hr_utility.set_location('py_za_tx_utl_01032009.TotPrdTxbIncYtd',3);
271: IF py_za_tx_01032009.xpt_Msg = 'No Error' THEN
272: py_za_tx_01032009.xpt_Msg := 'TotPrdTxbIncYtd: '||TO_CHAR(SQLCODE);
273: END IF;
274: RAISE py_za_tx_01032009.xpt_E;
287:
288: -------------------------------------------------------------------------------
289: BEGIN -- MAIN --
290: -------------------------------------------------------------------------------
291: hr_utility.set_location('py_za_tx_utl_01032009.TotPrdTxbIncPtd',1);
292:
293: l_tot_txb_prd_inc_ptd :=
294: ( py_za_tx_01032009.bal_TOT_TXB_NI_PTD
295: + py_za_tx_01032009.bal_TOT_TXB_FB_PTD
294: ( py_za_tx_01032009.bal_TOT_TXB_NI_PTD
295: + py_za_tx_01032009.bal_TOT_TXB_FB_PTD
296: + py_za_tx_01032009.bal_TOT_TXB_TA_PTD
297: );
298: hr_utility.set_location('py_za_tx_utl_01032009.TotPrdTxbIncPtd',2);
299: RETURN l_tot_txb_prd_inc_ptd;
300:
301: EXCEPTION
302: WHEN OTHERS THEN
299: RETURN l_tot_txb_prd_inc_ptd;
300:
301: EXCEPTION
302: WHEN OTHERS THEN
303: hr_utility.set_location('py_za_tx_utl_01032009.TotPrdTxbIncPtd',3);
304: IF py_za_tx_01032009.xpt_Msg = 'No Error' THEN
305: py_za_tx_01032009.xpt_Msg := 'TotPrdTxbIncPtd: '||TO_CHAR(SQLCODE);
306: END IF;
307: RAISE py_za_tx_01032009.xpt_E;
320:
321: -------------------------------------------------------------------
322: BEGIN -- NegPtd - MAIN --
323: -------------------------------------------------------------------
324: hr_utility.set_location('py_za_tx_utl_01032009.NegPtd',1);
325: -- If any period ptd income value is negative
326: -- a site calc has to be done
327:
328: py_za_tx_01032009.trc_NorIncPtd := py_za_tx_01032009.bal_TOT_TXB_NI_PTD;
336: , py_za_tx_01032009.trc_TrvAllPtd
337: , py_za_tx_01032009.trc_BonProPtd
338: ) < 0
339: THEN
340: hr_utility.set_location('py_za_tx_utl_01032009.NegPtd',2);
341: py_za_tx_01032009.trc_NegPtd := TRUE;
342: END IF;
343:
344: hr_utility.set_location('py_za_tx_utl_01032009.NegPtd',3);
340: hr_utility.set_location('py_za_tx_utl_01032009.NegPtd',2);
341: py_za_tx_01032009.trc_NegPtd := TRUE;
342: END IF;
343:
344: hr_utility.set_location('py_za_tx_utl_01032009.NegPtd',3);
345: RETURN py_za_tx_01032009.trc_NegPtd;
346:
347: EXCEPTION
348: WHEN OTHERS THEN
358: FUNCTION LatePayPeriod RETURN BOOLEAN AS
359: -- Variables
360: l_CurTxYear NUMBER(15);
361: BEGIN
362: hr_utility.set_location('py_za_tx_utl_01032009.LatePayPeriod',1);
363: -- IF the employee's assignment ended before the current tax year
364: -- it's a Late Pay Period
365: IF py_za_tx_01032009.dbi_ZA_ACT_END_DTE < py_za_tx_01032009.dbi_ZA_TX_YR_STRT THEN
366:
363: -- IF the employee's assignment ended before the current tax year
364: -- it's a Late Pay Period
365: IF py_za_tx_01032009.dbi_ZA_ACT_END_DTE < py_za_tx_01032009.dbi_ZA_TX_YR_STRT THEN
366:
367: hr_utility.set_location('py_za_tx_utl_01032009.LatePayPeriod',2);
368:
369: -- Valid Late Pay Period?
370: --
371: -- Current Tax Year
370: --
371: -- Current Tax Year
372: l_CurTxYear := to_number(to_char(py_za_tx_01032009.dbi_ZA_TX_YR_END,'YYYY'));
373:
374: hr_utility.set_location('py_za_tx_utl_01032009.LatePayPeriod',3);
375:
376: /* Commented for Bug 8844712
377: IF (l_CurTxYear - py_za_tx_01032009.dbi_ZA_ASG_TX_YR) > 1 THEN
378: hr_utility.set_location('py_za_tx_utl_01032009.LatePayPeriod',4);
374: hr_utility.set_location('py_za_tx_utl_01032009.LatePayPeriod',3);
375:
376: /* Commented for Bug 8844712
377: IF (l_CurTxYear - py_za_tx_01032009.dbi_ZA_ASG_TX_YR) > 1 THEN
378: hr_utility.set_location('py_za_tx_utl_01032009.LatePayPeriod',4);
379: -- Bug 8691928
380: py_za_tx_01032009.xpt_Msg := 'LatePayment Across Two Tax Yrs' ;
381: RAISE py_za_tx_01032009.xpt_E;
382: ELSE
379: -- Bug 8691928
380: py_za_tx_01032009.xpt_Msg := 'LatePayment Across Two Tax Yrs' ;
381: RAISE py_za_tx_01032009.xpt_E;
382: ELSE
383: hr_utility.set_location('py_za_tx_utl_01032009.LatePayPeriod',5);
384: RETURN TRUE;
385: END IF; */
386: RETURN TRUE;
387:
385: END IF; */
386: RETURN TRUE;
387:
388: ELSE
389: hr_utility.set_location('py_za_tx_utl_01032009.LatePayPeriod',6);
390: RETURN FALSE;
391: END IF;
392:
393: EXCEPTION
404: BEGIN
405: -- Is this the last period for the tax year
406: --
407: IF py_za_tx_01032009.dbi_ZA_PAY_PRDS_LFT = 1 THEN
408: hr_utility.set_location('py_za_tx_utl_01032009.LstPeriod',1);
409: RETURN TRUE;
410: ELSE
411: hr_utility.set_location('py_za_tx_utl_01032009.LstPeriod',2);
412: RETURN FALSE;
407: IF py_za_tx_01032009.dbi_ZA_PAY_PRDS_LFT = 1 THEN
408: hr_utility.set_location('py_za_tx_utl_01032009.LstPeriod',1);
409: RETURN TRUE;
410: ELSE
411: hr_utility.set_location('py_za_tx_utl_01032009.LstPeriod',2);
412: RETURN FALSE;
413: END IF;
414:
415: EXCEPTION
429: --
430: IF py_za_tx_01032009.dbi_ZA_ACT_END_DTE BETWEEN py_za_tx_01032009.dbi_ZA_CUR_PRD_STRT_DTE
431: AND py_za_tx_01032009.dbi_ZA_CUR_PRD_END_DTE
432: THEN
433: hr_utility.set_location('py_za_tx_utl_01032009.EmpTermInPeriod',1);
434: RETURN TRUE;
435: ELSE
436: hr_utility.set_location('py_za_tx_utl_01032009.EmpTermInPeriod',2);
437: RETURN FALSE;
432: THEN
433: hr_utility.set_location('py_za_tx_utl_01032009.EmpTermInPeriod',1);
434: RETURN TRUE;
435: ELSE
436: hr_utility.set_location('py_za_tx_utl_01032009.EmpTermInPeriod',2);
437: RETURN FALSE;
438: END IF;
439:
440: EXCEPTION
452: BEGIN
453: -- Was the employee terminated before the current period
454: --
455: IF py_za_tx_01032009.dbi_ZA_ACT_END_DTE <= py_za_tx_01032009.dbi_ZA_CUR_PRD_STRT_DTE THEN
456: hr_utility.set_location('py_za_tx_utl_01032009.EmpTermPrePeriod',1);
457: RETURN TRUE;
458: ELSE
459: hr_utility.set_location('py_za_tx_utl_01032009.EmpTermPrePeriod',2);
460: RETURN FALSE;
455: IF py_za_tx_01032009.dbi_ZA_ACT_END_DTE <= py_za_tx_01032009.dbi_ZA_CUR_PRD_STRT_DTE THEN
456: hr_utility.set_location('py_za_tx_utl_01032009.EmpTermPrePeriod',1);
457: RETURN TRUE;
458: ELSE
459: hr_utility.set_location('py_za_tx_utl_01032009.EmpTermPrePeriod',2);
460: RETURN FALSE;
461: END IF;
462:
463: EXCEPTION
493: WriteHrTrace('py_za_tx_01032009.trc_AnnPymPtd: '||to_char(py_za_tx_01032009.trc_AnnPymPtd));
494:
495: -- Annual Type PTD Income with no Period Type PTD Income
496: IF (py_za_tx_01032009.trc_AnnBonPtd + py_za_tx_01032009.trc_AnnPymPtd) <> 0 AND py_za_tx_01032009.trc_TxbIncPtd <= 0 THEN
497: hr_utility.set_location('py_za_tx_utl_01032009.PreErnPeriod',1);
498: RETURN TRUE;
499: ELSE
500: hr_utility.set_location('py_za_tx_utl_01032009.PreErnPeriod',2);
501: RETURN FALSE;
496: IF (py_za_tx_01032009.trc_AnnBonPtd + py_za_tx_01032009.trc_AnnPymPtd) <> 0 AND py_za_tx_01032009.trc_TxbIncPtd <= 0 THEN
497: hr_utility.set_location('py_za_tx_utl_01032009.PreErnPeriod',1);
498: RETURN TRUE;
499: ELSE
500: hr_utility.set_location('py_za_tx_utl_01032009.PreErnPeriod',2);
501: RETURN FALSE;
502: END IF;
503:
504: EXCEPTION
513: -------------------------------------------------------------------------------
514: FUNCTION SitePeriod RETURN BOOLEAN AS
515: BEGIN
516: IF LstPeriod OR EmpTermInPeriod OR EmpTermPrePeriod THEN
517: hr_utility.set_location('py_za_tx_utl_01032009.SitePeriod',1);
518: RETURN TRUE;
519: ELSE
520: hr_utility.set_location('py_za_tx_utl_01032009.SitePeriod',2);
521: RETURN FALSE;
516: IF LstPeriod OR EmpTermInPeriod OR EmpTermPrePeriod THEN
517: hr_utility.set_location('py_za_tx_utl_01032009.SitePeriod',1);
518: RETURN TRUE;
519: ELSE
520: hr_utility.set_location('py_za_tx_utl_01032009.SitePeriod',2);
521: RETURN FALSE;
522: END IF;
523:
524: EXCEPTION
537: ------------
538: l_tot_inc_ytd t_balance;
539: l_tot_inc_ptd t_balance;
540: BEGIN
541: hr_utility.set_location('py_za_tx_utl_01032009.PeriodFactor',1);
542:
543: l_tot_inc_ytd := TotPrdTxbIncYtd;
544: l_tot_inc_ptd := TotPrdTxbIncPtd;
545:
542:
543: l_tot_inc_ytd := TotPrdTxbIncYtd;
544: l_tot_inc_ptd := TotPrdTxbIncPtd;
545:
546: hr_utility.set_location('py_za_tx_utl_01032009.PeriodFactor',2);
547:
548: IF py_za_tx_01032009.dbi_ZA_TX_YR_STRT < py_za_tx_01032009.dbi_ZA_ACT_STRT_DTE THEN
549: hr_utility.set_location('py_za_tx_utl_01032009.PeriodFactor',3);
550:
545:
546: hr_utility.set_location('py_za_tx_utl_01032009.PeriodFactor',2);
547:
548: IF py_za_tx_01032009.dbi_ZA_TX_YR_STRT < py_za_tx_01032009.dbi_ZA_ACT_STRT_DTE THEN
549: hr_utility.set_location('py_za_tx_utl_01032009.PeriodFactor',3);
550:
551: IF l_tot_inc_ytd = l_tot_inc_ptd THEN
552: hr_utility.set_location('py_za_tx_utl_01032009.PeriodFactor',3);
553: -- i.e. first pay period for the person
548: IF py_za_tx_01032009.dbi_ZA_TX_YR_STRT < py_za_tx_01032009.dbi_ZA_ACT_STRT_DTE THEN
549: hr_utility.set_location('py_za_tx_utl_01032009.PeriodFactor',3);
550:
551: IF l_tot_inc_ytd = l_tot_inc_ptd THEN
552: hr_utility.set_location('py_za_tx_utl_01032009.PeriodFactor',3);
553: -- i.e. first pay period for the person
554:
555: -- Bug 8691928
556: -- removed newlines between various operands of the expression
555: -- Bug 8691928
556: -- removed newlines between various operands of the expression
557: py_za_tx_01032009.trc_PrdFactor := ( py_za_tx_01032009.dbi_ZA_CUR_PRD_END_DTE - py_za_tx_01032009.dbi_ZA_ACT_STRT_DTE + 1)/ ( py_za_tx_01032009.dbi_ZA_CUR_PRD_END_DTE - py_za_tx_01032009.dbi_ZA_CUR_PRD_STRT_DTE + 1 );
558: ELSE
559: hr_utility.set_location('py_za_tx_utl_01032009.PeriodFactor',5);
560: py_za_tx_01032009.trc_PrdFactor := 1;
561: END IF;
562:
563: ELSE
560: py_za_tx_01032009.trc_PrdFactor := 1;
561: END IF;
562:
563: ELSE
564: hr_utility.set_location('py_za_tx_utl_01032009.PeriodFactor',6);
565: py_za_tx_01032009.trc_PrdFactor := 1;
566: END IF;
567:
568: WriteHrTrace('dbi_ZA_TX_YR_STRT: '
590: -------------------------------------------------------------------------------
591: PROCEDURE PossiblePeriodsFactor AS
592: BEGIN
593: IF py_za_tx_01032009.dbi_ZA_TX_YR_STRT >= py_za_tx_01032009.dbi_ZA_ACT_STRT_DTE THEN
594: hr_utility.set_location('py_za_tx_utl_01032009.PossiblePeriodsFactor',1);
595: py_za_tx_01032009.trc_PosFactor := 1;
596: ELSE
597: IF py_za_tx_01032009.trc_PrdFactor <> 1 THEN
598: hr_utility.set_location('py_za_tx_utl_01032009.PossiblePeriodsFactor',2);
594: hr_utility.set_location('py_za_tx_utl_01032009.PossiblePeriodsFactor',1);
595: py_za_tx_01032009.trc_PosFactor := 1;
596: ELSE
597: IF py_za_tx_01032009.trc_PrdFactor <> 1 THEN
598: hr_utility.set_location('py_za_tx_utl_01032009.PossiblePeriodsFactor',2);
599: --
600: py_za_tx_01032009.trc_PosFactor :=
601: py_za_tx_01032009.dbi_ZA_DYS_IN_YR
602: / ( py_za_tx_01032009.dbi_ZA_TX_YR_END
603: - py_za_tx_01032009.dbi_ZA_CUR_PRD_STRT_DTE
604: + 1
605: );
606: ELSE
607: hr_utility.set_location('py_za_tx_utl_01032009.PossiblePeriodsFactor',3);
608: --
609: py_za_tx_01032009.trc_PosFactor :=
610: py_za_tx_01032009.dbi_ZA_DYS_IN_YR
611: / ( py_za_tx_01032009.dbi_ZA_TX_YR_END
634: l_AnnFig3 t_balance;
635: l_AnnFig4 t_balance;
636:
637: BEGIN
638: hr_utility.set_location('py_za_tx_utl_01032009.Annualise',1);
639: IF py_za_tx_01032009.dbi_TX_MTD = 'C' THEN -- Cumulative Tax Method
640: hr_utility.set_location('py_za_tx_utl_01032009.Annualise',2);
641: -- 1
642: l_AnnFig1 := p_PtdInc / py_za_tx_01032009.trc_PrdFactor;
636:
637: BEGIN
638: hr_utility.set_location('py_za_tx_utl_01032009.Annualise',1);
639: IF py_za_tx_01032009.dbi_TX_MTD = 'C' THEN -- Cumulative Tax Method
640: hr_utility.set_location('py_za_tx_utl_01032009.Annualise',2);
641: -- 1
642: l_AnnFig1 := p_PtdInc / py_za_tx_01032009.trc_PrdFactor;
643: -- 2
644: l_AnnFig2 := l_AnnFig1 * py_za_tx_01032009.dbi_ZA_PAY_PRDS_LFT;
646: l_AnnFig3 := l_AnnFig2 + p_YtdInc - p_PtdInc;
647: -- 4
648: l_AnnFig4 := l_AnnFig3 * py_za_tx_01032009.trc_PosFactor;
649: --
650: hr_utility.set_location('py_za_tx_utl_01032009.Annualise',3);
651: --
652: WriteHrTrace('p_PtdInc: '||to_char(p_PtdInc));
653: WriteHrTrace('py_za_tx_01032009.trc_PrdFactor: '||to_char(py_za_tx_01032009.trc_PrdFactor));
654: WriteHrTrace('l_AnnFig1: '||to_char(l_AnnFig1));
659: WriteHrTrace('l_AnnFig3: '||to_char(l_AnnFig3));
660: WriteHrTrace('py_za_tx_01032009.trc_PosFactor: '||to_char(py_za_tx_01032009.trc_PosFactor));
661: WriteHrTrace('l_AnnFig4: '||to_char(l_AnnFig4));
662: ELSE -- Non Cumulative Tax Method
663: hr_utility.set_location('py_za_tx_utl_01032009.Annualise',4);
664:
665: l_AnnFig4 := p_PtdInc * py_za_tx_01032009.dbi_ZA_PAY_PRDS_PER_YR;
666: WriteHrTrace('p_PtdInc: '||to_char(p_PtdInc));
667: WriteHrTrace('py_za_tx_01032009.dbi_ZA_PAY_PRDS_PER_YR:'||to_char(py_za_tx_01032009.dbi_ZA_PAY_PRDS_PER_YR));
696: BEGIN
697: -- Setup the Globals
698: /*
699: IF py_za_tx_01032009.trc_CalTyp = 'PstCalc' THEN
700: hr_utility.set_location('py_za_tx_utl_01032009.SetRebates',1);
701: -- Employee Tax Year Start and End Dates
702: --
703: l_EndDate := py_za_tx_01032009.dbi_ZA_ASG_TX_YR_END;
704:
701: -- Employee Tax Year Start and End Dates
702: --
703: l_EndDate := py_za_tx_01032009.dbi_ZA_ASG_TX_YR_END;
704:
705: hr_utility.set_location('py_za_tx_utl_01032009.SetRebates',2);
706:
707: -- Global Values
708: l_ZA_TX_YR_END := l_EndDate;
709: l_ZA_ADL_TX_RBT := GlbVal('ZA_ADDITIONAL_TAX_REBATE',l_EndDate);
710: l_ZA_PRI_TX_RBT := GlbVal('ZA_PRIMARY_TAX_REBATE',l_EndDate);
711: l_ZA_PRI_TX_THRSHLD := GlbVal('ZA_PRIM_TAX_THRESHOLD',l_EndDate);
712: l_ZA_SC_TX_THRSHLD := GlbVal('ZA_SEC_TAX_THRESHOLD',l_EndDate);
713: ELSE */
714: hr_utility.set_location('py_za_tx_utl_01032009.SetRebates',3);
715: -- Set locals to current values
716: l_ZA_TX_YR_END := py_za_tx_01032009.dbi_ZA_TX_YR_END;
717: l_ZA_ADL_TX_RBT := py_za_tx_01032009.glb_ZA_ADL_TX_RBT;
718: l_ZA_PRI_TX_RBT := py_za_tx_01032009.glb_ZA_PRI_TX_RBT;
719: l_ZA_PRI_TX_THRSHLD := py_za_tx_01032009.glb_ZA_PRI_TX_THRSHLD;
720: l_ZA_SC_TX_THRSHLD := py_za_tx_01032009.glb_ZA_SC_TX_THRSHLD;
721: -- END IF;
722:
723: hr_utility.set_location('py_za_tx_utl_01032009.SetRebates',4);
724:
725: -- Calculate the Rebate and Threshold Values
726: hr_utility.set_location('py_za_tx_utl_01032009.SetRebates',5);
727: -- Calculate the assignments 65 Year Date
722:
723: hr_utility.set_location('py_za_tx_utl_01032009.SetRebates',4);
724:
725: -- Calculate the Rebate and Threshold Values
726: hr_utility.set_location('py_za_tx_utl_01032009.SetRebates',5);
727: -- Calculate the assignments 65 Year Date
728: l_65Year := add_months(py_za_tx_01032009.dbi_PER_DTE_OF_BRTH,780);
729:
730: IF l_65Year <= l_ZA_TX_YR_END THEN
727: -- Calculate the assignments 65 Year Date
728: l_65Year := add_months(py_za_tx_01032009.dbi_PER_DTE_OF_BRTH,780);
729:
730: IF l_65Year <= l_ZA_TX_YR_END THEN
731: hr_utility.set_location('py_za_tx_utl_01032009.SetRebates',6);
732: -- give the extra abatement
733: py_za_tx_01032009.trc_Rebate := l_ZA_PRI_TX_RBT + l_ZA_ADL_TX_RBT;
734: py_za_tx_01032009.trc_Threshold := l_ZA_SC_TX_THRSHLD;
735: ELSE
732: -- give the extra abatement
733: py_za_tx_01032009.trc_Rebate := l_ZA_PRI_TX_RBT + l_ZA_ADL_TX_RBT;
734: py_za_tx_01032009.trc_Threshold := l_ZA_SC_TX_THRSHLD;
735: ELSE
736: hr_utility.set_location('py_za_tx_utl_01032009.SetRebates',7);
737: -- not eligable for extra abatement
738: py_za_tx_01032009.trc_Rebate := l_ZA_PRI_TX_RBT;
739: py_za_tx_01032009.trc_Threshold := l_ZA_PRI_TX_THRSHLD;
740: END IF;
797: --
798: -------------------------------------------------------------------------
799: IF py_za_tx_01032009.trc_CalTyp = 'NorCalc' THEN --
800: -------------------------------------------------------------------------
801: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',1);
802:
803: -- Bug 9369895
804: -- If employee is on Fixed Percentage of Total Package then calculate the Total Taxable Income
805: -- which includes both periodic and annual income. This will be used in calculation of Pension
804: -- If employee is on Fixed Percentage of Total Package then calculate the Total Taxable Income
805: -- which includes both periodic and annual income. This will be used in calculation of Pension
806: -- fund abatement
807: if py_za_tx_01032009.trc_PenBasis = 1 then
808: hr_utility.set_location('py_za_tx_utl_01032009.Abatements - Package Structure',2);
809:
810: l_TotTxbNIYtd := Annualise
811: (p_YtdInc => py_za_tx_01032009.bal_TOT_TXB_NI_YTD
812: ,p_PtdInc => py_za_tx_01032009.bal_TOT_TXB_NI_PTD
835:
836: l_TotTxbIncEEDbtPkgYtd := ( l_TotTxbIncPkgYtd
837: + py_za_tx_01032009.bal_TOT_TXB_EE_DBT_NTG_YTD );
838:
839: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),2);
840: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),2);
841: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),2);
842: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),2);
843: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),2);
836: l_TotTxbIncEEDbtPkgYtd := ( l_TotTxbIncPkgYtd
837: + py_za_tx_01032009.bal_TOT_TXB_EE_DBT_NTG_YTD );
838:
839: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),2);
840: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),2);
841: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),2);
842: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),2);
843: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),2);
844: hr_utility.set_location('l_TotTxbIncEEDbtPkgYtd :'||to_char(l_TotTxbIncEEDbtPkgYtd),2);
837: + py_za_tx_01032009.bal_TOT_TXB_EE_DBT_NTG_YTD );
838:
839: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),2);
840: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),2);
841: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),2);
842: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),2);
843: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),2);
844: hr_utility.set_location('l_TotTxbIncEEDbtPkgYtd :'||to_char(l_TotTxbIncEEDbtPkgYtd),2);
845:
838:
839: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),2);
840: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),2);
841: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),2);
842: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),2);
843: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),2);
844: hr_utility.set_location('l_TotTxbIncEEDbtPkgYtd :'||to_char(l_TotTxbIncEEDbtPkgYtd),2);
845:
846:
839: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),2);
840: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),2);
841: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),2);
842: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),2);
843: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),2);
844: hr_utility.set_location('l_TotTxbIncEEDbtPkgYtd :'||to_char(l_TotTxbIncEEDbtPkgYtd),2);
845:
846:
847: end if;
840: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),2);
841: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),2);
842: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),2);
843: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),2);
844: hr_utility.set_location('l_TotTxbIncEEDbtPkgYtd :'||to_char(l_TotTxbIncEEDbtPkgYtd),2);
845:
846:
847: end if;
848: -------------------------
861: (p_ytdInc => py_za_tx_01032009.bal_TOT_RFI_INC_YTD
862: ,p_PtdInc => py_za_tx_01032009.bal_TOT_RFI_INC_PTD
863: );
864:
865: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',17);
866:
867: ---------------------
868: -- Annual Calculation
869: ---------------------
884:
885: --------------------------------
886: -- Arrear Pension Fund Abatement
887: --------------------------------
888: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',18);
889: -------------
890: -- Excess ITD
891: -------------
892: py_za_tx_01032009.trc_PerArrPenFnd :=
910:
911: -------------------------------
912: -- Retirement Annuity Abatement
913: -------------------------------
914: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',19);
915:
916: -------------
917: -- Current RA
918: -------------
924: ---------------------
925: -- Current NRFI Contr
926: ---------------------
927:
928: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',20);
929: py_za_tx_01032009.trc_PerNrfiCon :=
930: Annualise
931: ( p_YtdInc => py_za_tx_01032009.bal_TOT_NRFI_INC_YTD
932: , p_PtdInc => py_za_tx_01032009.bal_TOT_NRFI_INC_PTD
940: py_za_tx_01032009.trc_PerRetAnu
941: + py_za_tx_01032009.bal_ANN_RA_YTD;
942:
943:
944: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',21);
945: py_za_tx_01032009.trc_AnnNrfiCon :=
946: py_za_tx_01032009.trc_PerNrfiCon
947: + py_za_tx_01032009.bal_TOT_NRFI_AN_INC_YTD;
948:
956:
957: --------------------------------------
958: -- Arrear Retirement Annuity Abatement
959: --------------------------------------
960: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',22);
961: -------------
962: -- Excess ITD
963: -------------
964: py_za_tx_01032009.trc_PerArrRetAnu :=
1012: -- Annual
1013: ---------
1014: py_za_tx_01032009.trc_AnnMedAidAbm := py_za_tx_01032009.trc_PerMedAidAbm;
1015: END IF;
1016: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',23);
1017:
1018: ---------------------------
1019: -- Income Protection Policy
1020: ---------------------------
1026: (p_YtdInc => py_za_tx_01032009.bal_EE_INC_PRO_POL_YTD
1027: ,p_PtdInc => py_za_tx_01032009.bal_EE_INC_PRO_POL_PTD
1028: );
1029:
1030: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',24);
1031:
1032: ---------------------
1033: -- Annual Calculation
1034: ---------------------
1049: (p_YtdInc => py_za_tx_01032009.bal_DONAT_MD_EE_YTD
1050: ,p_PtdInc => py_za_tx_01032009.bal_DONAT_MD_EE_PTD
1051: );
1052:
1053: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',25);
1054:
1055: ---------------------
1056: -- Annual Calculation
1057: ---------------------
1063:
1064: -------------------------------------------------------------------------
1065: ELSIF py_za_tx_01032009.trc_CalTyp IN ('YtdCalc','SitCalc') THEN --
1066: -------------------------------------------------------------------------
1067: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',26);
1068:
1069: -- Bug 9369895
1070: -- If employee is on Fixed Percentage of Total Package then calculate the Total Taxable Income
1071: -- which includes both periodic and annual income. This will be used in calculation of Pension
1070: -- If employee is on Fixed Percentage of Total Package then calculate the Total Taxable Income
1071: -- which includes both periodic and annual income. This will be used in calculation of Pension
1072: -- fund abatement
1073: if py_za_tx_01032009.trc_PenBasis = 1 then
1074: hr_utility.set_location('py_za_tx_utl_01032009.Abatements - Package Structure',27);
1075:
1076: l_TotTxbNIYtd := py_za_tx_01032009.bal_TOT_TXB_NI_YTD
1077: * py_za_tx_01032009.trc_SitFactor;
1078:
1094: l_TotTxbIncEEDbtPkgYtd := ( l_TotTxbIncPkgYtd
1095: + py_za_tx_01032009.bal_TOT_TXB_EE_DBT_NTG_YTD );
1096:
1097:
1098: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),27);
1099: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),27);
1100: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),27);
1101: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),27);
1102: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),27);
1095: + py_za_tx_01032009.bal_TOT_TXB_EE_DBT_NTG_YTD );
1096:
1097:
1098: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),27);
1099: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),27);
1100: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),27);
1101: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),27);
1102: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),27);
1103: hr_utility.set_location('l_TotTxbIncEEDbtPkgYtd :'||to_char(l_TotTxbIncEEDbtPkgYtd),27);
1096:
1097:
1098: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),27);
1099: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),27);
1100: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),27);
1101: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),27);
1102: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),27);
1103: hr_utility.set_location('l_TotTxbIncEEDbtPkgYtd :'||to_char(l_TotTxbIncEEDbtPkgYtd),27);
1104:
1097:
1098: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),27);
1099: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),27);
1100: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),27);
1101: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),27);
1102: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),27);
1103: hr_utility.set_location('l_TotTxbIncEEDbtPkgYtd :'||to_char(l_TotTxbIncEEDbtPkgYtd),27);
1104:
1105: end if;
1098: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),27);
1099: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),27);
1100: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),27);
1101: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),27);
1102: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),27);
1103: hr_utility.set_location('l_TotTxbIncEEDbtPkgYtd :'||to_char(l_TotTxbIncEEDbtPkgYtd),27);
1104:
1105: end if;
1106:
1099: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),27);
1100: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),27);
1101: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),27);
1102: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),27);
1103: hr_utility.set_location('l_TotTxbIncEEDbtPkgYtd :'||to_char(l_TotTxbIncEEDbtPkgYtd),27);
1104:
1105: end if;
1106:
1107: -------------------------
1136: py_za_tx_01032009.trc_AnnRfiCon
1137: + py_za_tx_01032009.bal_TOT_RFI_EE_DBT_NTG_YTD;
1138:
1139:
1140: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',40);
1141:
1142: --------------------------------
1143: -- Arrear Pension Fund Abatement
1144: --------------------------------
1141:
1142: --------------------------------
1143: -- Arrear Pension Fund Abatement
1144: --------------------------------
1145: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',41);
1146: -------------
1147: -- Excess ITD
1148: -------------
1149: py_za_tx_01032009.trc_PerArrPenFnd :=
1167:
1168: -------------------------------
1169: -- Retirement Annuity Abatement
1170: -------------------------------
1171: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',42);
1172:
1173: -------------
1174: -- Current RA
1175: -------------
1180: ---------------------
1181: -- Current NRFI Contr
1182: ---------------------
1183:
1184: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',43);
1185: py_za_tx_01032009.trc_PerNrfiCon :=
1186: py_za_tx_01032009.bal_TOT_NRFI_INC_YTD
1187: * py_za_tx_01032009.trc_SitFactor;
1188:
1193: py_za_tx_01032009.trc_PerRetAnu
1194: + py_za_tx_01032009.bal_ANN_RA_YTD;
1195:
1196:
1197: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',44);
1198: py_za_tx_01032009.trc_AnnNrfiCon :=
1199: py_za_tx_01032009.trc_PerNrfiCon
1200: + py_za_tx_01032009.bal_TOT_NRFI_AN_INC_YTD;
1201:
1208:
1209: --------------------------------------
1210: -- Arrear Retirement Annuity Abatement
1211: --------------------------------------
1212: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',45);
1213: -------------
1214: -- Excess ITD
1215: -------------
1216: py_za_tx_01032009.trc_PerArrRetAnu :=
1260: ---------
1261: py_za_tx_01032009.trc_AnnMedAidAbm := py_za_tx_01032009.trc_PerMedAidAbm;
1262: END IF;
1263:
1264: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',46);
1265:
1266: ---------------------------
1267: -- Income Protection Policy
1268: ---------------------------
1273: py_za_tx_01032009.trc_PerIncProPolAbm :=
1274: py_za_tx_01032009.bal_EE_INC_PRO_POL_YTD
1275: * py_za_tx_01032009.trc_SitFactor;
1276:
1277: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',47);
1278:
1279: ---------------------
1280: -- Annual Calculation
1281: ---------------------
1296: py_za_tx_01032009.trc_PerDonAmt :=
1297: py_za_tx_01032009.bal_DONAT_MD_EE_YTD
1298: * py_za_tx_01032009.trc_SitFactor;
1299:
1300: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',48);
1301:
1302: ---------------------
1303: -- Annual Calculation
1304: ---------------------
1310:
1311: -------------------------------------------------------------------------
1312: ELSIF py_za_tx_01032009.trc_CalTyp = 'CalCalc' THEN --
1313: -------------------------------------------------------------------------
1314: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',49);
1315:
1316: -- Bug 9369895
1317: -- If employee is on Fixed Percentage of Total Package then calculate the Total Taxable Income
1318: -- which includes both periodic and annual income. This will be used in calculation of Pension
1318: -- which includes both periodic and annual income. This will be used in calculation of Pension
1319: -- fund abatement
1320: if py_za_tx_01032009.trc_PenBasis = 1 then
1321:
1322: hr_utility.set_location('py_za_tx_utl_01032009.Abatements - Package Structure',50);
1323: l_TotTxbNIYtd := py_za_tx_01032009.bal_TOT_TXB_NI_CYTD
1324: * py_za_tx_01032009.trc_SitFactor;
1325:
1326: l_TotTxbFBYtd := py_za_tx_01032009.bal_TOT_TXB_FB_CYTD
1338: l_TotTxbIncEEDbtPkgYtd := ( l_TotTxbIncPkgYtd
1339: + py_za_tx_01032009.bal_TOT_TXB_EE_DBT_NTG_YTD );
1340:
1341:
1342: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),50);
1343: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),50);
1344: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),50);
1345: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),50);
1346: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),50);
1339: + py_za_tx_01032009.bal_TOT_TXB_EE_DBT_NTG_YTD );
1340:
1341:
1342: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),50);
1343: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),50);
1344: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),50);
1345: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),50);
1346: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),50);
1347: hr_utility.set_location('l_TotTxbIncEEDbtPkgYtd :'||to_char(l_TotTxbIncEEDbtPkgYtd),50);
1340:
1341:
1342: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),50);
1343: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),50);
1344: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),50);
1345: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),50);
1346: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),50);
1347: hr_utility.set_location('l_TotTxbIncEEDbtPkgYtd :'||to_char(l_TotTxbIncEEDbtPkgYtd),50);
1348:
1341:
1342: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),50);
1343: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),50);
1344: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),50);
1345: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),50);
1346: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),50);
1347: hr_utility.set_location('l_TotTxbIncEEDbtPkgYtd :'||to_char(l_TotTxbIncEEDbtPkgYtd),50);
1348:
1349:
1342: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),50);
1343: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),50);
1344: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),50);
1345: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),50);
1346: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),50);
1347: hr_utility.set_location('l_TotTxbIncEEDbtPkgYtd :'||to_char(l_TotTxbIncEEDbtPkgYtd),50);
1348:
1349:
1350: end if;
1343: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),50);
1344: hr_utility.set_location('l_TotTxbTAYtd :'||to_char(l_TotTxbTAYtd),50);
1345: hr_utility.set_location('l_TotTxbPOYtd :'||to_char(l_TotTxbPOYtd),50);
1346: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),50);
1347: hr_utility.set_location('l_TotTxbIncEEDbtPkgYtd :'||to_char(l_TotTxbIncEEDbtPkgYtd),50);
1348:
1349:
1350: end if;
1351:
1383:
1384: --------------------------------
1385: -- Arrear Pension Fund Abatement
1386: --------------------------------
1387: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',61);
1388: -------------
1389: -- Excess ITD
1390: -------------
1391: py_za_tx_01032009.trc_PerArrPenFnd :=
1407:
1408: -------------------------------
1409: -- Retirement Annuity Abatement
1410: -------------------------------
1411: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',62);
1412:
1413: -------------
1414: -- Current RA
1415: -------------
1420: ---------------------
1421: -- Current NRFI Contr
1422: ---------------------
1423:
1424: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',63);
1425: py_za_tx_01032009.trc_PerNrfiCon :=
1426: py_za_tx_01032009.bal_TOT_NRFI_INC_CYTD
1427: * py_za_tx_01032009.trc_SitFactor;
1428:
1433: py_za_tx_01032009.trc_PerRetAnu
1434: + py_za_tx_01032009.bal_ANN_RA_YTD;
1435:
1436:
1437: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',64);
1438: py_za_tx_01032009.trc_AnnNrfiCon :=
1439: py_za_tx_01032009.trc_PerNrfiCon
1440: + py_za_tx_01032009.bal_TOT_NRFI_AN_INC_YTD;
1441:
1448:
1449: --------------------------------------
1450: -- Arrear Retirement Annuity Abatement
1451: --------------------------------------
1452: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',65);
1453: -------------
1454: -- Excess ITD
1455: -------------
1456: py_za_tx_01032009.trc_PerArrRetAnu := py_za_tx_01032009.bal_EXC_ARR_RA_ITD;
1510: py_za_tx_01032009.trc_PerIncProPolAbm :=
1511: py_za_tx_01032009.bal_EE_INC_PRO_POL_CYTD
1512: * py_za_tx_01032009.trc_SitFactor;
1513:
1514: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',66);
1515:
1516: ---------------------
1517: -- Annual Calculation
1518: ---------------------
1532: py_za_tx_01032009.trc_PerDonAmt :=
1533: py_za_tx_01032009.bal_DONAT_MD_EE_CYTD
1534: * py_za_tx_01032009.trc_SitFactor;
1535:
1536: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',67);
1537:
1538: ---------------------
1539: -- Annual Calculation
1540: ---------------------
1546:
1547: -------------------------------------------------------------------------
1548: ELSIF py_za_tx_01032009.trc_CalTyp IN ('BasCalc') THEN --
1549: -------------------------------------------------------------------------
1550: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',67);
1551:
1552: -- Bug 9369895
1553: -- If employee is on Fixed Percentage of Total Package then calculate the Total Taxable Income
1554: -- which includes both periodic and annual income. This will be used in calculation of Pension
1553: -- If employee is on Fixed Percentage of Total Package then calculate the Total Taxable Income
1554: -- which includes both periodic and annual income. This will be used in calculation of Pension
1555: -- fund abatement
1556: if py_za_tx_01032009.trc_PenBasis = 1 then
1557: hr_utility.set_location('py_za_tx_utl_01032009.Abatements - Package Structure',68);
1558:
1559: l_TotTxbIncPkgYtd := ( py_za_tx_01032009.bal_TOT_TXB_AB_YTD
1560: + py_za_tx_01032009.bal_TOT_TXB_AP_YTD
1561: + py_za_tx_01032009.bal_TOT_TXB_AP_NTG_YTD );
1562:
1563: l_TotTxbIncEEDbtPkgYtd := ( l_TotTxbIncPkgYtd
1564: + py_za_tx_01032009.bal_TOT_TXB_EE_DBT_NTG_YTD );
1565:
1566: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),68);
1567: hr_utility.set_location('l_TotTxbIncEEDbtPkgYtd :'||to_char(l_TotTxbIncEEDbtPkgYtd),68);
1568:
1569:
1570: end if;
1563: l_TotTxbIncEEDbtPkgYtd := ( l_TotTxbIncPkgYtd
1564: + py_za_tx_01032009.bal_TOT_TXB_EE_DBT_NTG_YTD );
1565:
1566: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),68);
1567: hr_utility.set_location('l_TotTxbIncEEDbtPkgYtd :'||to_char(l_TotTxbIncEEDbtPkgYtd),68);
1568:
1569:
1570: end if;
1571:
1585: py_za_tx_01032009.trc_AnnRfiCon
1586: + py_za_tx_01032009.bal_TOT_RFI_EE_DBT_NTG_YTD;
1587:
1588:
1589: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',78);
1590:
1591: --------------------------------
1592: -- Arrear Pension Fund Abatement
1593: --------------------------------
1590:
1591: --------------------------------
1592: -- Arrear Pension Fund Abatement
1593: --------------------------------
1594: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',79);
1595: -------------
1596: -- Excess ITD
1597: -------------
1598: py_za_tx_01032009.trc_PerArrPenFnd := py_za_tx_01032009.bal_EXC_ARR_PEN_ITD;
1606:
1607: -------------------------------
1608: -- Retirement Annuity Abatement
1609: -------------------------------
1610: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',80);
1611:
1612: ------------
1613: -- Annual RA
1614: ------------
1613: -- Annual RA
1614: ------------
1615: py_za_tx_01032009.trc_AnnRetAnu := py_za_tx_01032009.bal_ANN_RA_YTD;
1616:
1617: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',81);
1618: py_za_tx_01032009.trc_AnnNrfiCon := py_za_tx_01032009.bal_TOT_NRFI_AN_INC_YTD;
1619: -- NTG
1620: -- Annual EE Debt NRFI Contribution
1621: py_za_tx_01032009.trc_AnnNrfiEEDbtNTGCon :=
1625:
1626: --------------------------------------
1627: -- Arrear Retirement Annuity Abatement
1628: --------------------------------------
1629: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',82);
1630: -------------
1631: -- Excess ITD
1632: -------------
1633: py_za_tx_01032009.trc_PerArrRetAnu := py_za_tx_01032009.bal_EXC_ARR_RA_ITD;
1643: ------------------------
1644: py_za_tx_01032009.trc_PerMedAidAbm := 0;
1645: py_za_tx_01032009.trc_AnnMedAidAbm := 0;
1646:
1647: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',83);
1648:
1649:
1650: ---------------------------
1651: -- Income Protection Policy
1657: py_za_tx_01032009.trc_AnnIncProPolAbm :=
1658: py_za_tx_01032009.bal_ANN_EE_INC_PRO_POL_YTD;
1659:
1660:
1661: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',84);
1662:
1663: --TYS2010
1664: -------------------------------
1665: -- Donation made by EE pd by ER
1671: -- Annual Donation
1672: py_za_tx_01032009.trc_AnnDonAmt :=
1673: py_za_tx_01032009.bal_ANN_DONAT_MD_EE_YTD;
1674:
1675: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',85);
1676:
1677: -------------------------------------------------------------------------
1678: ELSIF py_za_tx_01032009.trc_CalTyp = 'SeaCalc' THEN --
1679: -------------------------------------------------------------------------
1676:
1677: -------------------------------------------------------------------------
1678: ELSIF py_za_tx_01032009.trc_CalTyp = 'SeaCalc' THEN --
1679: -------------------------------------------------------------------------
1680: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',88);
1681:
1682: -- Bug 9369895
1683: -- If employee is on Fixed Percentage of Total Package then calculate the Total Taxable Income
1684: -- which includes both periodic and annual income. This will be used in calculation of Pension
1683: -- If employee is on Fixed Percentage of Total Package then calculate the Total Taxable Income
1684: -- which includes both periodic and annual income. This will be used in calculation of Pension
1685: -- fund abatement
1686: if py_za_tx_01032009.trc_PenBasis = 1 then
1687: hr_utility.set_location('py_za_tx_utl_01032009.Abatements - Package Structure',89);
1688:
1689: l_TotTxbNIYtd := py_za_tx_01032009.bal_TOT_TXB_NI_RUN
1690: * py_za_tx_01032009.trc_SitFactor;
1691:
1693: * py_za_tx_01032009.trc_SitFactor;
1694:
1695: l_TotTxbIncPkgYtd := ( l_TotTxbNIYtd + l_TotTxbFBYtd
1696: + py_za_tx_01032009.bal_TOT_TXB_AP_RUN );
1697: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),89);
1698: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),89);
1699: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),89);
1700:
1701: end if;
1694:
1695: l_TotTxbIncPkgYtd := ( l_TotTxbNIYtd + l_TotTxbFBYtd
1696: + py_za_tx_01032009.bal_TOT_TXB_AP_RUN );
1697: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),89);
1698: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),89);
1699: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),89);
1700:
1701: end if;
1702:
1695: l_TotTxbIncPkgYtd := ( l_TotTxbNIYtd + l_TotTxbFBYtd
1696: + py_za_tx_01032009.bal_TOT_TXB_AP_RUN );
1697: hr_utility.set_location('l_TotTxbNIYtd :'||to_char(l_TotTxbNIYtd),89);
1698: hr_utility.set_location('l_TotTxbFBYtd :'||to_char(l_TotTxbFBYtd),89);
1699: hr_utility.set_location('l_TotTxbIncPkgYtd :'||to_char(l_TotTxbIncPkgYtd),89);
1700:
1701: end if;
1702:
1703: -------------------------
1734:
1735: -------------------------------
1736: -- Retirement Annuity Abatement
1737: -------------------------------
1738: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',89);
1739:
1740: -------------
1741: -- Current RA
1742: -------------
1747: ---------------------
1748: -- Current NRFI Contr
1749: ---------------------
1750:
1751: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',90);
1752: py_za_tx_01032009.trc_PerNrfiCon :=
1753: py_za_tx_01032009.bal_TOT_NRFI_INC_RUN
1754: * py_za_tx_01032009.trc_SitFactor;
1755:
1761: py_za_tx_01032009.trc_PerRetAnu
1762: + py_za_tx_01032009.bal_ANN_RA_RUN;
1763:
1764:
1765: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',91);
1766: py_za_tx_01032009.trc_AnnNrfiCon :=
1767: py_za_tx_01032009.trc_PerNrfiCon
1768: + py_za_tx_01032009.bal_TOT_NRFI_AN_INC_RUN;
1769:
1815: py_za_tx_01032009.trc_PerIncProPolAbm :=
1816: py_za_tx_01032009.bal_EE_INC_PRO_POL_RUN
1817: * py_za_tx_01032009.trc_SitFactor;
1818:
1819: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',92);
1820:
1821: ---------------------
1822: -- Annual Calculation
1823: ---------------------
1838: py_za_tx_01032009.trc_PerDonAmt :=
1839: py_za_tx_01032009.bal_DONAT_MD_EE_RUN
1840: * py_za_tx_01032009.trc_SitFactor;
1841:
1842: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',93);
1843:
1844: ---------------------
1845: -- Annual Calculation
1846: ---------------------
1852: --Abatements will not be calculated for LteCalc as a part of bug 8844712
1853: -------------------------------------------------------------------------
1854: ELSIF py_za_tx_01032009.trc_CalTyp = 'LteCalc' THEN --
1855: -------------------------------------------------------------------------
1856: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',95);
1857: -------------------------
1858: -- Pension Fund Abatement
1859: -------------------------
1860: ---------------------
1886:
1887: --------------------------------
1888: -- Arrear Pension Fund Abatement
1889: --------------------------------
1890: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',104);
1891: -------------
1892: -- Excess ITD
1893: -------------
1894: py_za_tx_01032009.trc_PerArrPenFnd :=
1908:
1909: -------------------------------
1910: -- Retirement Annuity Abatement
1911: -------------------------------
1912: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',105);
1913: -------------
1914: -- Current RA
1915: -------------
1916: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',106);
1912: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',105);
1913: -------------
1914: -- Current RA
1915: -------------
1916: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',106);
1917: -- Calculate RA Contribution
1918: py_za_tx_01032009.trc_PerRetAnu :=
1919: py_za_tx_01032009.bal_CUR_RA_YTD;
1920: ---------------------
1920: ---------------------
1921: -- Current NRFI Contr
1922: ---------------------
1923:
1924: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',107);
1925: py_za_tx_01032009.trc_PerNrfiCon :=
1926: py_za_tx_01032009.bal_TOT_NRFI_INC_YTD;
1927:
1928:
1933: py_za_tx_01032009.trc_PerRetAnu
1934: + py_za_tx_01032009.bal_ANN_RA_YTD;
1935:
1936:
1937: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',108);
1938: py_za_tx_01032009.trc_AnnNrfiCon :=
1939: py_za_tx_01032009.trc_PerNrfiCon
1940: + py_za_tx_01032009.bal_TOT_NRFI_AN_INC_YTD;
1941:
1947:
1948: --------------------------------------
1949: -- Arrear Retirement Annuity Abatement
1950: --------------------------------------
1951: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',109);
1952: -------------
1953: -- Excess ITD
1954: -------------
1955: py_za_tx_01032009.trc_PerArrRetAnu :=
2004: -- Annualise Income Protection Policy Contributions
2005: py_za_tx_01032009.trc_PerIncProPolAbm :=
2006: py_za_tx_01032009.bal_EE_INC_PRO_POL_YTD;
2007:
2008: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',110);
2009:
2010: ---------------------
2011: -- Annual Calculation
2012: ---------------------
2026: -- Annualise Donation Amount
2027: py_za_tx_01032009.trc_PerDonAmt :=
2028: py_za_tx_01032009.bal_DONAT_MD_EE_YTD;
2029:
2030: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',111);
2031:
2032: ---------------------
2033: -- Annual Calculation
2034: ---------------------
2040:
2041: -------------------------------------------------------------------------
2042: ELSIF py_za_tx_01032009.trc_CalTyp = 'PstCalc' THEN --
2043: -------------------------------------------------------------------------
2044: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',117);
2045: -------------------------
2046: -- Pension Fund Abatement
2047: -------------------------
2048: ---------------------
2075: + py_za_tx_01032009.bal_TOT_RFI_EE_DBT_NTG_YTD;
2076: --------------------------------
2077: -- Arrear Pension Fund Abatement
2078: --------------------------------
2079: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',118);
2080: -------------
2081: -- Excess ITD
2082: -------------
2083: py_za_tx_01032009.trc_PerArrPenFnd :=
2099:
2100: -------------------------------
2101: -- Retirement Annuity Abatement
2102: -------------------------------
2103: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',119);
2104:
2105: -------------
2106: -- Current RA
2107: -------------
2112: ---------------------
2113: -- Current NRFI Contr
2114: ---------------------
2115:
2116: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',120);
2117: py_za_tx_01032009.trc_PerNrfiCon :=
2118: py_za_tx_01032009.bal_TOT_NRFI_INC_PTD
2119: * py_za_tx_01032009.trc_SitFactor;
2120:
2126: py_za_tx_01032009.trc_PerRetAnu
2127: + py_za_tx_01032009.bal_ANN_RA_PTD;
2128:
2129:
2130: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',121);
2131: py_za_tx_01032009.trc_AnnNrfiCon :=
2132: py_za_tx_01032009.trc_PerNrfiCon
2133: + py_za_tx_01032009.bal_TOT_NRFI_AN_INC_PTD;
2134:
2140:
2141: --------------------------------------
2142: -- Arrear Retirement Annuity Abatement
2143: --------------------------------------
2144: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',122);
2145: -------------
2146: -- Excess ITD
2147: -------------
2148: py_za_tx_01032009.trc_PerArrRetAnu :=
2204: py_za_tx_01032009.trc_PerIncProPolAbm :=
2205: py_za_tx_01032009.bal_EE_INC_PRO_POL_PTD
2206: * py_za_tx_01032009.trc_SitFactor;
2207:
2208: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',123);
2209:
2210: ---------------------
2211: -- Annual Calculation
2212: ---------------------
2228: py_za_tx_01032009.bal_DONAT_MD_EE_PTD
2229: * py_za_tx_01032009.trc_SitFactor;
2230:
2231:
2232: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',124);
2233:
2234: ---------------------
2235: -- Annual Calculation
2236: ---------------------
2247:
2248: ----------------------------------------------------------------------------
2249: -- CALCULATE THE ABATEMENTS --
2250: ----------------------------------------------------------------------------
2251: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',124);
2252: -- Check the Calculation Type
2253: /*
2254: IF py_za_tx_01032009.trc_CalTyp = 'PstCalc' THEN
2255: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',125);
2251: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',124);
2252: -- Check the Calculation Type
2253: /*
2254: IF py_za_tx_01032009.trc_CalTyp = 'PstCalc' THEN
2255: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',125);
2256: -- Employee Tax Year Start and End Dates
2257: --
2258: l_EndDate := py_za_tx_01032009.dbi_ZA_ASG_TX_YR_END;
2259:
2256: -- Employee Tax Year Start and End Dates
2257: --
2258: l_EndDate := py_za_tx_01032009.dbi_ZA_ASG_TX_YR_END;
2259:
2260: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',126);
2261:
2262: -- Global Values
2263: l_ZA_TX_YR_END := l_EndDate;
2264: l_ZA_ARR_PF_AN_MX_ABT := GlbVal('ZA_ARREAR_PEN_AN_MAX_ABATE',l_EndDate);
2270: -- Bug 8691928
2271: py_za_tx_01032009.trc_AllowDonPerc := GlbVal('ZA_ALLOWABLE_DONATION_PERC' ,l_EndDate);
2272:
2273: ELSE */
2274: hr_utility.set_location('py_za_tx_utl_01032009.Abatements',127);
2275: -- Set locals to current values
2276: l_ZA_TX_YR_END := py_za_tx_01032009.dbi_ZA_TX_YR_END;
2277: l_ZA_ARR_PF_AN_MX_ABT := py_za_tx_01032009.glb_ZA_ARR_PF_AN_MX_ABT;
2278: l_ZA_ARR_RA_AN_MX_ABT := py_za_tx_01032009.glb_ZA_ARR_RA_AN_MX_ABT;
2517: l_PfExcessAmt NUMBER;
2518: l_RaExcessAmt NUMBER;
2519:
2520: BEGIN
2521: hr_utility.set_location('py_za_tx_utl_01032009.ArrearExcess',1);
2522: -- Pension Excess
2523: l_PfExcessAmt := ( py_za_tx_01032009.bal_ARR_PF_YTD
2524: + ( py_za_tx_01032009.bal_EXC_ARR_PEN_ITD
2525: - py_za_tx_01032009.bal_EXC_ARR_PEN_YTD
2526: )
2527: ) - py_za_tx_01032009.glb_ZA_ARR_PF_AN_MX_ABT;
2528:
2529: IF l_PfExcessAmt > 0 THEN
2530: hr_utility.set_location('py_za_tx_utl_01032009.ArrearExcess',2);
2531: py_za_tx_01032009.trc_PfUpdFig := l_PfExcessAmt - py_za_tx_01032009.bal_EXC_ARR_PEN_ITD;
2532: ELSE
2533: hr_utility.set_location('py_za_tx_utl_01032009.ArrearExcess',3);
2534: py_za_tx_01032009.trc_PfUpdFig := -1*(py_za_tx_01032009.bal_EXC_ARR_PEN_ITD);
2529: IF l_PfExcessAmt > 0 THEN
2530: hr_utility.set_location('py_za_tx_utl_01032009.ArrearExcess',2);
2531: py_za_tx_01032009.trc_PfUpdFig := l_PfExcessAmt - py_za_tx_01032009.bal_EXC_ARR_PEN_ITD;
2532: ELSE
2533: hr_utility.set_location('py_za_tx_utl_01032009.ArrearExcess',3);
2534: py_za_tx_01032009.trc_PfUpdFig := -1*(py_za_tx_01032009.bal_EXC_ARR_PEN_ITD);
2535: END IF;
2536:
2537: -- Retirement Annuity
2541: )
2542: ) - py_za_tx_01032009.glb_ZA_ARR_RA_AN_MX_ABT;
2543:
2544: IF l_RaExcessAmt > 0 THEN
2545: hr_utility.set_location('py_za_tx_utl_01032009.ArrearExcess',4);
2546: py_za_tx_01032009.trc_RaUpdFig := l_RaExcessAmt - py_za_tx_01032009.bal_EXC_ARR_RA_ITD;
2547: ELSE
2548: hr_utility.set_location('py_za_tx_utl_01032009.ArrearExcess',5);
2549: py_za_tx_01032009.trc_RaUpdFig := -1*(py_za_tx_01032009.bal_EXC_ARR_RA_ITD);
2544: IF l_RaExcessAmt > 0 THEN
2545: hr_utility.set_location('py_za_tx_utl_01032009.ArrearExcess',4);
2546: py_za_tx_01032009.trc_RaUpdFig := l_RaExcessAmt - py_za_tx_01032009.bal_EXC_ARR_RA_ITD;
2547: ELSE
2548: hr_utility.set_location('py_za_tx_utl_01032009.ArrearExcess',5);
2549: py_za_tx_01032009.trc_RaUpdFig := -1*(py_za_tx_01032009.bal_EXC_ARR_RA_ITD);
2550: END IF;
2551:
2552: hr_utility.set_location('py_za_tx_utl_01032009.ArrearExcess',6);
2548: hr_utility.set_location('py_za_tx_utl_01032009.ArrearExcess',5);
2549: py_za_tx_01032009.trc_RaUpdFig := -1*(py_za_tx_01032009.bal_EXC_ARR_RA_ITD);
2550: END IF;
2551:
2552: hr_utility.set_location('py_za_tx_utl_01032009.ArrearExcess',6);
2553: WriteHrTrace('l_PfExcessAmt: '||to_char(l_PfExcessAmt));
2554: WriteHrTrace('l_RaExcessAmt: '||to_char(l_RaExcessAmt));
2555:
2556: EXCEPTION
2576: l_ColumnID pay_user_columns.user_column_id%TYPE;
2577: l_RowID pay_user_rows_f.user_row_id%TYPE;
2578: l_TableValue pay_user_column_instances_f.value%TYPE;
2579: BEGIN
2580: hr_utility.set_location('py_za_tx_utl_01032009.GetTableValue',1);
2581: -- Get the user_table_id
2582: --
2583: select put.user_table_id
2584: INTO l_UserTableID
2585: from pay_user_tables put
2586: where upper(put.user_table_name) = upper(p_TableName)
2587: AND put.legislation_code = 'ZA';
2588:
2589: hr_utility.set_location('py_za_tx_utl_01032009.GetTableValue',2);
2590: -- Get the user_column_id
2591: --
2592: select puc.user_column_id
2593: INTO l_ColumnID
2596: AND puc.legislation_code = 'ZA'
2597: and puc.business_group_id is null
2598: AND upper(puc.user_column_name) = upper(p_ColumnName);
2599:
2600: hr_utility.set_location('py_za_tx_utl_01032009.GetTableValue',3);
2601: -- Get the user_row_id
2602: --
2603: select pur.user_row_id
2604: INTO l_RowID
2620: , FFFUNC.CN(pur.row_high_range)
2621: , p_RowValue-1
2622: );
2623:
2624: hr_utility.set_location('py_za_tx_utl_01032009.GetTableValue',4);
2625: -- Get the value
2626: --
2627: SELECT pucif.value
2628: INTO l_TableValue
2632: AND pucif.legislation_code = 'ZA'
2633: and p_EffectiveDate BETWEEN pucif.effective_start_date
2634: AND pucif.effective_end_date;
2635:
2636: hr_utility.set_location('py_za_tx_utl_01032009.GetTableValue',5);
2637: RETURN l_TableValue;
2638: EXCEPTION
2639: WHEN OTHERS THEN
2640: IF py_za_tx_01032009.xpt_Msg = 'No Error' THEN
2659: tax_liability t_Balance;
2660: l_TxbAmt t_Balance;
2661: --
2662: BEGIN
2663: hr_utility.set_location('py_za_tx_utl_01032009.TaxLiability',1);
2664: -------------------------------------------------------------------------------
2665: -- First Check for a Tax Override
2666: -------------------------------------------------------------------------------
2667: IF py_za_tx_01032009.trc_OvrTxCalc AND py_za_tx_01032009.trc_OvrTyp = 'P' THEN
2664: -------------------------------------------------------------------------------
2665: -- First Check for a Tax Override
2666: -------------------------------------------------------------------------------
2667: IF py_za_tx_01032009.trc_OvrTxCalc AND py_za_tx_01032009.trc_OvrTyp = 'P' THEN
2668: hr_utility.set_location('py_za_tx_utl_01032009.TaxLiability',2);
2669: tax_liability := (p_Amt * py_za_tx_01032009.trc_OvrPrc) / 100;
2670: -------------------------------------------------------------------------------
2671: -- D = Directive Percentage
2672: -- P = Private Director wth Directive Percentage
2671: -- D = Directive Percentage
2672: -- P = Private Director wth Directive Percentage
2673: -------------------------------------------------------------------------------
2674: ELSIF py_za_tx_01032009.dbi_TX_STA IN ('D','P') THEN
2675: hr_utility.set_location('py_za_tx_utl_01032009.TaxLiability',3);
2676: tax_liability := (p_Amt * py_za_tx_01032009.dbi_TX_DIR_VAL) / 100;
2677: -------------------------------------------------------------------------------
2678: -- E = Close Corporation
2679: -------------------------------------------------------------------------------
2677: -------------------------------------------------------------------------------
2678: -- E = Close Corporation
2679: -------------------------------------------------------------------------------
2680: ELSIF py_za_tx_01032009.dbi_TX_STA = 'E' THEN
2681: hr_utility.set_location('py_za_tx_utl_01032009.TaxLiability',4);
2682: tax_liability := (p_Amt * py_za_tx_01032009.glb_ZA_CC_TX_PRC) / 100;
2683: -------------------------------------------------------------------------------
2684: -- F = Temporary Worker/Student
2685: -------------------------------------------------------------------------------
2683: -------------------------------------------------------------------------------
2684: -- F = Temporary Worker/Student
2685: -------------------------------------------------------------------------------
2686: ELSIF py_za_tx_01032009.dbi_TX_STA = 'F' THEN
2687: hr_utility.set_location('py_za_tx_utl_01032009.TaxLiability',5);
2688: tax_liability := (p_Amt * py_za_tx_01032009.glb_ZA_TMP_TX_RTE) / 100;
2689: -------------------------------------------------------------------------------
2690: -- J = Personal Service Company
2691: -------------------------------------------------------------------------------
2689: -------------------------------------------------------------------------------
2690: -- J = Personal Service Company
2691: -------------------------------------------------------------------------------
2692: ELSIF py_za_tx_01032009.dbi_TX_STA = 'J' THEN
2693: hr_utility.set_location('py_za_tx_utl_01032009.TaxLiability',6);
2694: tax_liability := (p_Amt * py_za_tx_01032009.glb_ZA_PER_SERV_COMP_PERC) / 100;
2695: -------------------------------------------------------------------------------
2696: -- K = Personal Service Trust
2697: -------------------------------------------------------------------------------
2695: -------------------------------------------------------------------------------
2696: -- K = Personal Service Trust
2697: -------------------------------------------------------------------------------
2698: ELSIF py_za_tx_01032009.dbi_TX_STA = 'K' THEN
2699: hr_utility.set_location('py_za_tx_utl_01032009.TaxLiability',7);
2700: tax_liability := (p_Amt * py_za_tx_01032009.glb_ZA_PER_SERV_TRST_PERC) / 100;
2701: -------------------------------------------------------------------------------
2702: -- L = Labour Broker
2703: -------------------------------------------------------------------------------
2701: -------------------------------------------------------------------------------
2702: -- L = Labour Broker
2703: -------------------------------------------------------------------------------
2704: ELSIF py_za_tx_01032009.dbi_TX_STA = 'L' THEN
2705: hr_utility.set_location('py_za_tx_utl_01032009.TaxLiability',8);
2706: tax_liability := (p_Amt * py_za_tx_01032009.glb_ZA_PER_SERV_COMP_PERC) / 100;
2707: -------------------------------------------------------------------------------
2708: -- A = Normal
2709: -- B = Provisional
2710: -- G = Seasonal Worker
2711: -- M = Private Director
2712: -------------------------------------------------------------------------------
2713: ELSIF py_za_tx_01032009.dbi_TX_STA IN ('A','B','G','M') THEN
2714: hr_utility.set_location('py_za_tx_utl_01032009.TaxLiability',9);
2715: --Bug 8844712
2716: if py_za_tx_01032009.trc_CalTyp = 'LteCalc' and py_za_tx_01032009.trc_LateSitePaye = 0 then
2717: hr_utility.set_location('py_za_tx_utl_01032009.TaxLiability',10);
2718: tax_liability := (p_Amt * py_za_tx_01032009.glb_ZA_LATE_PAYMENT_PERC) / 100;
2713: ELSIF py_za_tx_01032009.dbi_TX_STA IN ('A','B','G','M') THEN
2714: hr_utility.set_location('py_za_tx_utl_01032009.TaxLiability',9);
2715: --Bug 8844712
2716: if py_za_tx_01032009.trc_CalTyp = 'LteCalc' and py_za_tx_01032009.trc_LateSitePaye = 0 then
2717: hr_utility.set_location('py_za_tx_utl_01032009.TaxLiability',10);
2718: tax_liability := (p_Amt * py_za_tx_01032009.glb_ZA_LATE_PAYMENT_PERC) / 100;
2719: else
2720: -- Taxable Amount must be rounded off to two decimal places
2721: l_TxbAmt := round(p_Amt,2);
2722:
2723: -- effective date for the payroll_run
2724: l_effective_date := py_za_tx_01032009.dbi_PAY_PROC_PRD_DTE_PD;
2725:
2726: hr_utility.set_location('py_za_tx_utl_01032009.TaxLiability',10);
2727: l_fixed := GetTableValue('ZA_TAX_TABLE','Fixed',l_TxbAmt,l_effective_date);
2728: l_limit := GetTableValue('ZA_TAX_TABLE','Limit',l_TxbAmt,l_effective_date);
2729: l_percentage := GetTableValue('ZA_TAX_TABLE','Percentage',l_TxbAmt,l_effective_date);
2730: tax_liability := (l_fixed + ((l_TxbAmt - l_limit) * (l_percentage / 100)));
2728: l_limit := GetTableValue('ZA_TAX_TABLE','Limit',l_TxbAmt,l_effective_date);
2729: l_percentage := GetTableValue('ZA_TAX_TABLE','Percentage',l_TxbAmt,l_effective_date);
2730: tax_liability := (l_fixed + ((l_TxbAmt - l_limit) * (l_percentage / 100)));
2731: tax_liability := greatest(tax_liability - py_za_tx_01032009.trc_Rebate,0);
2732: hr_utility.set_location('py_za_tx_utl_01032009.TaxLiability',11);
2733: end if;
2734: -------------------------------------------------------------------------------
2735: -- Tax Status invalid for the call to TaxLiability
2736: -------------------------------------------------------------------------------
2734: -------------------------------------------------------------------------------
2735: -- Tax Status invalid for the call to TaxLiability
2736: -------------------------------------------------------------------------------
2737: ELSE
2738: hr_utility.set_location('py_za_tx_utl_01032009.TaxLiability',12);
2739: IF py_za_tx_01032009.xpt_Msg = 'No Error' THEN
2740: py_za_tx_01032009.xpt_Msg := 'TaxLiability: Invalid Tax Status';
2741: END IF;
2742: RAISE py_za_tx_01032009.xpt_E;
2772: l_LiabRoy3 t_balance;
2773: l_LiabRoy4 t_balance;
2774: l_LiabFp t_balance;
2775: BEGIN
2776: hr_utility.set_location('py_za_tx_utl_01032009.DeAnnualise',1);
2777: IF py_za_tx_01032009.dbi_TX_MTD = 'C' THEN -- Cumulative Tax Method
2778: -- 1
2779: l_LiabRoy1 := p_liab / py_za_tx_01032009.trc_PosFactor;
2780: -- 2
2785: l_LiabRoy4 := l_LiabRoy3 * py_za_tx_01032009.trc_PrdFactor;
2786: -- 5
2787: l_LiabFp := l_LiabRoy4 - p_TxOnPtd;
2788: --
2789: hr_utility.set_location('py_za_tx_utl_01032009.DeAnnualise',2);
2790: --
2791: WriteHrTrace('p_liab: '||to_char(p_liab));
2792: WriteHrTrace('py_za_tx_01032009.trc_PosFactor: '||to_char(py_za_tx_01032009.trc_PosFactor));
2793: WriteHrTrace('l_LiabRoy1: '||to_char(l_LiabRoy1));
2799: WriteHrTrace('py_za_tx_01032009.trc_PrdFactor: '||to_char(py_za_tx_01032009.trc_PrdFactor));
2800: WriteHrTrace('l_LiabRoy4: '||to_char(l_LiabRoy4));
2801: WriteHrTrace('l_LiabFp: '||to_char(l_LiabFp));
2802: ELSE -- Non Cumulative Tax Method
2803: hr_utility.set_location('py_za_tx_utl_01032009.Annualise',3);
2804:
2805: l_LiabFp := p_Liab / py_za_tx_01032009.dbi_ZA_PAY_PRDS_PER_YR;
2806: WriteHrTrace('p_liab: '||to_char(p_liab));
2807: WriteHrTrace('py_za_tx_01032009.dbi_ZA_PAY_PRDS_PER_YR:'||to_char(py_za_tx_01032009.dbi_ZA_PAY_PRDS_PER_YR));
2848: l_TotTxbRfi t_balance DEFAULT 0;
2849: l_GlbVal ff_globals_f.global_value%TYPE DEFAULT '0';
2850:
2851: BEGIN
2852: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',1);
2853: -- Retrieve Balance Type ID's
2854:
2855: SELECT balance_type_id
2856: INTO l_RfiBalID
2860:
2861: -- Check Calc and setup correct values
2862: --
2863: IF py_za_tx_01032009.trc_CalTyp in ('DirCalc','NorCalc','SitCalc','YtdCalc') THEN
2864: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',3);
2865: -- Employee Tax Year Start and End Dates
2866: --
2867: l_StrtDate := GREATEST( py_za_tx_01032009.dbi_ZA_ACT_STRT_DTE
2868: , py_za_tx_01032009.dbi_ZA_TX_YR_STRT
2872: , py_za_tx_01032009.dbi_ZA_CUR_PRD_END_DTE
2873: );
2874:
2875: ELSIF py_za_tx_01032009.trc_CalTyp = 'CalCalc' THEN
2876: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',4);
2877: -- Employee Tax Year Start and End Dates
2878: --
2879: l_StrtDate := to_date('01-01-'||to_char(py_za_tx_01032009.dbi_ZA_TX_YR_STRT,'YYYY')||''||'','DD-MM-YYYY');
2880: l_EndDate := py_za_tx_01032009.dbi_ZA_TX_YR_STRT -1;
2879: l_StrtDate := to_date('01-01-'||to_char(py_za_tx_01032009.dbi_ZA_TX_YR_STRT,'YYYY')||''||'','DD-MM-YYYY');
2880: l_EndDate := py_za_tx_01032009.dbi_ZA_TX_YR_STRT -1;
2881: -- Bug 8844712
2882: ELSIF py_za_tx_01032009.trc_CalTyp = 'LteCalc' THEN
2883: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',5);
2884: -- Employee Tax Year Start and End Dates
2885: --
2886: l_StrtDate := py_za_tx_01032009.dbi_ZA_TX_YR_STRT;
2887: l_EndDate := py_za_tx_01032009.dbi_ZA_CUR_PRD_END_DTE;
2886: l_StrtDate := py_za_tx_01032009.dbi_ZA_TX_YR_STRT;
2887: l_EndDate := py_za_tx_01032009.dbi_ZA_CUR_PRD_END_DTE;
2888: --PstCalc is not set as a part of Bug 8844712
2889: /*ELSIF py_za_tx_01032009.trc_CalTyp = 'PstCalc' THEN
2890: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',6);
2891: -- Employee Tax Year Start and End Dates
2892: --
2893: l_StrtDate := py_za_tx_01032009.dbi_ZA_ASG_TX_YR_STRT;
2894: l_EndDate := py_za_tx_01032009.dbi_ZA_ASG_TX_YR_END; */
2893: l_StrtDate := py_za_tx_01032009.dbi_ZA_ASG_TX_YR_STRT;
2894: l_EndDate := py_za_tx_01032009.dbi_ZA_ASG_TX_YR_END; */
2895: END IF;
2896:
2897: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',7);
2898:
2899: -- Loop through cursor and for every end date calculate the balance
2900: FOR v_Date IN c_GlbEffDte
2901: (l_StrtDate
2903: )
2904: LOOP
2905: -- Rfi Travel Allowance
2906: --
2907: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',11);
2908: -- Check Calc Type
2909: IF py_za_tx_01032009.trc_CalTyp in ('DirCalc','NorCalc','SitCalc','YtdCalc','LteCalc','PstCalc') THEN
2910: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',12);
2911: -- Rfi Balance At That Date
2906: --
2907: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',11);
2908: -- Check Calc Type
2909: IF py_za_tx_01032009.trc_CalTyp in ('DirCalc','NorCalc','SitCalc','YtdCalc','LteCalc','PstCalc') THEN
2910: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',12);
2911: -- Rfi Balance At That Date
2912: l_RfiYtd := py_za_bal.get_balance_value
2913: ( py_za_tx_01032009.con_ASG_ID
2914: , l_RfiBalID
2915: , '_ASG_TAX_YTD'
2916: , v_Date.effective_end_date
2917: );
2918: ELSIF py_za_tx_01032009.trc_CalTyp = 'CalCalc' THEN
2919: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',13);
2920: -- Rfi Balance At That Date
2921: l_RfiYtd := py_za_bal.get_balance_value
2922: ( py_za_tx_01032009.con_ASG_ID
2923: , l_RfiBalID
2944:
2945: -- Calculate the current Taxable Travel Allowance Value
2946: -- add this to any calculated in the loop
2947: --
2948: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',14);
2949: -- Check Calc TYPE
2950: IF py_za_tx_01032009.trc_CalTyp IN ('DirCalc','NorCalc','SitCalc','YtdCalc', 'LteCalc') THEN
2951: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',15);
2952: -- Balance Values
2947: --
2948: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',14);
2949: -- Check Calc TYPE
2950: IF py_za_tx_01032009.trc_CalTyp IN ('DirCalc','NorCalc','SitCalc','YtdCalc', 'LteCalc') THEN
2951: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',15);
2952: -- Balance Values
2953: l_RfiYtd := py_za_tx_01032009.bal_TOT_TXB_TA_YTD;
2954: -- Global Value
2955: l_GlbVal := py_za_tx_01032009.glb_ZA_TRV_ALL_TX_PRC;
2954: -- Global Value
2955: l_GlbVal := py_za_tx_01032009.glb_ZA_TRV_ALL_TX_PRC;
2956:
2957: ELSIF py_za_tx_01032009.trc_CalTyp = 'PstCalc' THEN
2958: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',16);
2959: -- Balance Values
2960: l_RfiYtd := py_za_tx_01032009.bal_TOT_TXB_TA_PTD;
2961: -- Global Value
2962: SELECT TO_NUMBER(global_value)
2965: WHERE l_EndDate between effective_start_date
2966: and effective_end_date
2967: AND global_name = 'ZA_CAR_ALLOW_TAX_PERC';
2968:
2969: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',17);
2970:
2971: ELSIF py_za_tx_01032009.trc_CalTyp = 'CalCalc' THEN
2972: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',18);
2973: -- Balance Values
2968:
2969: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',17);
2970:
2971: ELSIF py_za_tx_01032009.trc_CalTyp = 'CalCalc' THEN
2972: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',18);
2973: -- Balance Values
2974: l_RfiYtd := py_za_tx_01032009.bal_TOT_TXB_TA_CYTD;
2975:
2976: -- Global Value
2980: WHERE l_EndDate between effective_start_date
2981: and effective_end_date
2982: AND global_name = 'ZA_CAR_ALLOW_TAX_PERC';
2983:
2984: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',19);
2985:
2986: END IF;
2987:
2988: WriteHrTrace('l_RfiYtd: '||to_char(l_RfiYtd));
3002: -- Update Globals
3003: --
3004: -- Check Calc Type
3005: IF py_za_tx_01032009.trc_CalTyp IN ('DirCalc','NorCalc','SitCalc','YtdCalc', 'LteCalc') THEN
3006: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',20);
3007: py_za_tx_01032009.bal_TOT_TXB_TA_YTD := l_TotTxbRfi;
3008: ELSIF py_za_tx_01032009.trc_CalTyp = 'PstCalc' THEN
3009: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',21);
3010: py_za_tx_01032009.bal_TOT_TXB_TA_PTD := l_TotTxbRfi;
3005: IF py_za_tx_01032009.trc_CalTyp IN ('DirCalc','NorCalc','SitCalc','YtdCalc', 'LteCalc') THEN
3006: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',20);
3007: py_za_tx_01032009.bal_TOT_TXB_TA_YTD := l_TotTxbRfi;
3008: ELSIF py_za_tx_01032009.trc_CalTyp = 'PstCalc' THEN
3009: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',21);
3010: py_za_tx_01032009.bal_TOT_TXB_TA_PTD := l_TotTxbRfi;
3011: ELSIF py_za_tx_01032009.trc_CalTyp = 'CalCalc' THEN
3012: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',22);
3013: py_za_tx_01032009.bal_TOT_TXB_TA_CYTD := l_TotTxbRfi;
3008: ELSIF py_za_tx_01032009.trc_CalTyp = 'PstCalc' THEN
3009: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',21);
3010: py_za_tx_01032009.bal_TOT_TXB_TA_PTD := l_TotTxbRfi;
3011: ELSIF py_za_tx_01032009.trc_CalTyp = 'CalCalc' THEN
3012: hr_utility.set_location('py_za_tx_utl_01032009.TrvAll',22);
3013: py_za_tx_01032009.bal_TOT_TXB_TA_CYTD := l_TotTxbRfi;
3014: END IF;
3015:
3016: WriteHrTrace('l_TotTxbRfi: '||to_char(l_TotTxbRfi));
3049: l_NewLib t_Balance; -- New Liability
3050: i NUMBER; -- Counter
3051:
3052: BEGIN
3053: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',1);
3054: -- Set up the Table
3055: t_Liabilities(1).Ovrrde := py_za_tx_01032009.trc_LibFpNIOvr;
3056: t_Liabilities(1).Lib := py_za_tx_01032009.trc_LibFpNI;
3057:
3132: WriteHrTrace('l_TotNp: '||to_char(l_TotNp));
3133: -- Start Validation
3134: --
3135: IF l_TotLib = 0 THEN
3136: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',2);
3137: NULL;
3138: ELSIF l_TotLib > 0 THEN
3139: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',3);
3140: IF l_TotNp > 0 THEN
3135: IF l_TotLib = 0 THEN
3136: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',2);
3137: NULL;
3138: ELSIF l_TotLib > 0 THEN
3139: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',3);
3140: IF l_TotNp > 0 THEN
3141: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',4);
3142: IF l_TotLib = l_TotNp THEN
3143: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',5);
3137: NULL;
3138: ELSIF l_TotLib > 0 THEN
3139: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',3);
3140: IF l_TotNp > 0 THEN
3141: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',4);
3142: IF l_TotLib = l_TotNp THEN
3143: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',5);
3144: NULL;
3145: ELSIF l_TotLib > l_TotNp THEN
3139: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',3);
3140: IF l_TotNp > 0 THEN
3141: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',4);
3142: IF l_TotLib = l_TotNp THEN
3143: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',5);
3144: NULL;
3145: ELSIF l_TotLib > l_TotNp THEN
3146: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',6);
3147: l_RecVal := l_TotLib - l_TotNp;
3142: IF l_TotLib = l_TotNp THEN
3143: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',5);
3144: NULL;
3145: ELSIF l_TotLib > l_TotNp THEN
3146: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',6);
3147: l_RecVal := l_TotLib - l_TotNp;
3148: i:= 1;
3149:
3150: FOR i IN 1..7 LOOP
3148: i:= 1;
3149:
3150: FOR i IN 1..7 LOOP
3151: IF t_Liabilities(i).Lib = 0 THEN
3152: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',7);
3153: NULL;
3154: ELSIF t_Liabilities(i).Lib > 0 THEN
3155: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',8);
3156: l_NewLib := t_Liabilities(i).Lib - LEAST(t_Liabilities(i).Lib,l_RecVal);
3151: IF t_Liabilities(i).Lib = 0 THEN
3152: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',7);
3153: NULL;
3154: ELSIF t_Liabilities(i).Lib > 0 THEN
3155: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',8);
3156: l_NewLib := t_Liabilities(i).Lib - LEAST(t_Liabilities(i).Lib,l_RecVal);
3157: l_RecVal := l_RecVal - (t_Liabilities(i).Lib - l_NewLib);
3158: t_Liabilities(i).Lib := l_NewLib;
3159: py_za_tx_01032009.trc_LibWrn := 'Warning: Net Pay Balance not enough for Tax Recovery';
3157: l_RecVal := l_RecVal - (t_Liabilities(i).Lib - l_NewLib);
3158: t_Liabilities(i).Lib := l_NewLib;
3159: py_za_tx_01032009.trc_LibWrn := 'Warning: Net Pay Balance not enough for Tax Recovery';
3160: ELSE -- lib < 0
3161: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',9);
3162: NULL;
3163: END IF;
3164: END LOOP;
3165:
3163: END IF;
3164: END LOOP;
3165:
3166: ELSE -- l_TotLib > 0,l_TotNp > 0,l_TotLib < l_TotNp
3167: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',10);
3168: NULL;
3169: END IF;
3170:
3171: ELSE -- l_TotLib > 0,l_TotNp <= 0
3168: NULL;
3169: END IF;
3170:
3171: ELSE -- l_TotLib > 0,l_TotNp <= 0
3172: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',11);
3173: l_RecVal := l_TotLib;
3174: i := 1;
3175:
3176: FOR i IN 1..7 LOOP
3174: i := 1;
3175:
3176: FOR i IN 1..7 LOOP
3177: IF t_Liabilities(i).Lib > 0 THEN
3178: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',12);
3179: l_NewLib := t_Liabilities(i).Lib - LEAST(t_Liabilities(i).Lib,l_RecVal);
3180: l_RecVal := l_RecVal - (t_Liabilities(i).Lib - l_NewLib);
3181: t_Liabilities(i).Lib := l_NewLib;
3182: py_za_tx_01032009.trc_LibWrn := 'Warning: Net Pay Balance not enough for Tax Recovery';
3184: END LOOP;
3185: END IF;
3186:
3187: ELSE -- l_TotLib < 0
3188: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',13);
3189: IF p_Rf THEN
3190: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',14);
3191: NULL;
3192: ELSE
3186:
3187: ELSE -- l_TotLib < 0
3188: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',13);
3189: IF p_Rf THEN
3190: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',14);
3191: NULL;
3192: ELSE
3193: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',15);
3194: l_RecVal := l_TotLib;
3189: IF p_Rf THEN
3190: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',14);
3191: NULL;
3192: ELSE
3193: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',15);
3194: l_RecVal := l_TotLib;
3195: i := 1;
3196: FOR i IN 1..7 LOOP
3197: IF t_Liabilities(i).Lib >= 0 THEN
3194: l_RecVal := l_TotLib;
3195: i := 1;
3196: FOR i IN 1..7 LOOP
3197: IF t_Liabilities(i).Lib >= 0 THEN
3198: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',16);
3199: NULL;
3200: ELSE -- l_lib < 0
3201: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',17);
3202: -- Has the liability been Overridden?
3197: IF t_Liabilities(i).Lib >= 0 THEN
3198: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',16);
3199: NULL;
3200: ELSE -- l_lib < 0
3201: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',17);
3202: -- Has the liability been Overridden?
3203: IF t_Liabilities(i).Ovrrde THEN
3204: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',18);
3205: NULL;
3200: ELSE -- l_lib < 0
3201: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',17);
3202: -- Has the liability been Overridden?
3203: IF t_Liabilities(i).Ovrrde THEN
3204: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',18);
3205: NULL;
3206: ELSE
3207: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',19);
3208: l_NewLib := t_Liabilities(i).Lib - GREATEST(t_Liabilities(i).Lib,l_RecVal);
3203: IF t_Liabilities(i).Ovrrde THEN
3204: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',18);
3205: NULL;
3206: ELSE
3207: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',19);
3208: l_NewLib := t_Liabilities(i).Lib - GREATEST(t_Liabilities(i).Lib,l_RecVal);
3209: l_RecVal := l_RecVal - (t_Liabilities(i).Lib - l_NewLib);
3210: t_Liabilities(i).Lib := l_NewLib;
3211: END IF;
3213: END LOOP;
3214: END IF;
3215: END IF;
3216:
3217: hr_utility.set_location('py_za_tx_utl_01032009.ValidateTaxOns',20);
3218:
3219: py_za_tx_01032009.trc_LibFpNI := t_Liabilities(1).Lib;
3220: py_za_tx_01032009.trc_LibFpFB := t_Liabilities(2).Lib;
3221: py_za_tx_01032009.trc_LibFpTA := t_Liabilities(3).Lib;
3252: l_StrtDte DATE;
3253:
3254: BEGIN
3255: IF py_za_tx_01032009.trc_OvrTxCalc AND py_za_tx_01032009.trc_OvrTyp = 'V' THEN
3256: hr_utility.set_location('py_za_tx_utl_01032009.DaysWorked',1);
3257: IF LatePayPeriod THEN
3258: hr_utility.set_location('py_za_tx_utl_01032009.DaysWorked',2);
3259: -- This will set the sitfactor = 1
3260: l_EndDte := py_za_tx_01032009.dbi_ZA_TX_YR_END;
3254: BEGIN
3255: IF py_za_tx_01032009.trc_OvrTxCalc AND py_za_tx_01032009.trc_OvrTyp = 'V' THEN
3256: hr_utility.set_location('py_za_tx_utl_01032009.DaysWorked',1);
3257: IF LatePayPeriod THEN
3258: hr_utility.set_location('py_za_tx_utl_01032009.DaysWorked',2);
3259: -- This will set the sitfactor = 1
3260: l_EndDte := py_za_tx_01032009.dbi_ZA_TX_YR_END;
3261: l_StrtDte := py_za_tx_01032009.dbi_ZA_TX_YR_STRT;
3262: ELSE
3259: -- This will set the sitfactor = 1
3260: l_EndDte := py_za_tx_01032009.dbi_ZA_TX_YR_END;
3261: l_StrtDte := py_za_tx_01032009.dbi_ZA_TX_YR_STRT;
3262: ELSE
3263: hr_utility.set_location('py_za_tx_utl_01032009.DaysWorked',3);
3264: l_EndDte := LEAST(py_za_tx_01032009.dbi_ZA_ACT_END_DTE, py_za_tx_01032009.dbi_ZA_CUR_PRD_END_DTE);
3265: l_StrtDte := GREATEST(py_za_tx_01032009.dbi_ZA_ACT_STRT_DTE, py_za_tx_01032009.dbi_ZA_TX_YR_STRT);
3266: END IF;
3267:
3265: l_StrtDte := GREATEST(py_za_tx_01032009.dbi_ZA_ACT_STRT_DTE, py_za_tx_01032009.dbi_ZA_TX_YR_STRT);
3266: END IF;
3267:
3268: ELSIF py_za_tx_01032009.trc_CalTyp = 'YtdCalc' THEN
3269: hr_utility.set_location('py_za_tx_utl_01032009.DaysWorked',4);
3270: l_EndDte := py_za_tx_01032009.dbi_ZA_CUR_PRD_STRT_DTE - 1;
3271: l_StrtDte := GREATEST(py_za_tx_01032009.dbi_ZA_ACT_STRT_DTE, py_za_tx_01032009.dbi_ZA_TX_YR_STRT);
3272:
3273: ELSIF py_za_tx_01032009.trc_CalTyp = 'CalCalc' THEN
3270: l_EndDte := py_za_tx_01032009.dbi_ZA_CUR_PRD_STRT_DTE - 1;
3271: l_StrtDte := GREATEST(py_za_tx_01032009.dbi_ZA_ACT_STRT_DTE, py_za_tx_01032009.dbi_ZA_TX_YR_STRT);
3272:
3273: ELSIF py_za_tx_01032009.trc_CalTyp = 'CalCalc' THEN
3274: hr_utility.set_location('py_za_tx_utl_01032009.DaysWorked',5);
3275: l_EndDte := py_za_tx_01032009.dbi_ZA_TX_YR_STRT - 1;
3276: l_StrtDte := GREATEST(py_za_tx_01032009.dbi_ZA_ACT_STRT_DTE,
3277: to_date('01/01/'||to_char(to_number(to_char(py_za_tx_01032009.dbi_ZA_TX_YR_END,'YYYY'))-1),'DD/MM/YYYY'));
3278:
3280: ( py_za_tx_01032009.dbi_ZA_ASG_TX_RTR_PRD = 'Y'
3281: OR py_za_tx_01032009.trc_OvrTxCalc
3282: OR py_za_tx_01032009.trc_NegPtd
3283: )THEN
3284: hr_utility.set_location('py_za_tx_utl_01032009.DaysWorked',6);
3285: l_EndDte := LEAST(py_za_tx_01032009.dbi_ZA_ACT_END_DTE, py_za_tx_01032009.dbi_ZA_CUR_PRD_END_DTE);
3286: l_StrtDte := GREATEST(py_za_tx_01032009.dbi_ZA_ACT_STRT_DTE, py_za_tx_01032009.dbi_ZA_TX_YR_STRT);
3287:
3288: ELSIF py_za_tx_01032009.trc_CalTyp = 'SitCalc' THEN
3285: l_EndDte := LEAST(py_za_tx_01032009.dbi_ZA_ACT_END_DTE, py_za_tx_01032009.dbi_ZA_CUR_PRD_END_DTE);
3286: l_StrtDte := GREATEST(py_za_tx_01032009.dbi_ZA_ACT_STRT_DTE, py_za_tx_01032009.dbi_ZA_TX_YR_STRT);
3287:
3288: ELSIF py_za_tx_01032009.trc_CalTyp = 'SitCalc' THEN
3289: hr_utility.set_location('py_za_tx_utl_01032009.DaysWorked',7);
3290: l_EndDte := LEAST(py_za_tx_01032009.dbi_ZA_ACT_END_DTE, py_za_tx_01032009.dbi_ZA_TX_YR_END);
3291: l_StrtDte := GREATEST(py_za_tx_01032009.dbi_ZA_ACT_STRT_DTE, py_za_tx_01032009.dbi_ZA_TX_YR_STRT);
3292: /*
3293: ELSIF py_za_tx_01032009.trc_CalTyp = 'PstCalc' THEN
3290: l_EndDte := LEAST(py_za_tx_01032009.dbi_ZA_ACT_END_DTE, py_za_tx_01032009.dbi_ZA_TX_YR_END);
3291: l_StrtDte := GREATEST(py_za_tx_01032009.dbi_ZA_ACT_STRT_DTE, py_za_tx_01032009.dbi_ZA_TX_YR_STRT);
3292: /*
3293: ELSIF py_za_tx_01032009.trc_CalTyp = 'PstCalc' THEN
3294: hr_utility.set_location('py_za_tx_utl_01032009.DaysWorked',8);
3295: l_EndDte := py_za_tx_01032009.dbi_ZA_ACT_END_DTE;
3296: l_StrtDte := py_za_tx_01032009.dbi_ZA_ASG_TX_YR_STRT;
3297:
3298: hr_utility.set_location('py_za_tx_utl_01032009.DaysWorked',9);
3294: hr_utility.set_location('py_za_tx_utl_01032009.DaysWorked',8);
3295: l_EndDte := py_za_tx_01032009.dbi_ZA_ACT_END_DTE;
3296: l_StrtDte := py_za_tx_01032009.dbi_ZA_ASG_TX_YR_STRT;
3297:
3298: hr_utility.set_location('py_za_tx_utl_01032009.DaysWorked',9);
3299:
3300: l_StrtDte := GREATEST(py_za_tx_01032009.dbi_ZA_ACT_STRT_DTE, l_StrtDte); */
3301: END IF;
3302:
3322: AS
3323: l_TxOnSitLim t_Balance;
3324: l_SitAblTx t_Balance;
3325: BEGIN
3326: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',1);
3327: -- Directive Type Statuses
3328: --
3329: IF py_za_tx_01032009.dbi_TX_STA IN ('C','D','E','F','J','K','L','N','P') THEN
3330: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',2);
3326: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',1);
3327: -- Directive Type Statuses
3328: --
3329: IF py_za_tx_01032009.dbi_TX_STA IN ('C','D','E','F','J','K','L','N','P') THEN
3330: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',2);
3331: -- Check for SitePeriod
3332: IF SitePeriod THEN
3333: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',3);
3334: py_za_tx_01032009.trc_PayeVal :=
3329: IF py_za_tx_01032009.dbi_TX_STA IN ('C','D','E','F','J','K','L','N','P') THEN
3330: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',2);
3331: -- Check for SitePeriod
3332: IF SitePeriod THEN
3333: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',3);
3334: py_za_tx_01032009.trc_PayeVal :=
3335: ( py_za_tx_01032009.bal_TAX_YTD
3336: + py_za_tx_01032009.trc_LibFpNI
3337: + py_za_tx_01032009.trc_LibFpFB
3344: + py_za_tx_01032009.trc_LibFpNtgEEDbt
3345: ) - py_za_tx_01032009.bal_PAYE_YTD;
3346: py_za_tx_01032009.trc_SiteVal := -1*py_za_tx_01032009.bal_SITE_YTD;
3347: ELSE
3348: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',4);
3349: py_za_tx_01032009.trc_PayeVal := -1*py_za_tx_01032009.bal_PAYE_YTD;
3350: py_za_tx_01032009.trc_SiteVal := -1*py_za_tx_01032009.bal_SITE_YTD;
3351: END IF;
3352: -- Normal Type Statuses
3352: -- Normal Type Statuses
3353: --
3354: ELSIF py_za_tx_01032009.dbi_TX_STA IN ('A','B') THEN
3355: IF (SitePeriod AND NOT PreErnPeriod) OR EmpTermPrePeriod THEN
3356: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',5);
3357: -- Get the Tax Liability on the Site Limit
3358: py_za_tx_01032009.trc_LateSitePaye := 1;
3359: l_TxOnSitLim := TaxLiability(p_Amt => py_za_tx_01032009.glb_ZA_SIT_LIM)/py_za_tx_01032009.trc_SitFactor;
3360: -- Get the Tax Amount Liable for SITE
3375: + py_za_tx_01032009.trc_LibFpNtgEEDbt
3376: );
3377: -- Check the Limit
3378: IF l_SitAblTx > l_TxOnSitLim THEN
3379: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',6);
3380: py_za_tx_01032009.trc_SiteVal := l_TxOnSitLim - py_za_tx_01032009.bal_SITE_YTD;
3381: py_za_tx_01032009.trc_PayeVal := (
3382: ( py_za_tx_01032009.bal_TAX_YTD
3383: + py_za_tx_01032009.trc_LibFpNI
3391: + py_za_tx_01032009.trc_LibFpNtgEEDbt
3392: ) - l_TxOnSitLim) - py_za_tx_01032009.bal_PAYE_YTD;
3393:
3394: ELSE
3395: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',7);
3396: IF ( py_za_tx_01032009.bal_TX_ON_TA_YTD
3397: + py_za_tx_01032009.trc_LibFpTA
3398: + py_za_tx_01032009.bal_TX_ON_PO_YTD
3399: + py_za_tx_01032009.trc_LibFpPO
3397: + py_za_tx_01032009.trc_LibFpTA
3398: + py_za_tx_01032009.bal_TX_ON_PO_YTD
3399: + py_za_tx_01032009.trc_LibFpPO
3400: ) <= 0 THEN
3401: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',8);
3402: py_za_tx_01032009.trc_SiteVal := ( py_za_tx_01032009.bal_TAX_YTD
3403: + py_za_tx_01032009.trc_LibFpNI
3404: + py_za_tx_01032009.trc_LibFpFB
3405: + py_za_tx_01032009.trc_LibFpBP
3412: ) - py_za_tx_01032009.bal_SITE_YTD;
3413:
3414: py_za_tx_01032009.trc_PayeVal := -1*py_za_tx_01032009.bal_PAYE_YTD;
3415: ELSE
3416: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',9);
3417: py_za_tx_01032009.trc_SiteVal := l_SitAblTx - py_za_tx_01032009.bal_SITE_YTD;
3418:
3419: py_za_tx_01032009.trc_PayeVal := (
3420: ( py_za_tx_01032009.bal_TAX_YTD
3430: ) - l_SitAblTx) - py_za_tx_01032009.bal_PAYE_YTD;
3431: END IF;
3432: END IF;
3433: ELSE
3434: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',10);
3435: py_za_tx_01032009.trc_PayeVal := -1*py_za_tx_01032009.bal_PAYE_YTD;
3436: py_za_tx_01032009.trc_SiteVal := -1*py_za_tx_01032009.bal_SITE_YTD;
3437: END IF;
3438: -- Seasonal Worker Status
3437: END IF;
3438: -- Seasonal Worker Status
3439: --
3440: ELSIF py_za_tx_01032009.dbi_TX_STA = 'G' THEN
3441: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',11);
3442: -- Get the SitFactor YTD
3443: py_za_tx_01032009.trc_SitFactor := py_za_tx_01032009.glb_ZA_WRK_DYS_PR_YR / py_za_tx_01032009.bal_TOT_SEA_WRK_DYS_WRK_YTD;
3444: -- Get the Tax Liability on the Site Limit
3445: l_TxOnSitLim := TaxLiability(p_Amt => py_za_tx_01032009.glb_ZA_SIT_LIM)/py_za_tx_01032009.trc_SitFactor;
3452: + py_za_tx_01032009.trc_LibFpAP
3453: );
3454: -- Check the Limit
3455: IF l_SitAblTx > l_TxOnSitLim THEN
3456: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',12);
3457: py_za_tx_01032009.trc_SiteVal := l_TxOnSitLim - py_za_tx_01032009.bal_SITE_YTD;
3458: py_za_tx_01032009.trc_PayeVal := ( (py_za_tx_01032009.bal_TX_ON_PO_YTD + py_za_tx_01032009.trc_LibFpPO)
3459: + (l_SitAblTx - l_TxOnSitLim)
3460: ) - py_za_tx_01032009.bal_PAYE_YTD;
3458: py_za_tx_01032009.trc_PayeVal := ( (py_za_tx_01032009.bal_TX_ON_PO_YTD + py_za_tx_01032009.trc_LibFpPO)
3459: + (l_SitAblTx - l_TxOnSitLim)
3460: ) - py_za_tx_01032009.bal_PAYE_YTD;
3461: ELSE
3462: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',13);
3463: py_za_tx_01032009.trc_SiteVal := l_SitAblTx - py_za_tx_01032009.bal_SITE_YTD;
3464: py_za_tx_01032009.trc_PayeVal := py_za_tx_01032009.bal_TX_ON_PO_YTD
3465: + py_za_tx_01032009.trc_LibFpPO
3466: - py_za_tx_01032009.bal_PAYE_YTD;
3468: -- Private Director
3469: --
3470: ELSIF py_za_tx_01032009.dbi_TX_STA = 'M' THEN
3471: IF (SitePeriod AND NOT PreErnPeriod) OR EmpTermPrePeriod THEN
3472: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',14);
3473: py_za_tx_01032009.trc_PayeVal :=
3474: ( py_za_tx_01032009.bal_TAX_YTD
3475: + py_za_tx_01032009.trc_LibFpDR
3476: + py_za_tx_01032009.trc_LibFpNI
3484: + py_za_tx_01032009.trc_LibFpNtgEEDbt
3485: ) - py_za_tx_01032009.bal_PAYE_YTD;
3486: py_za_tx_01032009.trc_SiteVal := -1*py_za_tx_01032009.bal_SITE_YTD;
3487: ELSE
3488: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',15);
3489: py_za_tx_01032009.trc_PayeVal := -1*py_za_tx_01032009.bal_PAYE_YTD;
3490: py_za_tx_01032009.trc_SiteVal := -1*py_za_tx_01032009.bal_SITE_YTD;
3491: END IF;
3492: -- All Other Statuses
3491: END IF;
3492: -- All Other Statuses
3493: --
3494: ELSE -- set the globals to zero
3495: hr_utility.set_location('py_za_tx_utl_01032009.SitPaySplit',16);
3496: py_za_tx_01032009.trc_PayeVal := 0 - py_za_tx_01032009.bal_PAYE_YTD;
3497: py_za_tx_01032009.trc_SiteVal := 0 - py_za_tx_01032009.bal_SITE_YTD;
3498: END IF;
3499:
3516: ) RETURN NUMBER
3517: AS
3518: l_Ded t_Balance;
3519: BEGIN
3520: hr_utility.set_location('py_za_tx_utl_01032009.AllowableDeduction',10);
3521: l_Ded := least(py_za_tx_01032009.trc_AllowDonPerc*p_Amt/100,p_Donat_Amt);
3522:
3523: WriteHrTrace('p_Amt: '||to_char(p_Amt));
3524: WriteHrTrace('l_Ded: '||to_char(l_Ded));
3805: -------------------------------------------------------------------------------
3806: PROCEDURE ClearGlobals AS
3807:
3808: BEGIN
3809: hr_utility.set_location('py_za_tx_utl_01032009.ClearGlobals',1);
3810: -- Calculation Type
3811: py_za_tx_01032009.trc_CalTyp := 'Unknown';
3812: -- Factors
3813: py_za_tx_01032009.trc_TxbIncPtd := 0;