The following lines contain the word 'select', 'insert', 'update' or 'delete':
Calculates the arrear excess figure to 'effectively' update the
Asg_Itd dimension of the arrear excess pension and retirement
annuity balances. Will only fire on siteperiod.
TrvAll
Calculates the taxable travel allowance over a period of
time based on the effective global values at the time.
For a complete description see the tax module design document.
NpVal
Validates the calculated category liabilities.
For a complete description see the tax module design document.
SitPaySplit
Calculates the site paye split of tax liabilities.
For a complete description see the tax module design document.
Trace
Traces the tax calculation.
For a complete description see the tax module design document.
ClearGlobals
Clears any set package globals.
For a complete description see the tax module design document.
PRIVATE FUNCTIONS
GetTableValue
Returns the value from a user table date effectively
PRIVATE PROCEDURES
NOTES
.
MODIFICATION HISTORY
Person Date Version Bug Comments
--------- ---------- ----------- ------- --------------------------------
R Babla 03/04/2008 115.0 8406456 For detail history see
py_za_tx_utl_01032007
Changes done in Abatements for
TYS2010 -new SARS codes
Function AllowableDeduction
added
R Babla 10/06/2009 115.1 8512751 Modified ClearGlobals to clear
global for Net PAYE Taxable Income
used in EMP201
P.Arusia 17/7/2009 115.2 8691928 a) Updated global name from
ZA_ALLOW_DONATION_PERC to
ZA_ALLOWABLE_DONATION_PERC
b) Updated the message text
as well as the way of raising
exception for 'late Payment
Across Two Tax Years' in
LatePayPeriod procedure
R Babla 29/07/2009 115.3 8526698 Updated ClearGlobals to clear the
globals for Net to Gross
R Babla 20/08/2009 115.4 8824018 Updated ClearGlobals to clear the
new globals for Net to Gross.
Abatements modified to calculate
the abatement of Net to Gross earnings
separately.
R Babla 02/09/2009 115.7 8824018 Updated Proc SitPaySplit to consider
the Net to Gross tax.
R Babla 02/09/2009 115.8 8844712 1.Removed the error is Late Payment Across two Tax Yrs
2.Modified the TaxLiability for Late Payments
R Babla 25/02/2010 115.9 9369895 Changes in abatement calculation for package structure emp
R Babla 26/02/2010 115.10 9397464 Removed reference of dbi_ZA_ASG_TX_YR%
R Babla 10/03/2009 115.11 9438325 Modified PreErnPeriod to consider _ASG_RUN value
for Annual Payments
NCHINNAM 03/11/2010 115.12 10245740 Non Cumilative tax method enhancement changes.
NCHINNAM 24/02/2011 115.1 11806660 2011/12 Tax Year End Legislative Changes.
ABDASH 24/04/2012 115.3 13986697 Changes made to enable generation of tax trace from application.
ABDASH 21/05/2012 115.4 14062746 MEDICAL TAX CREDIT CALCULATION IN CASE OF TAX REFUND.
ABDASH 25/05/2012 115.6 14062746 MEDICAL TAX CREDIT CALCULATION IN CASE OF TAX REFUND WITH NEGATIVE PAYE.
ABDASH 25/05/2012 115.7 14062746 MEDICAL TAX CREDIT CALCULATION IN CASE OF TAX REFUND FOR PARTIAL REFUND.
ABDASH 12/06/2012 115.8 14168167 MAC ALLOWED TO BE REFUNDED INCASE OF EMPLOYEE ABOVE AGE 65 OR WHEN BALANCES FOR CODE 3810, 4005 AND 4474 ARE ZERO.
ABDASH 19/06/2012 115.9 14195352 Tax should be refunded only when net taxable income is below SITE limit and Med Abatement is not applicable for NI for employees above 65.
ABDASH 19/06/2012 115.10 14195352 Modified Med Abatement Calculation for BasCalc
*/
-------------------------------------------------------------------------------
-- PACKAGE BODY --
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- StartHrTrace --
-- Wrapper for hr_utility.trace_on --
-------------------------------------------------------------------------------
PROCEDURE StartHrTrace AS
BEGIN
IF g_HrTraceEnabled THEN
hr_utility.trace_on(null,g_HrTracePipeName);
SELECT TO_NUMBER(global_value)
INTO l_GlbVal
FROM ff_globals_f
WHERE p_EffDte between effective_start_date and effective_end_date
AND global_name = p_GlbNme;
select put.user_table_id
INTO l_UserTableID
from pay_user_tables put
where upper(put.user_table_name) = upper(p_TableName)
AND put.legislation_code = 'ZA';
select puc.user_column_id
INTO l_ColumnID
from pay_user_columns puc
where puc.user_table_id = l_UserTableID
AND puc.legislation_code = 'ZA'
and puc.business_group_id is null
AND upper(puc.user_column_name) = upper(p_ColumnName);
select pur.user_row_id
INTO l_RowID
from pay_user_tables put
, pay_user_rows_f pur
where put.user_table_id = l_UserTableID
and pur.user_table_id = put.user_table_id
AND pur.row_high_range IS NOT NULL
AND p_EffectiveDate BETWEEN pur.effective_start_date
AND pur.effective_end_date
AND pur.legislation_code = 'ZA'
AND p_RowValue BETWEEN decode ( put.user_key_units
, 'N'
, FFFUNC.CN(pur.row_low_range_or_name)
, p_RowValue+1
)
AND decode ( put.user_key_units
, 'N'
, FFFUNC.CN(pur.row_high_range)
, p_RowValue-1
);
SELECT pucif.value
INTO l_TableValue
FROM pay_user_column_instances_f pucif
where pucif.user_column_id = l_ColumnID
and pucif.user_row_id = l_RowID
AND pucif.legislation_code = 'ZA'
and p_EffectiveDate BETWEEN pucif.effective_start_date
AND pucif.effective_end_date;
SELECT effective_end_date
, to_number(global_value) global_value
FROM ff_globals_f
WHERE effective_end_date < p_ty_ed
AND effective_end_date > p_ty_sd
AND global_name = 'ZA_CAR_ALLOW_TAX_PERC';
SELECT balance_type_id
INTO l_RfiBalID
FROM pay_balance_types
WHERE legislation_code = 'ZA'
AND balance_name = 'ZATax Total Taxable Travel Allowance';
SELECT TO_NUMBER(global_value)
INTO l_GlbVal
FROM ff_globals_f
WHERE l_EndDate between effective_start_date
and effective_end_date
AND global_name = 'ZA_CAR_ALLOW_TAX_PERC';
SELECT TO_NUMBER(global_value)
INTO l_GlbVal
FROM ff_globals_f
WHERE l_EndDate between effective_start_date
and effective_end_date
AND global_name = 'ZA_CAR_ALLOW_TAX_PERC';
/*DELETE FROM pay_za_tax_traces pztt
WHERE pztt.prl_act_id not in (
SELECT payroll_action_id
from pay_payroll_actions)
*/
INSERT INTO pay_za_tax_traces(
ASG_ACT_ID
,ASG_ID
,PRL_ACT_ID
,PRL_ID
,TX_STA
,PER_AGE
,CalTyp
,TX_DIR_VAL
,It3Ind
,TxPercVal
,ASG_STRT_DTE
,ZA_ACT_END_DTE
,ZA_CUR_PRD_STRT_DTE
,ZA_CUR_PRD_END_DTE
,ZA_TX_YR_STRT
,ZA_TX_YR_END
,SES_DTE
,PrdFactor
,PosFactor
,SitFactor
,ZA_PAY_PRDS_LFT
,ZA_PAY_PRDS_PER_YR
,ZA_DYS_IN_YR
,SEA_WRK_DYS_WRK
,BP_TX_RCV
,TxbIncPtd
,BseErn
,TxbBseInc
,TotLibBse
,TxbIncYtd
,PerTxbInc
,PerPenFnd
,PerRfiCon
,PerRfiTxb
,PerPenFndMax
,PerPenFndAbm
,AnnTxbInc
,AnnPenFnd
,AnnRfiCon
,AnnRfiTxb
,AnnPenFndMax
,AnnPenFndAbm
,ArrPenFnd
,ArrPenFndAbm
,AnnArrPenFnd
,AnnArrPenFndAbm
,RetAnu
,NrfiCon
,RetAnuMax
,RetAnuAbm
,AnnRetAnu
,AnnNrfiCon
,AnnRetAnuMax
,AnnRetAnuAbm
,ArrRetAnu
,ArrRetAnuAbm
,AnnArrRetAnu
,AnnArrRetAnuAbm
,Rebate
,Threshold
,MedAidAbm
,PerTotAbm
,AnnTotAbm
,NorIncYtd
,NorIncPtd
,NorErn
,TxbNorInc
,LibFyNI
,TX_ON_NI_YTD
,TX_ON_NI_PTD
,LibFpNI
,FrnBenYtd
,FrnBenPtd
,FrnBenErn
,TxbFrnInc
,LibFyFB
,TX_ON_FB_YTD
,TX_ON_FB_PTD
,LibFpFB
,TrvAllYtd
,TrvAllPtd
,TrvAllErn
,TxbTrvInc
,LibFyTA
,TX_ON_TA_YTD
,TX_ON_TA_PTD
,LibFpTA
,BonProYtd
,BonProPtd
,BonProErn
,TxbBonProInc
,LibFyBP
,TX_ON_BP_YTD
,TX_ON_BP_PTD
,LibFpBP
,AnnBonYtd
,AnnBonErn
,TxbAnnBonInc
,LibFyAB
,TX_ON_AB_YTD
,TX_ON_AB_PTD
,LibFpAB
,AnnPymYtd
,AnnPymPtd
,AnnPymErn
,TxbAnnPymInc
,LibFyAP
,TX_ON_AP_YTD
,TX_ON_AP_PTD
,LibFpAP
,PblOffYtd
,PblOffPtd
,PblOffErn
,LibFyPO
,TX_ON_PO_YTD
,TX_ON_PO_PTD
,LibFpPO
,LibWrn
,PayValue
,PayeVal
,SiteVal
)
VALUES(
py_za_tx_01032012.con_ASG_ACT_ID
,py_za_tx_01032012.con_ASG_ID
,py_za_tx_01032012.con_PRL_ACT_ID
,py_za_tx_01032012.con_PRL_ID
,py_za_tx_01032012.dbi_TX_STA
,py_za_tx_01032012.dbi_PER_AGE
,py_za_tx_01032012.trc_CalTyp
,py_za_tx_01032012.dbi_TX_DIR_VAL
,py_za_tx_01032012.trc_It3Ind
,py_za_tx_01032012.trc_TxPercVal
,py_za_tx_01032012.dbi_ZA_ACT_STRT_DTE
,py_za_tx_01032012.dbi_ZA_ACT_END_DTE
,py_za_tx_01032012.dbi_ZA_CUR_PRD_STRT_DTE
,py_za_tx_01032012.dbi_ZA_CUR_PRD_END_DTE
,py_za_tx_01032012.dbi_ZA_TX_YR_STRT
,py_za_tx_01032012.dbi_ZA_TX_YR_END
,py_za_tx_01032012.dbi_SES_DTE
,py_za_tx_01032012.trc_PrdFactor
,py_za_tx_01032012.trc_PosFactor
,py_za_tx_01032012.trc_SitFactor
,py_za_tx_01032012.dbi_ZA_PAY_PRDS_LFT
,py_za_tx_01032012.dbi_ZA_PAY_PRDS_PER_YR
,py_za_tx_01032012.dbi_ZA_DYS_IN_YR
,py_za_tx_01032012.dbi_SEA_WRK_DYS_WRK
,py_za_tx_01032012.dbi_BP_TX_RCV
,py_za_tx_01032012.trc_TxbIncPtd
,py_za_tx_01032012.trc_BseErn
,py_za_tx_01032012.trc_TxbBseInc
,py_za_tx_01032012.trc_TotLibBse
,py_za_tx_01032012.trc_TxbIncYtd
,py_za_tx_01032012.trc_PerTxbInc
,py_za_tx_01032012.trc_PerPenFnd
,py_za_tx_01032012.trc_PerRfiCon
,py_za_tx_01032012.trc_PerRfiTxb
,py_za_tx_01032012.trc_PerPenFndMax
,py_za_tx_01032012.trc_PerPenFndAbm
,py_za_tx_01032012.trc_AnnTxbInc
,py_za_tx_01032012.trc_AnnPenFnd
,py_za_tx_01032012.trc_AnnRfiCon
,py_za_tx_01032012.trc_AnnRfiTxb
,py_za_tx_01032012.trc_AnnPenFndMax
,py_za_tx_01032012.trc_AnnPenFndAbm
,py_za_tx_01032012.trc_PerArrPenFnd
,py_za_tx_01032012.trc_PerArrPenFndAbm
,py_za_tx_01032012.trc_AnnArrPenFnd
,py_za_tx_01032012.trc_AnnArrPenFndAbm
,py_za_tx_01032012.trc_PerRetAnu
,py_za_tx_01032012.trc_PerNrfiCon
,py_za_tx_01032012.trc_PerRetAnuMax
,py_za_tx_01032012.trc_PerRetAnuAbm
,py_za_tx_01032012.trc_AnnRetAnu
,py_za_tx_01032012.trc_AnnNrfiCon
,py_za_tx_01032012.trc_AnnRetAnuMax
,py_za_tx_01032012.trc_AnnRetAnuAbm
,py_za_tx_01032012.trc_PerArrRetAnu
,py_za_tx_01032012.trc_PerArrRetAnuAbm
,py_za_tx_01032012.trc_AnnArrRetAnu
,py_za_tx_01032012.trc_AnnArrRetAnuAbm
,py_za_tx_01032012.trc_Rebate
,py_za_tx_01032012.trc_Threshold
,py_za_tx_01032012.trc_PerMedAidAbm
,py_za_tx_01032012.trc_PerTotAbm
,py_za_tx_01032012.trc_AnnTotAbm
,py_za_tx_01032012.trc_NorIncYtd
,py_za_tx_01032012.trc_NorIncPtd
,py_za_tx_01032012.trc_NorErn
,py_za_tx_01032012.trc_TxbNorInc
,py_za_tx_01032012.trc_LibFyNI
,py_za_tx_01032012.bal_TX_ON_NI_YTD
,py_za_tx_01032012.bal_TX_ON_NI_PTD
,py_za_tx_01032012.trc_LibFpNI
,py_za_tx_01032012.trc_FrnBenYtd
,py_za_tx_01032012.trc_FrnBenPtd
,py_za_tx_01032012.trc_FrnBenErn
,py_za_tx_01032012.trc_TxbFrnInc
,py_za_tx_01032012.trc_LibFyFB
,py_za_tx_01032012.bal_TX_ON_FB_YTD
,py_za_tx_01032012.bal_TX_ON_FB_PTD
,py_za_tx_01032012.trc_LibFpFB
,py_za_tx_01032012.trc_TrvAllYtd
,py_za_tx_01032012.trc_TrvAllPtd
,py_za_tx_01032012.trc_TrvAllErn
,py_za_tx_01032012.trc_TxbTrvInc
,py_za_tx_01032012.trc_LibFyTA
,py_za_tx_01032012.bal_TX_ON_TA_YTD
,py_za_tx_01032012.bal_TX_ON_TA_PTD
,py_za_tx_01032012.trc_LibFpTA
,py_za_tx_01032012.trc_BonProYtd
,py_za_tx_01032012.trc_BonProPtd
,py_za_tx_01032012.trc_BonProErn
,py_za_tx_01032012.trc_TxbBonProInc
,py_za_tx_01032012.trc_LibFyBP
,py_za_tx_01032012.bal_TX_ON_BP_YTD
,py_za_tx_01032012.bal_TX_ON_BP_PTD
,py_za_tx_01032012.trc_LibFpBP
,py_za_tx_01032012.trc_AnnBonYtd
,py_za_tx_01032012.trc_AnnBonErn
,py_za_tx_01032012.trc_TxbAnnBonInc
,py_za_tx_01032012.trc_LibFyAB
,py_za_tx_01032012.bal_TX_ON_AB_YTD
,py_za_tx_01032012.bal_TX_ON_AB_PTD
,py_za_tx_01032012.trc_LibFpAB
,py_za_tx_01032012.trc_AnnPymYtd
,py_za_tx_01032012.trc_AnnPymPtd
,py_za_tx_01032012.trc_AnnPymErn
,py_za_tx_01032012.trc_TxbAnnPymInc
,py_za_tx_01032012.trc_LibFyAP
,py_za_tx_01032012.bal_TX_ON_AP_YTD
,py_za_tx_01032012.bal_TX_ON_AP_PTD
,py_za_tx_01032012.trc_LibFpAP
,py_za_tx_01032012.trc_PblOffYtd
,py_za_tx_01032012.trc_PblOffPtd
,py_za_tx_01032012.trc_PblOffErn
,py_za_tx_01032012.trc_LibFyPO
,py_za_tx_01032012.bal_TX_ON_PO_YTD
,py_za_tx_01032012.bal_TX_ON_PO_PTD
,py_za_tx_01032012.trc_LibFpPO
,py_za_tx_01032012.trc_LibWrn
,py_za_tx_01032012.trc_PayValSD
,py_za_tx_01032012.trc_PayeVal
,py_za_tx_01032012.trc_SiteVal);