28:
29:
30: PRIVATE PROCEDURES
31: WrtHrTrc
32: Wrapper procedure for py_za_tx_utl_01032004.WriteHrTrace
33: NetTxbIncCalc
34: Procedure to calculate a Net Taxable Income figure used
35: to properly calculate the Skills Development Levy
36: LteCalc
84: -------------------------------------------------------------------------------
85:
86: -------------------------------------------------------------------------------
87: -- WrtHrTrc
88: -- Wrapper for py_za_tx_utl_01032004.WriteHrTrace
89: -------------------------------------------------------------------------------
90: PROCEDURE WrtHrTrc(
91: p_Buf IN VARCHAR2
92: )
92: )
93: AS
94:
95: BEGIN
96: py_za_tx_utl_01032004.WriteHrTrace(p_Buf);
97: END WrtHrTrc;
98:
99: -------------------------------------------------------------------------------
100: -- NetTxbIncCalc
734: l_EndDate := dbi_ZA_ASG_TX_YR_END;
735:
736: hr_utility.set_location('py_za_tx_01032004.LteCalc',8);
737:
738: trc_SitFactor := (l_EndDate - l_StrtDte + 1) / py_za_tx_utl_01032004.DaysWorked;
739:
740: hr_utility.set_location('py_za_tx_01032004.LteCalc',9);
741:
742: -- Populate Local Balance Variables
837:
838: hr_utility.set_location('py_za_tx_01032004.LteCalc',10);
839:
840: -- Update Globals with Correct Taxable Values
841: py_za_tx_utl_01032004.TrvAll;
842:
843: bal_PO_NRFI_PTD := bal_PO_NRFI_PTD
844: * py_za_tx_utl_01032004.GlbVal('ZA_PUBL_TAX_PERC',l_EndDate)
845: / 100;
840: -- Update Globals with Correct Taxable Values
841: py_za_tx_utl_01032004.TrvAll;
842:
843: bal_PO_NRFI_PTD := bal_PO_NRFI_PTD
844: * py_za_tx_utl_01032004.GlbVal('ZA_PUBL_TAX_PERC',l_EndDate)
845: / 100;
846: bal_PO_RFI_PTD := bal_PO_RFI_PTD
847: * py_za_tx_utl_01032004.GlbVal('ZA_PUBL_TAX_PERC',l_EndDate)
848: / 100;
843: bal_PO_NRFI_PTD := bal_PO_NRFI_PTD
844: * py_za_tx_utl_01032004.GlbVal('ZA_PUBL_TAX_PERC',l_EndDate)
845: / 100;
846: bal_PO_RFI_PTD := bal_PO_RFI_PTD
847: * py_za_tx_utl_01032004.GlbVal('ZA_PUBL_TAX_PERC',l_EndDate)
848: / 100;
849:
850: hr_utility.set_location('py_za_tx_01032004.LteCalc',11);
851:
849:
850: hr_utility.set_location('py_za_tx_01032004.LteCalc',11);
851:
852: -- Rebates
853: py_za_tx_utl_01032004.SetRebates;
854: -- Abatements
855: py_za_tx_utl_01032004.Abatements;
856:
857: hr_utility.set_location('py_za_tx_01032004.LteCalc',12);
851:
852: -- Rebates
853: py_za_tx_utl_01032004.SetRebates;
854: -- Abatements
855: py_za_tx_utl_01032004.Abatements;
856:
857: hr_utility.set_location('py_za_tx_01032004.LteCalc',12);
858:
859: -- Base Earnings
902: -- Threshold Check
903: IF trc_TxbBseInc >= trc_Threshold THEN
904: hr_utility.set_location('py_za_tx_01032004.LteCalc',13);
905: -- Tax Liability
906: trc_TotLibBse := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbBseInc);
907: ELSE
908: hr_utility.set_location('py_za_tx_01032004.LteCalc',14);
909: trc_TotLibBse := 0;
910: END IF;
931: hr_utility.set_location('py_za_tx_01032004.LteCalc',16);
932:
933: -- Global Values
934: l_ZA_TX_YR_END := l_EndDate;
935: l_ZA_ADL_TX_RBT := py_za_tx_utl_01032004.GlbVal('ZA_ADDITIONAL_TAX_REBATE',l_EndDate);
936: l_ZA_PRI_TX_RBT := py_za_tx_utl_01032004.GlbVal('ZA_PRIMARY_TAX_REBATE',l_EndDate);
937: l_ZA_PRI_TX_THRSHLD := py_za_tx_utl_01032004.GlbVal('ZA_PRIM_TAX_THRESHOLD',l_EndDate);
938: l_ZA_SC_TX_THRSHLD := py_za_tx_utl_01032004.GlbVal('ZA_SEC_TAX_THRESHOLD',l_EndDate);
939:
932:
933: -- Global Values
934: l_ZA_TX_YR_END := l_EndDate;
935: l_ZA_ADL_TX_RBT := py_za_tx_utl_01032004.GlbVal('ZA_ADDITIONAL_TAX_REBATE',l_EndDate);
936: l_ZA_PRI_TX_RBT := py_za_tx_utl_01032004.GlbVal('ZA_PRIMARY_TAX_REBATE',l_EndDate);
937: l_ZA_PRI_TX_THRSHLD := py_za_tx_utl_01032004.GlbVal('ZA_PRIM_TAX_THRESHOLD',l_EndDate);
938: l_ZA_SC_TX_THRSHLD := py_za_tx_utl_01032004.GlbVal('ZA_SEC_TAX_THRESHOLD',l_EndDate);
939:
940: -- Calculate the assignments 65 Year Date
933: -- Global Values
934: l_ZA_TX_YR_END := l_EndDate;
935: l_ZA_ADL_TX_RBT := py_za_tx_utl_01032004.GlbVal('ZA_ADDITIONAL_TAX_REBATE',l_EndDate);
936: l_ZA_PRI_TX_RBT := py_za_tx_utl_01032004.GlbVal('ZA_PRIMARY_TAX_REBATE',l_EndDate);
937: l_ZA_PRI_TX_THRSHLD := py_za_tx_utl_01032004.GlbVal('ZA_PRIM_TAX_THRESHOLD',l_EndDate);
938: l_ZA_SC_TX_THRSHLD := py_za_tx_utl_01032004.GlbVal('ZA_SEC_TAX_THRESHOLD',l_EndDate);
939:
940: -- Calculate the assignments 65 Year Date
941: l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
934: l_ZA_TX_YR_END := l_EndDate;
935: l_ZA_ADL_TX_RBT := py_za_tx_utl_01032004.GlbVal('ZA_ADDITIONAL_TAX_REBATE',l_EndDate);
936: l_ZA_PRI_TX_RBT := py_za_tx_utl_01032004.GlbVal('ZA_PRIMARY_TAX_REBATE',l_EndDate);
937: l_ZA_PRI_TX_THRSHLD := py_za_tx_utl_01032004.GlbVal('ZA_PRIM_TAX_THRESHOLD',l_EndDate);
938: l_ZA_SC_TX_THRSHLD := py_za_tx_utl_01032004.GlbVal('ZA_SEC_TAX_THRESHOLD',l_EndDate);
939:
940: -- Calculate the assignments 65 Year Date
941: l_65Year := add_months(dbi_PER_DTE_OF_BRTH,780);
942:
960: -- Threshold Check
961: IF trc_TxbBseInc >= trc_Threshold THEN
962: hr_utility.set_location('py_za_tx_01032004.LteCalc',19);
963: -- Tax Liability
964: trc_TotLibBse := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbBseInc);
965: ELSE
966: hr_utility.set_location('py_za_tx_01032004.LteCalc',20);
967: trc_TotLibBse := 0;
968: END IF;
980:
981: hr_utility.set_location('py_za_tx_01032004.LteCalc',21);
982:
983: -- Rebates
984: py_za_tx_utl_01032004.SetRebates;
985: -- Abatements
986: py_za_tx_utl_01032004.Abatements;
987:
988: hr_utility.set_location('py_za_tx_01032004.LteCalc',22);
982:
983: -- Rebates
984: py_za_tx_utl_01032004.SetRebates;
985: -- Abatements
986: py_za_tx_utl_01032004.Abatements;
987:
988: hr_utility.set_location('py_za_tx_01032004.LteCalc',22);
989:
990: -- Update Global Balance Values with correct TAXABLE values
987:
988: hr_utility.set_location('py_za_tx_01032004.LteCalc',22);
989:
990: -- Update Global Balance Values with correct TAXABLE values
991: py_za_tx_utl_01032004.TrvAll;
992:
993: bal_PO_RFI_YTD := bal_PO_RFI_YTD * glb_ZA_PBL_TX_PRC / 100;
994: bal_PO_NRFI_YTD := bal_PO_NRFI_YTD * glb_ZA_PBL_TX_PRC / 100;
995:
1020: -- Threshold Check
1021: IF trc_TxbNorInc >= trc_Threshold THEN
1022: hr_utility.set_location('py_za_tx_01032004.LteCalc',24);
1023: -- Tax Liability
1024: trc_TotLibNI := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbNorInc);
1025: trc_LibFyNI := trc_TotLibNI - least(trc_TotLibNI,trc_TotLibBse);
1026: trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibBse);
1027: trc_LibFpNI := trc_LibFyNI - bal_TX_ON_NI_YTD;
1028: ELSE
1067: -- Threshold Check
1068: IF trc_TxbFrnInc >= trc_Threshold THEN
1069: hr_utility.set_location('py_za_tx_01032004.LteCalc',28);
1070: -- Tax Liability
1071: trc_TotLibFB := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbFrnInc);
1072: trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
1073: trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
1074: trc_LibFpFB := trc_LibFyFB - bal_TX_ON_FB_YTD;
1075: ElSE
1103: -- Threshold Check
1104: IF trc_TxbTrvInc >= trc_Threshold THEN
1105: hr_utility.set_location('py_za_tx_01032004.LteCalc',32);
1106: -- Tax Liability
1107: trc_TotLibTA := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbTrvInc);
1108: trc_LibFyTA := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
1109: trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
1110: trc_LibFpTA := trc_LibFyTA - bal_TX_ON_TA_YTD;
1111: ELSE
1139: -- Threshold Check
1140: IF trc_TxbAnnBonInc >= trc_Threshold THEN
1141: hr_utility.set_location('py_za_tx_01032004.LteCalc',36);
1142: -- Tax Liability
1143: trc_TotLibAB := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbAnnBonInc);
1144: trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
1145: trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
1146: trc_LibFpAB := trc_LibFyAB - bal_TX_ON_AB_YTD;
1147: ELSE
1186: -- Threshold Check
1187: IF trc_TxbAnnPymInc >= trc_Threshold THEN
1188: hr_utility.set_location('py_za_tx_01032004.LteCalc',42);
1189: -- Tax Liability
1190: trc_TotLibAP := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1191: trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
1192: trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
1193: trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
1194: ELSE
1240: hr_utility.set_location('py_za_tx_01032004.LteCalc',50);
1241: l_Sl := FALSE;
1242: END IF;
1243:
1244: py_za_tx_utl_01032004.ValidateTaxOns(p_Rf => l_Sl);
1245:
1246: -- Set IT3A Indicator
1247: --
1248: IF trc_TxbAnnPymInc + trc_PblOffErn >= trc_Threshold THEN
1391: -- Threshold Check
1392: IF trc_TxbBseInc >= trc_Threshold THEN
1393: hr_utility.set_location('py_za_tx_01032004.SeaCalc',6);
1394: -- Tax Liability
1395: trc_TotLibBse := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbBseInc);
1396: ELSE
1397: hr_utility.set_location('py_za_tx_01032004.SeaCalc',7);
1398: trc_TotLibBse := 0;
1399: END IF;
1405: -- Threshold Check
1406: IF trc_TxbAnnPymInc >= trc_Threshold THEN
1407: hr_utility.set_location('py_za_tx_01032004.SeaCalc',8);
1408: -- Tax Liability
1409: trc_TotLibAP := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1410: trc_LibFpAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibBse);
1411: ElSE
1412: hr_utility.set_location('py_za_tx_01032004.SeaCalc',9);
1413: trc_LibFpAP := 0;
1434: --
1435: trc_SitFactor := glb_ZA_WRK_DYS_PR_YR / dbi_SEA_WRK_DYS_WRK;
1436:
1437: -- Rebates
1438: py_za_tx_utl_01032004.SetRebates;
1439:
1440: -- Abatements
1441: py_za_tx_utl_01032004.Abatements;
1442:
1437: -- Rebates
1438: py_za_tx_utl_01032004.SetRebates;
1439:
1440: -- Abatements
1441: py_za_tx_utl_01032004.Abatements;
1442:
1443: hr_utility.set_location('py_za_tx_01032004.SeaCalc',11);
1444:
1445: -- Normal Income
1467: -- Threshold Check
1468: IF trc_TxbNorInc >= trc_Threshold THEN
1469: hr_utility.set_location('py_za_tx_01032004.SeaCalc',13);
1470: -- Tax Liability
1471: trc_TotLibNI := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbNorInc);
1472: trc_LibFyNI := trc_TotLibNI - 0;
1473: trc_TotLibNI := greatest(trc_TotLibNI,0);
1474: trc_LibFpNI := trc_LibFyNI / trc_SitFactor;
1475: ELSE
1509: -- Threshold Check
1510: IF trc_TxbFrnInc >= trc_Threshold THEN
1511: hr_utility.set_location('py_za_tx_01032004.SeaCalc',17);
1512: -- Tax Liability
1513: trc_TotLibFB := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbFrnInc);
1514: trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
1515: trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
1516: trc_LibFpFB := trc_LibFyFB / trc_SitFactor;
1517: ELSE
1547: -- Threshold Check
1548: IF trc_TxbAnnPymInc >= trc_Threshold THEN
1549: hr_utility.set_location('py_za_tx_01032004.SeaCalc',21);
1550: -- Tax Liability
1551: trc_TotLibAP := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1552: trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibFB);
1553: trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibFB);
1554: trc_LibFpAP := trc_LibFyAP;
1555: ELSE
1565:
1566:
1567: -- Net Pay Validation
1568: --
1569: py_za_tx_utl_01032004.ValidateTaxOns;
1570:
1571: hr_utility.set_location('py_za_tx_01032004.SeaCalc',24);
1572:
1573: -- Set IT3A Indicator
1631: trc_CalTyp := 'SitCalc';
1632:
1633: -- Update Global Balance Values with correct TAXABLE values
1634: --
1635: py_za_tx_utl_01032004.TrvAll;
1636:
1637: hr_utility.set_location('py_za_tx_01032004.SitCalc',2);
1638:
1639: bal_PO_RFI_YTD := bal_PO_RFI_YTD * glb_ZA_PBL_TX_PRC / 100;
1671: hr_utility.set_location('py_za_tx_01032004.SitCalc',3);
1672:
1673: -- Site Factor
1674: --
1675: trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032004.DaysWorked;
1676:
1677: hr_utility.set_location('py_za_tx_01032004.SitCalc',4);
1678:
1679: -- Rebates
1676:
1677: hr_utility.set_location('py_za_tx_01032004.SitCalc',4);
1678:
1679: -- Rebates
1680: py_za_tx_utl_01032004.SetRebates;
1681:
1682: -- Abatements
1683: py_za_tx_utl_01032004.Abatements;
1684:
1679: -- Rebates
1680: py_za_tx_utl_01032004.SetRebates;
1681:
1682: -- Abatements
1683: py_za_tx_utl_01032004.Abatements;
1684:
1685: hr_utility.set_location('py_za_tx_01032004.SitCalc',5);
1686:
1687: -- Deemed Remuneration
1697: -- Threshold Check
1698: IF trc_TxbDmdRmn >= trc_Threshold THEN
1699: hr_utility.set_location('py_za_tx_01032004.SitCalc',7);
1700: -- Tax Liability
1701: trc_TotLibDR := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbDmdRmn);
1702: trc_LibFyDR := (trc_TotLibDR - 0) / trc_SitFactor;
1703: trc_TotLibDR := greatest(trc_TotLibDR,0);
1704: trc_LibFpDR := trc_LibFyDR - bal_TX_ON_DR_YTD;
1705: ELSE
1747: -- Threshold Check
1748: IF trc_TxbNorInc >= trc_Threshold THEN
1749: hr_utility.set_location('py_za_tx_01032004.SitCalc',12);
1750: -- Tax Liability
1751: trc_TotLibNI := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbNorInc);
1752: trc_LibFyNI := (trc_TotLibNI - least(trc_TotLibNI,trc_TotLibDR)) / trc_SitFactor;
1753: trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibDR);
1754: trc_LibFpNI := trc_LibFyNI - bal_TX_ON_NI_YTD;
1755: ELSE
1795: -- Threshold Check
1796: IF trc_TxbFrnInc >= trc_Threshold THEN
1797: hr_utility.set_location('py_za_tx_01032004.SitCalc',16);
1798: -- Tax Liability
1799: trc_TotLibFB := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbFrnInc);
1800: trc_LibFyFB := (trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI)) / trc_SitFactor;
1801: trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
1802: trc_LibFpFB := trc_LibFyFB - bal_TX_ON_FB_YTD;
1803: ElSE
1831: -- Threshold Check
1832: IF trc_TxbTrvInc >= trc_Threshold THEN
1833: hr_utility.set_location('py_za_tx_01032004.SitCalc',20);
1834: -- Tax Liability
1835: trc_TotLibTA := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbTrvInc);
1836: trc_LibFyTA := (trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB)) / trc_SitFactor;
1837: trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
1838: trc_LibFpTA := trc_LibFyTA - bal_TX_ON_TA_YTD;
1839: ELSE
1867: -- Threshold Check
1868: IF trc_TxbBonProInc >= trc_Threshold THEN
1869: hr_utility.set_location('py_za_tx_01032004.SitCalc',24);
1870: -- Tax Liability
1871: trc_TotLibBP := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbBonProInc);
1872: trc_LibFyBP := (trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA)) / trc_SitFactor;
1873: trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
1874: trc_LibFpBP := trc_LibFyBP - bal_TX_ON_BP_YTD;
1875: ELSE
1903: -- Threshold Check
1904: IF trc_TxbAnnBonInc >= trc_Threshold THEN
1905: hr_utility.set_location('py_za_tx_01032004.SitCalc',28);
1906: -- Tax Liability
1907: trc_TotLibAB := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbAnnBonInc);
1908: trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
1909: trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
1910: hr_utility.set_location('py_za_tx_01032004.SitCalc',29);
1911: -- Check Bonus Provision
1911: -- Check Bonus Provision
1912: IF trc_BonProYtd <> 0 THEN
1913: hr_utility.set_location('py_za_tx_01032004.SitCalc',30);
1914: -- Check Bonus Provision Frequency
1915: IF dbi_BP_TX_RCV = 'B' OR py_za_tx_utl_01032004.SitePeriod THEN
1916: hr_utility.set_location('py_za_tx_01032004.SitCalc',31);
1917: trc_LibFpAB :=
1918: trc_LibFyAB - (bal_TX_ON_BP_YTD
1919: + trc_LibFpBP
1938: -- Set Cascade Figures and Refund
1939: trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
1940: trc_LibFpABOvr := TRUE;
1941:
1942: IF dbi_BP_TX_RCV = 'A' AND py_za_tx_utl_01032004.SitePeriod THEN
1943: hr_utility.set_location('py_za_tx_01032004.SitCalc',36);
1944: trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
1945: trc_LibFpBPOvr := TRUE;
1946: trc_LibFpAPOvr := TRUE;
1981: -- Threshold Check
1982: IF trc_TxbAnnPymInc >= trc_Threshold THEN
1983: hr_utility.set_location('py_za_tx_01032004.SitCalc',39);
1984: -- Tax Liability
1985: trc_TotLibAP := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbAnnPymInc);
1986: trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
1987: trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
1988: trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
1989: ELSE
2035: hr_utility.set_location('py_za_tx_01032004.SitCalc',45);
2036: l_Sl := FALSE;
2037: END IF;
2038:
2039: py_za_tx_utl_01032004.ValidateTaxOns(p_Rf => l_Sl);
2040:
2041: hr_utility.set_location('py_za_tx_01032004.SitCalc',46);
2042:
2043: -- Set IT3A Indicator
2138: trc_CalTyp := 'DirCalc';
2139:
2140: -- Update Global Balance Values with correct TAXABLE values
2141: --
2142: py_za_tx_utl_01032004.TrvAll;
2143:
2144: hr_utility.set_location('py_za_tx_01032004.DirCalc',2);
2145:
2146: bal_PO_RFI_YTD := bal_PO_RFI_YTD * glb_ZA_PBL_TX_PRC / 100;
2168: hr_utility.set_location('py_za_tx_01032004.DirCalc',3);
2169: -- Normal Earnings
2170: trc_NorErn := trc_NorIncYtd;
2171: -- Tax Liability
2172: trc_TotLibNI := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_NorErn);
2173: trc_LibFyNI := trc_TotLibNI - 0;
2174: trc_TotLibNI := greatest(trc_TotLibNI,0);
2175: trc_LibFpNI := trc_LibFyNI - bal_TX_ON_NI_YTD;
2176: ELSE
2202: hr_utility.set_location('py_za_tx_01032004.DirCalc',5);
2203: -- Fringe Benefit Earnings
2204: trc_FrnBenErn := trc_FrnBenYtd + trc_NorErn;
2205: -- Tax Liability
2206: trc_TotLibFB := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_FrnBenErn);
2207: trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
2208: trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
2209: trc_LibFpFB := trc_LibFyFB - bal_TX_ON_FB_YTD;
2210: ELSE
2225: hr_utility.set_location('py_za_tx_01032004.DirCalc',7);
2226: -- Travel Allowance Earnings
2227: trc_TrvAllErn := trc_TrvAllYtd + trc_FrnBenErn;
2228: -- Tax Liability
2229: trc_TotLibTA := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TrvAllErn);
2230: trc_LibFyTA := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
2231: trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
2232: trc_LibFpTA := trc_LibFyTA - bal_TX_ON_TA_YTD;
2233: ELSE
2248: hr_utility.set_location('py_za_tx_01032004.DirCalc',9);
2249: -- Bonus Provision Earnings
2250: trc_BonProErn := trc_BonProYtd + trc_TrvAllErn;
2251: -- Tax Liability
2252: trc_TotLibBP := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_BonProErn);
2253: trc_LibFyBP := trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA);
2254: trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
2255: trc_LibFpBP := trc_LibFyBP - bal_TX_ON_BP_YTD;
2256: ELSE
2271: hr_utility.set_location('py_za_tx_01032004.DirCalc',11);
2272: -- Annual Bonus Earnings
2273: trc_AnnBonErn := trc_AnnBonYtd + trc_TrvAllErn;
2274: -- Tax Liability
2275: trc_TotLibAB := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_AnnBonErn);
2276: trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
2277: trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
2278: -- Check Bonus Provision
2279: IF trc_BonProYtd <> 0 THEN
2278: -- Check Bonus Provision
2279: IF trc_BonProYtd <> 0 THEN
2280: hr_utility.set_location('py_za_tx_01032004.DirCalc',12);
2281: -- Check Bonus Provision Frequency
2282: IF dbi_BP_TX_RCV = 'B' OR py_za_tx_utl_01032004.SitePeriod THEN
2283: hr_utility.set_location('py_za_tx_01032004.DirCalc',13);
2284: trc_LibFpAB :=
2285: trc_LibFyAB - (bal_TX_ON_BP_YTD
2286: + trc_LibFpBP
2298: -- Set Cascade Figures and Refund
2299: trc_LibFpAB := -1 * bal_TX_ON_AB_YTD;
2300: trc_LibFpABOvr := TRUE;
2301:
2302: IF dbi_BP_TX_RCV = 'A' AND py_za_tx_utl_01032004.SitePeriod THEN
2303: hr_utility.set_location('py_za_tx_01032004.DirCalc',17);
2304: trc_LibFpBP := -1 * bal_TX_ON_BP_YTD;
2305: trc_LibFpBPOvr := TRUE;
2306: trc_LibFpAPOvr := TRUE;
2334: hr_utility.set_location('py_za_tx_01032004.DirCalc',19);
2335: -- Annual Payments Earnings
2336: trc_AnnPymErn := trc_AnnPymYtd + trc_AnnBonErn;
2337: -- Tax Liability
2338: trc_TotLibAP := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_AnnPymErn);
2339: trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
2340: trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
2341: trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
2342: ElSE
2367: END IF;
2368:
2369: -- Net Pay Validation
2370: --
2371: py_za_tx_utl_01032004.ValidateTaxOns(p_Rf => TRUE);
2372:
2373: hr_utility.set_location('py_za_tx_01032004.DirCalc',23);
2374:
2375: -- Tax Percentage Indicator
2482: --
2483: trc_CalTyp := 'BasCalc';
2484:
2485: -- Rebates
2486: py_za_tx_utl_01032004.SetRebates;
2487:
2488: -- Abatements
2489: py_za_tx_utl_01032004.Abatements;
2490:
2485: -- Rebates
2486: py_za_tx_utl_01032004.SetRebates;
2487:
2488: -- Abatements
2489: py_za_tx_utl_01032004.Abatements;
2490:
2491: -- Deemed Remuneration
2492: --
2493: -- Run Deemed Remuneration
2501: -- Threshold Check
2502: IF trc_TxbDmdRmn >= trc_Threshold THEN
2503: hr_utility.set_location('py_za_tx_01032004.BasCalc',3);
2504: -- Tax Liability
2505: trc_TotLibDR := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbDmdRmn);
2506: ELSE
2507: hr_utility.set_location('py_za_tx_01032004.BasCalc',4);
2508: trc_TotLibDR := 0;
2509: END IF;
2535: -- Threshold Check
2536: IF trc_TxbBseInc >= trc_Threshold THEN
2537: hr_utility.set_location('py_za_tx_01032004.BasCalc',7);
2538: -- Tax Liability
2539: trc_TotLibBse := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbBseInc);
2540: trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
2541: ELSE
2542: hr_utility.set_location('py_za_tx_01032004.BasCalc',8);
2543: trc_TotLibBse := trc_TotLibDR;
2559: -- Threshold Check
2560: IF trc_TxbAnnBonInc >= trc_Threshold THEN
2561: hr_utility.set_location('py_za_tx_01032004.BasCalc',11);
2562: -- Tax Liability
2563: trc_TotLibAB := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbAnnBonInc);
2564: trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
2565: trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
2566: -- Check Bonus Provision
2567: IF bal_BP_YTD <> 0 THEN
2614: -- Threshold Check
2615: IF trc_TxbAnnPymInc >= trc_Threshold THEN
2616: hr_utility.set_location('py_za_tx_01032004.BasCalc',20);
2617: -- Tax Liability
2618: trc_TotLibAP := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2619: trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
2620: trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
2621: trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
2622: ELSE
2629: END IF;
2630:
2631: -- Net Pay Validation
2632: --
2633: py_za_tx_utl_01032004.ValidateTaxOns;
2634:
2635: -- Deemed Remuneration
2636: WrtHrTrc('trc_TxbDmdRmn: '||to_char(trc_TxbDmdRmn));
2637: WrtHrTrc('trc_TotLibDR: '||to_char(trc_TotLibDR));
2720: trc_CalTyp := 'CalCalc';
2721:
2722: -- Update Global Balance Values with correct TAXABLE values
2723: --
2724: py_za_tx_utl_01032004.TrvAll;
2725:
2726: hr_utility.set_location('py_za_tx_01032004.CalCalc',2);
2727:
2728: -- Calendar Ytd Taxable Income
2761: ELSE -- continue CalCalc
2762: hr_utility.set_location('py_za_tx_01032004.CalCalc',4);
2763: -- Site Factor
2764: --
2765: trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032004.DaysWorked;
2766:
2767: -- Rebates
2768: py_za_tx_utl_01032004.SetRebates;
2769:
2764: --
2765: trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032004.DaysWorked;
2766:
2767: -- Rebates
2768: py_za_tx_utl_01032004.SetRebates;
2769:
2770: -- Abatements
2771: py_za_tx_utl_01032004.Abatements;
2772:
2767: -- Rebates
2768: py_za_tx_utl_01032004.SetRebates;
2769:
2770: -- Abatements
2771: py_za_tx_utl_01032004.Abatements;
2772:
2773: hr_utility.set_location('py_za_tx_01032004.CalCalc',5);
2774:
2775: -- Deemed Remuneration
2785: -- Threshold Check
2786: IF trc_TxbDmdRmn >= trc_Threshold THEN
2787: hr_utility.set_location('py_za_tx_01032004.CalCalc',7);
2788: -- Tax Liability
2789: trc_TotLibDR := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbDmdRmn);
2790: ELSE
2791: hr_utility.set_location('py_za_tx_01032004.CalCalc',8);
2792: trc_TotLibDR := 0;
2793: END IF;
2807: -- Threshold Check
2808: IF trc_TxbBseInc >= trc_Threshold THEN
2809: hr_utility.set_location('py_za_tx_01032004.CalCalc',11);
2810: -- Tax Liability
2811: trc_TotLibBse := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbBseInc);
2812: trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
2813: ELSE
2814: hr_utility.set_location('py_za_tx_01032004.CalCalc',12);
2815: trc_TotLibBse := trc_TotLibDR;
2831: -- Threshold Check
2832: IF trc_TxbAnnBonInc >= trc_Threshold THEN
2833: hr_utility.set_location('py_za_tx_01032004.CalCalc',15);
2834: -- Tax Liability
2835: trc_TotLibAB := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbAnnBonInc);
2836: trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
2837: trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
2838: -- Check Bonus Provision
2839: IF bal_BP_YTD <> 0 THEN
2889: -- Threshold Check
2890: IF trc_TxbAnnPymInc >= trc_Threshold THEN
2891: hr_utility.set_location('py_za_tx_01032004.CalCalc',24);
2892: -- Tax Liability
2893: trc_TotLibAP := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbAnnPymInc);
2894: trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
2895: trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
2896: trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
2897: ELSE
2906: END IF;
2907:
2908: -- Net pay Validation
2909: --
2910: py_za_tx_utl_01032004.ValidateTaxOns;
2911:
2912: -- Deemed Remuneration
2913: WrtHrTrc('trc_TxbDmdRmn: '||to_char(trc_TxbDmdRmn));
2914: WrtHrTrc('trc_TotLibDR: '||to_char(trc_TotLibDR));
2999: --
3000: trc_CalTyp := 'YtdCalc';
3001:
3002: -- Update Global Balance Values with correct TAXABLE values
3003: py_za_tx_utl_01032004.TrvAll;
3004:
3005: hr_utility.set_location('py_za_tx_01032004.YtdCalc',2);
3006:
3007: -- Ytd Taxable Income
3038: CalCalc;
3039: ELSE --Continue YtdCalc
3040: hr_utility.set_location('py_za_tx_01032004.YtdCalc',4);
3041: -- Site Factor
3042: trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032004.DaysWorked;
3043:
3044: -- Rebates
3045: py_za_tx_utl_01032004.SetRebates;
3046:
3041: -- Site Factor
3042: trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032004.DaysWorked;
3043:
3044: -- Rebates
3045: py_za_tx_utl_01032004.SetRebates;
3046:
3047: -- Abatements
3048: py_za_tx_utl_01032004.Abatements;
3049:
3044: -- Rebates
3045: py_za_tx_utl_01032004.SetRebates;
3046:
3047: -- Abatements
3048: py_za_tx_utl_01032004.Abatements;
3049:
3050: hr_utility.set_location('py_za_tx_01032004.YtdCalc',5);
3051:
3052: -- Deemed Remuneration
3062: -- Threshold Check
3063: IF trc_TxbDmdRmn >= trc_Threshold THEN
3064: hr_utility.set_location('py_za_tx_01032004.YtdCalc',7);
3065: -- Tax Liability
3066: trc_TotLibDR := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbDmdRmn);
3067: ELSE
3068: hr_utility.set_location('py_za_tx_01032004.YtdCalc',8);
3069: trc_TotLibDR := 0;
3070: END IF;
3084: -- Threshold Check
3085: IF trc_TxbBseInc >= trc_Threshold THEN
3086: hr_utility.set_location('py_za_tx_01032004.YtdCalc',11);
3087: -- Tax Liability
3088: trc_TotLibBse := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbBseInc);
3089: trc_TotLibBse := greatest(trc_TotLibBse,trc_TotLibDR);
3090: ELSE
3091: hr_utility.set_location('py_za_tx_01032004.YtdCalc',12);
3092: trc_TotLibBse := trc_TotLibDR;
3108: -- Threshold Check
3109: IF trc_TxbAnnBonInc >= trc_Threshold THEN
3110: hr_utility.set_location('py_za_tx_01032004.YtdCalc',15);
3111: -- Tax Liability
3112: trc_TotLibAB := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbAnnBonInc);
3113: trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibBse);
3114: trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibBse);
3115: -- Check Bonus Provision
3116: IF bal_BP_YTD <> 0 THEN
3166: -- Threshold Check
3167: IF trc_TxbAnnPymInc >= trc_Threshold THEN
3168: hr_utility.set_location('py_za_tx_01032004.YtdCalc',24);
3169: -- Tax Liability
3170: trc_TotLibAP := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbAnnPymInc);
3171: trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
3172: trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
3173: trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
3174: ELSE
3183: END IF;
3184:
3185: -- Net Pay validation
3186: --
3187: py_za_tx_utl_01032004.ValidateTaxOns;
3188:
3189: hr_utility.set_location('py_za_tx_01032004.YtdCalc',27);
3190:
3191: -- Deemed Remuneration
3280: --
3281: bal_TA_RFI_PTD := bal_TA_RFI_PTD * glb_ZA_TRV_ALL_TX_PRC / 100;
3282: bal_TA_NRFI_PTD := bal_TA_NRFI_PTD * glb_ZA_TRV_ALL_TX_PRC / 100;
3283:
3284: py_za_tx_utl_01032004.TrvAll;
3285:
3286: hr_utility.set_location('py_za_tx_01032004.NorCalc',2);
3287:
3288: bal_PO_RFI_PTD := bal_PO_RFI_PTD * glb_ZA_PBL_TX_PRC / 100;
3321: + bal_USE_VEH_NRFI_PTD + bal_USE_VEH_RFI_PTD
3322: );
3323:
3324: -- Period Factor
3325: py_za_tx_utl_01032004.PeriodFactor;
3326:
3327: -- Possible Periods Factor
3328: py_za_tx_utl_01032004.PossiblePeriodsFactor;
3329:
3324: -- Period Factor
3325: py_za_tx_utl_01032004.PeriodFactor;
3326:
3327: -- Possible Periods Factor
3328: py_za_tx_utl_01032004.PossiblePeriodsFactor;
3329:
3330: -- Rebates
3331: py_za_tx_utl_01032004.SetRebates;
3332:
3327: -- Possible Periods Factor
3328: py_za_tx_utl_01032004.PossiblePeriodsFactor;
3329:
3330: -- Rebates
3331: py_za_tx_utl_01032004.SetRebates;
3332:
3333: -- Abatements
3334: py_za_tx_utl_01032004.Abatements;
3335:
3330: -- Rebates
3331: py_za_tx_utl_01032004.SetRebates;
3332:
3333: -- Abatements
3334: py_za_tx_utl_01032004.Abatements;
3335:
3336: hr_utility.set_location('py_za_tx_01032004.NorCalc',3);
3337:
3338: -- Deemed Remuneration
3347: -- Threshold Check
3348: IF trc_TxbDmdRmn >= trc_Threshold THEN
3349: hr_utility.set_location('py_za_tx_01032004.NorCalc',5);
3350: -- Tax Liability
3351: trc_TotLibDR := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbDmdRmn);
3352: trc_LibFyDR := trc_TotLibDR - 0;
3353: trc_TotLibDR := greatest(trc_TotLibDR,0);
3354: -- DeAnnualise
3355: trc_LibFpDR := py_za_tx_utl_01032004.DeAnnualise
3351: trc_TotLibDR := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbDmdRmn);
3352: trc_LibFyDR := trc_TotLibDR - 0;
3353: trc_TotLibDR := greatest(trc_TotLibDR,0);
3354: -- DeAnnualise
3355: trc_LibFpDR := py_za_tx_utl_01032004.DeAnnualise
3356: ( p_Liab => trc_LibFyDR
3357: , p_TxOnYtd => bal_TX_ON_DR_YTD
3358: , p_TxOnPtd => bal_TX_ON_DR_PTD
3359: );
3395: IF trc_NorIncYtd <> 0 THEN
3396: hr_utility.set_location('py_za_tx_01032004.NorCalc',8);
3397:
3398: -- Annualise Normal Income
3399: trc_NorErn := py_za_tx_utl_01032004.Annualise
3400: (p_YtdInc => trc_NorIncYtd
3401: ,p_PtdInc => trc_NorIncPtd
3402: );
3403:
3407: -- Threshold Check
3408: IF trc_TxbNorInc >= trc_Threshold THEN
3409: hr_utility.set_location('py_za_tx_01032004.NorCalc',9);
3410: -- Tax Liability
3411: trc_TotLibNI := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbNorInc);
3412: trc_LibFyNI := trc_TotLibNI - least(trc_TotLibNI,trc_TotLibDR);
3413: trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibDR);
3414: -- DeAnnualise
3415: trc_LibFpNI := py_za_tx_utl_01032004.DeAnnualise
3411: trc_TotLibNI := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbNorInc);
3412: trc_LibFyNI := trc_TotLibNI - least(trc_TotLibNI,trc_TotLibDR);
3413: trc_TotLibNI := greatest(trc_TotLibNI,trc_TotLibDR);
3414: -- DeAnnualise
3415: trc_LibFpNI := py_za_tx_utl_01032004.DeAnnualise
3416: ( p_Liab => trc_LibFyNI
3417: , p_TxOnYtd => bal_TX_ON_NI_YTD
3418: , p_TxOnPtd => bal_TX_ON_NI_PTD
3419: );
3454: IF trc_FrnBenYtd <> 0 THEN
3455: hr_utility.set_location('py_za_tx_01032004.NorCalc',12);
3456:
3457: -- Annualise Fringe Benefits
3458: trc_FrnBenErn := py_za_tx_utl_01032004.Annualise
3459: ( p_YtdInc => trc_FrnBenYtd
3460: , p_PtdInc => trc_FrnBenPtd
3461: ) + trc_NorErn;
3462: -- Taxable Fringe Income
3464: -- Threshold Check
3465: IF trc_TxbFrnInc >= trc_Threshold THEN
3466: hr_utility.set_location('py_za_tx_01032004.NorCalc',13);
3467: -- Tax Liability
3468: trc_TotLibFB := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbFrnInc);
3469: trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
3470: trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
3471: -- DeAnnualise
3472: trc_LibFpFB := py_za_tx_utl_01032004.DeAnnualise
3468: trc_TotLibFB := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbFrnInc);
3469: trc_LibFyFB := trc_TotLibFB - least(trc_TotLibFB,trc_TotLibNI);
3470: trc_TotLibFB := greatest(trc_TotLibFB,trc_TotLibNI);
3471: -- DeAnnualise
3472: trc_LibFpFB := py_za_tx_utl_01032004.DeAnnualise
3473: ( trc_LibFyFB
3474: , bal_TX_ON_FB_YTD
3475: , bal_TX_ON_FB_PTD
3476: );
3500: hr_utility.set_location('py_za_tx_01032004.NorCalc',16);
3501: -- Ptd Travel Allowance
3502: trc_TrvAllPtd := bal_TA_NRFI_PTD + bal_TA_RFI_PTD;
3503: -- Annualise Travel Allowance
3504: trc_TrvAllErn := py_za_tx_utl_01032004.Annualise
3505: ( p_YtdInc => trc_TrvAllYtd
3506: , p_PtdInc => trc_TrvAllPtd
3507: ) + trc_FrnBenErn;
3508: -- Taxable Travel Income
3510: -- Threshold Check
3511: IF trc_TxbTrvInc >= trc_Threshold THEN
3512: hr_utility.set_location('py_za_tx_01032004.NorCalc',17);
3513: -- Tax Liability
3514: trc_TotLibTA := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbTrvInc);
3515: trc_LibFyTA := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
3516: trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
3517: -- DeAnnualise
3518: trc_LibFpTA := py_za_tx_utl_01032004.DeAnnualise
3514: trc_TotLibTA := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbTrvInc);
3515: trc_LibFyTA := trc_TotLibTA - least(trc_TotLibTA,trc_TotLibFB);
3516: trc_TotLibTA := greatest(trc_TotLibTA,trc_TotLibFB);
3517: -- DeAnnualise
3518: trc_LibFpTA := py_za_tx_utl_01032004.DeAnnualise
3519: ( trc_LibFyTA
3520: , bal_TX_ON_TA_YTD
3521: , bal_TX_ON_TA_PTD
3522: );
3544: -- Skip the calculation if there is No Income
3545: IF trc_BonProYtd <> 0 THEN
3546: hr_utility.set_location('py_za_tx_01032004.NorCalc',20);
3547: -- Annualise Bonus Provision
3548: trc_BonProErn := py_za_tx_utl_01032004.Annualise
3549: ( p_YtdInc => trc_BonProYtd
3550: , p_PtdInc => trc_BonProPtd
3551: ) + trc_TrvAllErn;
3552: -- Taxable Bonus Provision Income
3554: -- Threshold Check
3555: IF trc_TxbBonProInc >= trc_Threshold THEN
3556: hr_utility.set_location('py_za_tx_01032004.NorCalc',21);
3557: -- Tax Liability
3558: trc_TotLibBP := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbBonProInc);
3559: trc_LibFyBP := trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA);
3560: trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
3561: -- DeAnnualise
3562: trc_LibFpBP := py_za_tx_utl_01032004.DeAnnualise
3558: trc_TotLibBP := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbBonProInc);
3559: trc_LibFyBP := trc_TotLibBP - least(trc_TotLibBP,trc_TotLibTA);
3560: trc_TotLibBP := greatest(trc_TotLibBP,trc_TotLibTA);
3561: -- DeAnnualise
3562: trc_LibFpBP := py_za_tx_utl_01032004.DeAnnualise
3563: ( trc_LibFyBP
3564: , bal_TX_ON_BP_YTD
3565: , bal_TX_ON_BP_PTD
3566: );
3595: -- Threshold Check
3596: IF trc_TxbAnnBonInc >= trc_Threshold THEN
3597: hr_utility.set_location('py_za_tx_01032004.NorCalc',25);
3598: -- Tax Liability
3599: trc_TotLibAB := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbAnnBonInc);
3600: trc_LibFyAB := trc_TotLibAB - least(trc_TotLibAB,trc_TotLibTA);
3601: trc_TotLibAB := greatest(trc_TotLibAB,trc_TotLibTA);
3602: -- Check Bonus Provision
3603: IF trc_BonProYtd <> 0 THEN
3658: -- Threshold Check
3659: IF trc_TxbAnnPymInc >= trc_Threshold THEN
3660: hr_utility.set_location('py_za_tx_01032004.NorCalc',33);
3661: -- Tax Liability
3662: trc_TotLibAP := py_za_tx_utl_01032004.TaxLiability(p_Amt => trc_TxbAnnPymInc);
3663: trc_LibFyAP := trc_TotLibAP - least(trc_TotLibAP,trc_TotLibAB);
3664: trc_TotLibAP := greatest(trc_TotLibAP,trc_TotLibAB);
3665: hr_utility.set_location('py_za_tx_01032004.NorCalc',34);
3666: trc_LibFpAP := trc_LibFyAP - bal_TX_ON_AP_YTD;
3690: hr_utility.set_location('py_za_tx_01032004.NorCalc',37);
3691: -- Ptd Public Office Allowance
3692: trc_PblOffPtd :=bal_PO_NRFI_PTD + bal_PO_RFI_PTD;
3693: -- Annualise Public Office Allowance
3694: trc_PblOffErn := py_za_tx_utl_01032004.Annualise
3695: ( p_YtdInc => trc_PblOffYtd
3696: , p_PtdInc => trc_PblOffPtd
3697: );
3698: -- Tax Liability
3696: , p_PtdInc => trc_PblOffPtd
3697: );
3698: -- Tax Liability
3699: trc_LibFyPO := trc_PblOffErn * glb_ZA_PBL_TX_RTE / 100;
3700: trc_LibFpPO := py_za_tx_utl_01032004.DeAnnualise
3701: ( trc_LibFyPO
3702: , bal_TX_ON_PO_YTD
3703: , bal_TX_ON_PO_PTD
3704: );
3710: END IF;
3711:
3712: -- Net Pay Validation
3713: --
3714: py_za_tx_utl_01032004.ValidateTaxOns;
3715:
3716: hr_utility.set_location('py_za_tx_01032004.NorCalc',39);
3717:
3718: -- Deemed Remuneration
5003: BEGIN-- MAIN --
5004: -------------------------------------------------------------------------------
5005: -- Set hr_utility globals if debugging
5006: --
5007: -- py_za_tx_utl_01032004.g_HrTraceEnabled := TRUE;
5008: -- py_za_tx_utl_01032004.g_HrTracePipeName := 'ZATAX';
5009:
5010: -- Call hr_utility start procedure
5011: py_za_tx_utl_01032004.StartHrTrace;
5004: -------------------------------------------------------------------------------
5005: -- Set hr_utility globals if debugging
5006: --
5007: -- py_za_tx_utl_01032004.g_HrTraceEnabled := TRUE;
5008: -- py_za_tx_utl_01032004.g_HrTracePipeName := 'ZATAX';
5009:
5010: -- Call hr_utility start procedure
5011: py_za_tx_utl_01032004.StartHrTrace;
5012:
5007: -- py_za_tx_utl_01032004.g_HrTraceEnabled := TRUE;
5008: -- py_za_tx_utl_01032004.g_HrTracePipeName := 'ZATAX';
5009:
5010: -- Call hr_utility start procedure
5011: py_za_tx_utl_01032004.StartHrTrace;
5012:
5013: -- Setup Trace Header Info
5014: WrtHrTrc(' ');
5015: WrtHrTrc(' ');
5631: trc_CalTyp := 'NoCalc';
5632: -- Liability = entered value
5633: trc_LibFpNI := dbi_TX_DIR_VAL;
5634: -- Standard NetPay Validation
5635: py_za_tx_utl_01032004.ValidateTaxOns;
5636: END IF;
5637: -- D = Directive Percentage
5638: -- P = Private Director wth Directive Percentage
5639: --
5652: ELSE
5653: IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
5654: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',16);
5655: trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
5656: -- Percentage taken into account in py_za_tx_utl_01032004.TaxLiability
5657: END IF;
5658: -- Check Directive Number First
5659: IF dbi_TX_DIR_NUM = 'NULL' THEN
5660: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',17);
5697: ELSE
5698: IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
5699: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',25);
5700: trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
5701: -- Percentage taken into account in py_za_tx_utl_01032004.TaxLiability
5702: END IF;
5703: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',26);
5704: -- Simply Execute the Directive Calculation
5705: DirCalc;
5727: IF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
5728: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',32);
5729: trc_CalTyp := 'OvrCalc';
5730: trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
5731: py_za_tx_utl_01032004.SetRebates;
5732: ELSE
5733: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',33);
5734: SeaCalc;
5735: END IF;
5748: IF trc_OvrTxCalc AND trc_OvrTyp = 'V' THEN
5749: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',35);
5750: trc_CalTyp := 'OvrCalc';
5751: trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
5752: py_za_tx_utl_01032004.SetRebates;
5753: trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032004.DaysWorked;
5754: ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
5755: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',36);
5756: trc_CalTyp := 'OvrCalc';
5749: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',35);
5750: trc_CalTyp := 'OvrCalc';
5751: trc_OvrWrn := 'WARNING: Tax Override - Total Tax Value: '||to_char(trc_LibFpNI + trc_LibFpAP);
5752: py_za_tx_utl_01032004.SetRebates;
5753: trc_SitFactor := dbi_ZA_DYS_IN_YR / py_za_tx_utl_01032004.DaysWorked;
5754: ELSIF trc_OvrTxCalc AND trc_OvrTyp = 'S' THEN
5755: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',36);
5756: trc_CalTyp := 'OvrCalc';
5757: trc_OvrWrn := 'WARNING: Tax Override - Forced Site Calculation';
5761: ELSE
5762: IF trc_OvrTxCalc AND trc_OvrTyp = 'P' THEN
5763: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',38);
5764: trc_OvrWrn := 'WARNING: Tax Override - '||to_char(trc_OvrPrc)||' Percent';
5765: -- Percentage taken into account in py_za_tx_utl_01032004.TaxLiability
5766: END IF;
5767:
5768: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',39);
5769: IF py_za_tx_utl_01032004.LatePayPeriod THEN
5765: -- Percentage taken into account in py_za_tx_utl_01032004.TaxLiability
5766: END IF;
5767:
5768: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',39);
5769: IF py_za_tx_utl_01032004.LatePayPeriod THEN
5770: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',40);
5771: LteCalc;
5772: -- Is this a SITE Period?
5773: ELSIF py_za_tx_utl_01032004.EmpTermPrePeriod THEN
5769: IF py_za_tx_utl_01032004.LatePayPeriod THEN
5770: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',40);
5771: LteCalc;
5772: -- Is this a SITE Period?
5773: ELSIF py_za_tx_utl_01032004.EmpTermPrePeriod THEN
5774: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',41);
5775: SitCalc;
5776: ELSIF py_za_tx_utl_01032004.LstPeriod OR py_za_tx_utl_01032004.EmpTermInPeriod THEN
5777: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',42);
5772: -- Is this a SITE Period?
5773: ELSIF py_za_tx_utl_01032004.EmpTermPrePeriod THEN
5774: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',41);
5775: SitCalc;
5776: ELSIF py_za_tx_utl_01032004.LstPeriod OR py_za_tx_utl_01032004.EmpTermInPeriod THEN
5777: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',42);
5778: IF py_za_tx_utl_01032004.PreErnPeriod THEN
5779: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',43);
5780: YtdCalc;
5774: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',41);
5775: SitCalc;
5776: ELSIF py_za_tx_utl_01032004.LstPeriod OR py_za_tx_utl_01032004.EmpTermInPeriod THEN
5777: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',42);
5778: IF py_za_tx_utl_01032004.PreErnPeriod THEN
5779: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',43);
5780: YtdCalc;
5781: ELSE
5782: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',44);
5784: END IF;
5785: ElSE
5786: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',45);
5787: -- The employee has NOT been terminated!
5788: IF py_za_tx_utl_01032004.PreErnPeriod THEN
5789: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',46);
5790: YtdCalc;
5791: ELSIF dbi_ZA_ASG_TX_RTR_PRD = 'Y' THEN
5792: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',47);
5790: YtdCalc;
5791: ELSIF dbi_ZA_ASG_TX_RTR_PRD = 'Y' THEN
5792: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',47);
5793: SitCalc;
5794: ELSIF py_za_tx_utl_01032004.NegPtd THEN
5795: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',48);
5796: SitCalc;
5797: ELSE
5798: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',49);
5830: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',54);
5831:
5832: -- Post Calculation Steps
5833: --
5834: py_za_tx_utl_01032004.SitPaySplit;
5835:
5836: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',55);
5837:
5838: -- Execute the Arrear Processing
5836: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',55);
5837:
5838: -- Execute the Arrear Processing
5839: --
5840: IF py_za_tx_utl_01032004.SitePeriod THEN
5841: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',56);
5842: py_za_tx_utl_01032004.ArrearExcess;
5843: END IF;
5844:
5838: -- Execute the Arrear Processing
5839: --
5840: IF py_za_tx_utl_01032004.SitePeriod THEN
5841: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',56);
5842: py_za_tx_utl_01032004.ArrearExcess;
5843: END IF;
5844:
5845: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',57);
5846:
5899: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',61);
5900:
5901: -- Execute The Tax Trace
5902: --
5903: py_za_tx_utl_01032004.Trace;
5904:
5905: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',62);
5906:
5907: -- Clear Globals
5905: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',62);
5906:
5907: -- Clear Globals
5908: --
5909: py_za_tx_utl_01032004.ClearGlobals;
5910:
5911: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',63);
5912:
5913: -- End off Trace File
5916: WrtHrTrc('------------------------------------------------------------');
5917: WrtHrTrc(' -- ');
5918:
5919: -- Call hr_utility stop procedure
5920: py_za_tx_utl_01032004.StopHrTrace;
5921:
5922: --dbms_debug.debug_off;
5923:
5924: RETURN l_Dum;
5926: EXCEPTION
5927: WHEN xpt_FxdPrc THEN
5928: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',66);
5929: WrtHrTrc('Sql error msg: Fixed Percentage was not entered for Fixed Percentage of Total Package Pension Basis');
5930: py_za_tx_utl_01032004.StopHrTrace;
5931: hr_utility.set_message(801, 'Fixed Percentage not entered');
5932: py_za_tx_utl_01032004.ClearGlobals;
5933: hr_utility.raise_error;
5934: WHEN xpt_E THEN
5928: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',66);
5929: WrtHrTrc('Sql error msg: Fixed Percentage was not entered for Fixed Percentage of Total Package Pension Basis');
5930: py_za_tx_utl_01032004.StopHrTrace;
5931: hr_utility.set_message(801, 'Fixed Percentage not entered');
5932: py_za_tx_utl_01032004.ClearGlobals;
5933: hr_utility.raise_error;
5934: WHEN xpt_E THEN
5935: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',64);
5936: WrtHrTrc('xpt_Msg: '||xpt_Msg);
5933: hr_utility.raise_error;
5934: WHEN xpt_E THEN
5935: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',64);
5936: WrtHrTrc('xpt_Msg: '||xpt_Msg);
5937: py_za_tx_utl_01032004.StopHrTrace;
5938: hr_utility.set_message(801, xpt_Msg);
5939: py_za_tx_utl_01032004.ClearGlobals;
5940: hr_utility.raise_error;
5941: WHEN OTHERS THEN
5935: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',64);
5936: WrtHrTrc('xpt_Msg: '||xpt_Msg);
5937: py_za_tx_utl_01032004.StopHrTrace;
5938: hr_utility.set_message(801, xpt_Msg);
5939: py_za_tx_utl_01032004.ClearGlobals;
5940: hr_utility.raise_error;
5941: WHEN OTHERS THEN
5942: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',65);
5943: WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
5941: WHEN OTHERS THEN
5942: hr_utility.set_location('py_za_tx_01032004.ZaTx_01032004',65);
5943: WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
5944: WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
5945: py_za_tx_utl_01032004.StopHrTrace;
5946: hr_utility.set_message(801, 'ZaTx_01032004: '||TO_CHAR(SQLCODE));
5947: py_za_tx_utl_01032004.ClearGlobals;
5948: hr_utility.raise_error;
5949: END ZaTx_01032004;
5943: WrtHrTrc('Sql error code: '||TO_CHAR(SQLCODE));
5944: WrtHrTrc('Sql error msg: '||SUBSTR(SQLERRM(SQLCODE), 1, 100));
5945: py_za_tx_utl_01032004.StopHrTrace;
5946: hr_utility.set_message(801, 'ZaTx_01032004: '||TO_CHAR(SQLCODE));
5947: py_za_tx_utl_01032004.ClearGlobals;
5948: hr_utility.raise_error;
5949: END ZaTx_01032004;
5950:
5951: END py_za_tx_01032004;