OCX CalculateTangibleAssets
OCX CalculateTangibleAssets
1
VAR setFundingImpact = 0;
VAR fundingStaggeredValue;
VAR cashStaggeredValue;
VAR fundingAllocPct = 1;
VAR fundingPercent;
VAR quit = 0;
VAR maintenancepercentforcalc;
VAR insurancepercentforcalc;
VAR repairpercentforcalc;
VAR maintenancepercent;
VAR insurancepercent;
VAR repairpercent;
VAR Lastmonth;
VAR FirstYear;
var calendartype;
FIX ("OEP_No Scenario", "OEP_Working")
FIX (@relative("OCX_no Asset", 0), @relative("OEP_No Entity", 0), "No Currency")
FIX (@RELATIVE("OCX_Total New", 0), "No Year", "BegBalance")
"OCX_Basic Cost" (
IF ("OCX_In Service Date" <> #MISSING or "OCX_Purchase Date" <> #MISSING)
IF ("OCX_In Service Date" < "OCX_Purchase Date")
"OCX_In Service Date" = "OCX_Purchase Date";
ENDIF
IF ("OCX_Purchase Date" != #Missing and "OCX_Purchase Date" >= "First Date" and (("Tp-Date"
+ 100) == "First Date" or "Tp-Date" == #Missing))
IF (@MEMBER(@CONCATENATE("FY", @SUBSTRING(@HspDateToString("OCX_Purchase
Date"), 8)))->"OCX_Taxes %" != #MISSING)
taxrate = @MEMBER(@CONCATENATE("FY",
@SUBSTRING(@HspDateToString("OCX_Purchase Date"), 8)))->"OCX_Taxes %";
ELSEIF (@MEMBER(@CONCATENATE("FY", @SUBSTRING(@HspDateToString("OCX_Purchase
Date"), 8)))->"OCX_Global"->"OCX_Taxes %" != #MISSING)
taxRate = @MEMBER(@CONCATENATE("FY",
@SUBSTRING(@HspDateToString("OCX_Purchase Date"), 8)))->"OCX_Global"->"OCX_Taxes %";
ELSE
taxRate = @MEMBER(@CONCATENATE("FY",
@SUBSTRING(@HspDateToString("OCX_Purchase Date"), 8)))->"OEP_No Entity"->"OCX_Global"-
>"OCX_Taxes %";
ENDIF
@MEMBER(@CONCATENATE("FY", @SUBSTRING(@HspDateToString("OCX_Purchase Date"),
8)))->"OCX_Taxes %" = taxRate;
ENDIF
"No currency"->"OCX_Tax Amount" = "OCX_Asset Units" * "No currency"->"OCX_Asset Rate" *
taxRate;
"No currency"->"OCX_Basic Cost" = ("OCX_Asset Units" * "No currency"->"OCX_Asset Rate") +
("OCX_Asset Units" * "No currency"->"OCX_Asset Rate" * taxRate) + "No currency"->"OCX_Freight" +
"No currency"->"OCX_Acquisition Costs" + "No currency"->"OCX_Additional Charges" + "No
currency"->"OCX_Retirement Obligation" + "No currency"->"OCX_Installation";
IF ("OCX_Useful Life (in Years)" == #MISSING)
"OCX_Useful Life (in Years)" = "OCX_Global"->"OCX_Useful Life (in Years)";
ENDIF
IF ("OCX_Useful Life (in Years)" == #MISSING)
"OCX_Useful Life (in Years)" = "OEP_No Entity"->"OCX_Global"->"OCX_Useful Life (in Years)";
ENDIF
ENDIF
"OCX_Depreciation Method" = #Missing;
)
2
ENDFIX
FIX (@RELATIVE("OCX_Total New", 0), "No Year", "BegBalance")
"OCX_Asset Rate" = @CREATEBLOCK(@LEVMBRS("Years", 0));
ENDFIX
;
FIX (@RELATIVE("OCX_Total New", 0), "FY20" : "No Year", "No Year")
FIX (@RELATIVE("YearTotal", 0), "BegBalance")
"OCX_Depreciation" (
IF ("No Year"->"BegBalance"->"OCX_In Service Date" <> #MISSING or "No Year"->"BegBalance"-
>"OCX_Purchase Date" <> #MISSING)
IF ((("Cal TP-Index" <> "Fiscal TP-Index") OR (("TP-Date") - @INT("TP-Date" / 100) * 100) > 0)
AND ("Fiscal TP-Index" == 1) AND (firstyear == "YR-Index"))
IF ("No Year"->"BegBalance"->"OCX_In Service Date" < ("Tp-Date"))
inServiceDate = @INT("No Year"->"OCX_In Service Date"->BegBalance / 100) * 100;
yearVal = (@INT(("Tp-Date") / 10000) * 10000 - @INT(inServiceDate / 10000) * 10000) /
10000;
monthVal = (("Tp-Date") - @INT(("Tp-Date") / 10000) * 10000) - (inServiceDate -
@INT(inServiceDate / 10000) * 10000);
IF (monthVal < 0)
IF (yearVal > 0)
yearVal = yearVal - 1;
ENDIF
monthVal = 1200 + monthVal;
ENDIF
preExistingPers = yearVal * "NumPeriods" + @ROUND((monthVal / 100) * ("NumPeriods" /
12), 0);
setStartDepr = 1;
deprMethod = "No Year"->"BegBalance"->"OCX_Depreciation Method";
IF (deprMethod == #MISSING)
deprMethod = "No Year"->"OCX_Global"->"BegBalance"->"OCX_Depreciation Method";
ENDIF
IF (deprMethod == #MISSING)
deprMethod = "OEP_No Entity"->"No Year"->"OCX_Global"->"BegBalance"-
>"OCX_Depreciation Method";
ENDIF
IF ("No Year"->"BegBalance"->"OCX_Depreciation Method" == #Missing)
"No Year"->"BegBalance"->"OCX_Depreciation Method" = deprMethod;
ENDIF
IF (deprMethod == 0)
deprRate = 0;
ENDIF
IF (deprMethod > 0)
priorAccumDepr = 0;
"No currency"->"OCX_periodicPriorAccumDepr" = 0;
deprAmt = 0;
IF (deprMethod == 2 OR deprMethod == 3)
isAnnual = 1;
life = "No Year"->"BegBalance"->"OCX_Useful Life (in Years)";
persInSection = "NumPeriods";
ELSE
isAnnual = 0;
life = "No Year"->"BegBalance"->"OCX_Useful Life (in Years)" * "NumPeriods";
persInSection = 1;
ENDIF
yearVal = @INT(inServiceDate / 10000) * 10000;
IF (deprMethod == 3 OR deprMethod == 4)
3
deprRate = 1 - @POWER(salvageVal / basicCost, 1 / life);
ENDIF
IF (preExistingPers > 0)
deprMethod = 1;
deprConvention = 1;
ENDIF
ENDIF
ELSE
preExistingPers = 0;
setStartDepr = 0;
ENDIF
ENDIF
IF (("Fiscal TP-Index" == 1) AND ("Cal TP-Index" <> "Fiscal TP-Index") AND NOT @ISMBR("No
Year") AND ("YR-Index" < @COUNT(SKIPNONE, @RANGE("YR-Index", @CHILDREN("All Years"))) - 1))
IF ("No Year"->"BegBalance"->"OCX_Purchase Date" != #Missing AND "No Year"-
>"BegBalance"->"OCX_Purchase Date" >= "Tp-Date" and "No Year"->"BegBalance"->"OCX_Purchase
Date" < (@MEMBER(@NEXTSIBLING(@CURRMBR("Years")))->"Tp-Date"))
IF ("BegBalance"->"OCX_Taxes %" != #MISSING)
taxrate = "BegBalance"->"OCX_Taxes %";
ELSEIF (@CURRMBR("Years")->"BegBalance"->"OCX_Global"->"OCX_Taxes %" != #MISSING)
taxRate = "BegBalance"->"OCX_Global"->"OCX_Taxes %";
"BegBalance"->"OCX_Taxes %" = taxrate;
ELSE
taxRate = "BegBalance"->"OEP_No Entity"->"OCX_Global"->"OCX_Taxes %";
"BegBalance"->"OCX_Taxes %" = taxrate;
ENDIF
"No currency"->"OCX_Tax Amount"->"No Year"->"BegBalance" = "OCX_Asset Units"->"No
Year"->"BegBalance" * "No currency"->"OCX_Asset Rate"->"No Year"->"BegBalance" * taxRate;
"No currency"->"OCX_Basic Cost"->"No Year"->"BegBalance" = ("OCX_Asset Units"->"No
Year"->"BegBalance" * "No currency"->"OCX_Asset Rate"->"No Year"->"BegBalance") + ("OCX_Asset
Units"->"No Year"->"BegBalance" * "No currency"->"OCX_Asset Rate"->"No Year"->"BegBalance" *
taxRate) + "No currency"->"OCX_Freight"->"No Year"->"BegBalance" + "No currency"-
>"OCX_Acquisition Costs"->"No Year"->"BegBalance" + "No currency"->"OCX_Additional Charges"-
>"No Year"->"BegBalance" + "No currency"->"OCX_Retirement Obligation"->"No Year"->"BegBalance"
+ "No currency"->"OCX_Installation"->"No Year"->"BegBalance";
basicCost = "No currency"->"No Year"->"OCX_Basic Cost"->"BegBalance";
basicCostLessTax = basicCost - ("No currency"->"No Year"->"BegBalance"->"OCX_Asset Rate"
* "No Year"->"BegBalance"->"OCX_Asset Units" * taxRate);
ENDIF
ENDIF
4
IF (purchaseDate == #Missing)
insuranceIncidenceMnth = @INT(@MOD(inServiceDate, 10000) / 100);
ELSEIf (delayedStartDate == 0)
insuranceIncidenceMnth = @INT(@MOD(purchaseDate, 10000) / 100);
ELSE
insuranceIncidenceMnth = @INT(@MOD(delayedStartDate, 10000) / 100);
ENDIF
basicCost = "No currency"->"No Year"->"OCX_Basic Cost";
basicCostLessTax = basicCost - ("No currency"->"No Year"->"BegBalance"->"OCX_Asset Rate"
* "No Year"->"BegBalance"->"OCX_Asset Units" * taxRate);
salvageVal = "No currency"->"No Year"->"OCX_Salvage";
saleValue = "No currency"->"No Year"->"OCX_Sale Value";
retirementCosts = "No currency"->"No Year"->"OCX_Retirement Costs";
retirementObs = "No currency"->"No Year"->"OCX_Retirement Obligation";
deprMethod = "No Year"->"OCX_Depreciation Method";
IF (deprMethod == #MISSING)
deprMethod = "No Year"->"OCX_Global"->"OCX_Depreciation Method";
ENDIF
IF (deprMethod == #MISSING)
deprMethod = "OEP_No Entity"->"No Year"->"OCX_Global"->"OCX_Depreciation Method";
ENDIF
IF ("No Year"->"OCX_Depreciation Method" == #Missing)
"No Year"->"OCX_Depreciation Method" = deprMethod;
ENDIF
deprConvention = "No Year"->"OCX_Depreciation Convention";
IF (deprConvention == #MISSING)
deprConvention = "No Year"->"OCX_Global"->"OCX_Depreciation Convention";
ENDIF
IF (deprConvention == #MISSING)
deprConvention = "OEP_No Entity"->"No Year"->"OCX_Global"->"OCX_Depreciation
Convention";
ENDIF
IF ("No Year"->"OCX_Depreciation Convention" == #Missing)
"No Year"->"OCX_Depreciation Convention" = deprConvention;
ENDIF
;
5
firstyear = "YR-Index";
ENDIF
numDeprPeriods = 0;
"OCX_periodOffset" = 0;
tempperiodOffset = 0;
quit = 0;
IF (deprMethod == 0)
deprAmt = 0;
ENDIF
IF (deprMethod > 0)
priorAccumDepr = 0;
"No currency"->"OCX_periodicPriorAccumDepr" = 0;
deprAmt = 0;
IF (deprMethod == 2 OR deprMethod == 3)
isAnnual = 1;
life = "No Year"->"OCX_Useful Life (in Years)";
persInSection = "NumPeriods";
ELSE
isAnnual = 0;
life = "No Year"->"OCX_Useful Life (in Years)" * "NumPeriods";
persInSection = 1;
ENDIF
yearVal = @INT(inServiceDate / 10000) * 10000;
IF (deprMethod == 3 OR deprMethod == 4)
deprRate = 1 - @POWER(salvageVal / basicCost, 1 / life);
ENDIF
IF (preExistingPers > 0)
deprMethod = 1;
deprConvention = 1;
ENDIF
ENDIF
ENDIF
IF (@ISMBR("No Year"))
paramsSet = 0;
paramsSet2 = 0;
paramsSetFund = 0;
maintenancepercentforcalc = #Missing;
insurancepercentforcalc = #Missing;
repairpercentforcalc = #Missing;
ENDIF
6
"OCX_periodOffset" = #MISSING;
IF (@ISCHILD("OCX_Total New"))
IF (((purchaseDate != #Missing AND ("TP-Date" <= purchaseDate) AND ("TP-EndDate" >=
purchaseDate)) OR (purchaseDate == #Missing AND ("TP-Date" <= inServiceDate) AND ("TP-EndDate"
>= inServiceDate))) AND (delayedStartDate == #MISSING OR (delayedStartDate > #MISSING AND "TP-
Date" > delayedStartDate)))
"No currency"->"OCX_Capital Expenditure" = basicCost - retirementObs;
ENDIF
ENDIF
IF ((numDeprPeriods == 0) AND ((("TP-Date" <= inServiceDate) AND ("TP-EndDate" >=
inServiceDate)) OR (setStartDepr == 1) AND "TP-Date" > yearVal))
setStartDepr = 0;
"OCX_periodOffset" = 0;
persIn1stYear = "NumPeriods";
numDeprPeriods = "NumPeriods" * "No Year"->"BegBalance"->"OCX_Useful Life (in Years)";
totDeprPeriods = numDeprPeriods;
dayVal = "No Year"->"BegBalance"->"OCX_In Service Date" - @INT(inServiceDate / 100) *
100;
TpDayVal = ("TP-Date") - @INT("TP-Date" / 100) * 100;
monthVal = (inServiceDate - @INT(inServiceDate / 10000) * 10000);
IF (TpDayVal > 0)
IF ((@INT("TP-Date" / 100) * 100 == @INT(inServiceDate / 100) * 100))
dayVal = inServiceDate - "TP-Date" + 1;
ELSEIF ((@INT("TP-EndDate" / 100) * 100 == @INT(inServiceDate / 100) * 100))
dayVal = "Tp-Days" - ("TP-EndDate" - inServiceDate) + 1;
ENDIF
ENDIF
delayStart = 0;
IF (deprConvention == 2)
IF (dayVal == 1)
split1stAmt = 0;
ELSE
numDeprPeriods = numDeprPeriods + 1;
split1stAmt = 1;
ENDIF
ELSEIF (deprConvention == 3)
numDeprPeriods = numDeprPeriods + 1;
split1stAmt = 1;
ELSE
split1stAmt = 0;
ENDIF
IF (deprMethod == 3 OR deprMethod == 4)
deprRate = 1 - @POWER(salvageVal / basicCost, 1 / life);
ENDIF
IF (preExistingPers > 0 AND deprMethod > 0)
numDeprPeriods = numDeprPeriods - preExistingPers;
IF (numDeprPeriods > 0)
deprAmt = (basicCost - salvageVal) / totDeprPeriods;
"No currency"->"OCX_periodicPriorAccumDepr" = deprAmt * preExistingPers;
ENDIF
ENDIF
ENDIF
IF (tempperiodOffset < numDeprPeriods - 1)
IF ("Fiscal TP-Index" == 1 AND "YR-Index" != 0 AND "YR-Index" > firstyear)
tempperiodOffset = @MEMBER(@PREVSIBLING(@CURRMBR("Years")))->"YearTotal"-
>"OCX_periodOffset";
7
ELSE
tempperiodOffset = @PRIOR("OCX_periodOffset");
ENDIF
ENDIF
IF (deprMethod >= 0 AND tempperiodOffset < numDeprPeriods AND delayStart < 1 AND quit
== 0)
lifeIndex = @INT(tempperiodOffset / persInSection);
IF (deprMethod == 1)
deprAmt = (basicCost - salvageVal) / totDeprPeriods;
ELSEIF (deprMethod == 3 or deprMethod == 4)
IF (lifeIndex == 0)
deprAmt = basicCost * deprRate * persIn1stYear / "NumPeriods" / persInSection;
ELSE
deprAmt = (basicCost - priorAccumDepr) * deprRate / persInSection;
ENDIF
ELSEIF (deprMethod == 2)
deprRate = (life - lifeIndex) * 2 / (life * (life + 1));
deprAmt = (basicCost - salvageVal) * deprRate / persInSection;
ELSEIF (deprMethod == 0)
deprAmt = 0;
ENDIF
IF (split1stAmt == 1)
IF (deprConvention == 2)
deprAmt = deprAmt * @MAX("Tp-Days" - (dayVal - 1), 1) / "Tp-Days";
ELSE
deprAmt = deprAmt - deprAmt / 2;
ENDIF
split1stAmt = 0;
ENDIF
IF (tempperiodOffset + 1 == numDeprPeriods)
IF ("Fiscal TP-Index" == 1 AND "YR-Index" != 0 AND "YR-Index" > firstyear AND deprMethod
> 0)
deprAmt = (basicCost - salvageVal) - @MEMBER(@PREVSIBLING(@CURRMBR("Years")))-
>"YearTotal"->"No currency"->"OCX_periodicPriorAccumDepr";
ELSEIF ("Fiscal TP-Index" != 1 AND deprMethod > 0)
deprAmt = (basicCost - salvageVal) - @PRIOR("No currency"-
>"OCX_periodicPriorAccumDepr");
ENDIF
ENDIF
"No currency"->"OCX_periodicPriorAccumDepr" = "No currency"-
>"OCX_periodicPriorAccumDepr" + deprAmt;
IF ("Fiscal TP-Index" == 1 AND "YR-Index" != 0 AND "YR-Index" > firstyear)
"No currency"->"OCX_periodicPriorAccumDepr" =
@MEMBER(@PREVSIBLING(@CURRMBR("Years")))->"YearTotal"->"No currency"-
>"OCX_periodicPriorAccumDepr" + deprAmt;
ELSEIF ("Fiscal TP-Index" != 1)
"No currency"->"OCX_periodicPriorAccumDepr" = @PRIOR("No currency"-
>"OCX_periodicPriorAccumDepr") + deprAmt;
ENDIF
IF (isAnnual == 1)
IF (@INT((tempperiodOffset + 1) / persInSection) == (lifeIndex + 1))
priorAccumDepr = "No currency"->"OCX_periodicPriorAccumDepr";
ENDIF
ELSE
priorAccumDepr = "No currency"->"OCX_periodicPriorAccumDepr";
ENDIF
8
IF (("TP-Date" >= delayedStartDate OR (("TP-Date" <= delayedStartDate) AND ("TP-EndDate"
>= delayedStartDate))) AND ((("TP-Date" >= purchaseDate AND purchaseDate != #missing) OR "TP-
Date" >= inServiceDate) OR preExistingPers > 0) AND (prematureEndDate == #MISSING OR (("TP-Date"
< prematureEndDate) AND (prematureEndDate - "TP-Date" > "TP-Days"))))
IF (@ISDESC("OCX_Total Existing"))
"OCX_Asset Status" = 1;
ELSE
"OCX_Asset Status" = 0;
ENDIF
ENDIF
IF (("TP-Date" >= delayedStartDate OR (("TP-Date" <= delayedStartDate) AND ("TP-EndDate"
>= delayedStartDate))) AND ("TP-Date" >= inServiceDate OR preExistingPers > 0 OR (("TP-Date" <=
inServiceDate) AND ("TP-EndDate" >= inServiceDate))) AND (prematureEndDate == #MISSING OR
(("TP-Date" < prematureEndDate) AND (prematureEndDate - "TP-Date" > "TP-Days"))))
"No currency"->"OCX_Property, Plant, and Equipment Gross" = basicCost;
"No currency"->"OCX_Depreciation" = deprAmt;
"No currency"->"OCX_Accumulated Depreciation" = "No currency"-
>"OCX_periodicPriorAccumDepr";
insurancepercent = "BegBalance"->"OCX_Insurance %";
IF (insurancepercent == #Missing)
insurancepercent = "OCX_Global"->"BegBalance"->"OCX_Insurance %";
IF (insurancepercent == #Missing)
insurancepercent = "OEP_No Entity"->"OCX_Global"->"BegBalance"->"OCX_Insurance %";
ENDIF
ENDIF
"BegBalance"->"OCX_Insurance %" = insurancepercent;
IF (insurancepercent != #Missing)
insurancepercentforcalc = insurancepercent;
ENDIF
insuranceCost = (basicCostLessTax - "No currency"->"OCX_Accumulated Depreciation") *
insurancepercentforcalc;
maintenancepercent = "BegBalance"->"OCX_Maintenance %";
IF (maintenancepercent == #Missing)
maintenancepercent = "OCX_Global"->"BegBalance"->"OCX_Maintenance %";
IF (maintenancepercent == #Missing)
maintenancepercent = "OEP_No Entity"->"OCX_Global"->"BegBalance"-
>"OCX_Maintenance %";
ENDIF
ENDIF
"BegBalance"->"OCX_Maintenance %" = maintenancepercent;
IF (maintenancepercent != #Missing)
maintenancepercentforcalc = maintenancepercent;
ENDIF
;
maintenanceCost = basicCost * maintenancepercentforcalc;
repairpercent = "BegBalance"->"OCX_Repairs %";
IF (repairpercent == #Missing)
repairpercent = "OCX_Global"->"BegBalance"->"OCX_Repairs %";
;
IF (repairpercent == #Missing)
repairpercent = "OEP_No Entity"->"OCX_Global"->"BegBalance"->"OCX_Repairs %";
ENDIF
ENDIF
"BegBalance"->"OCX_Repairs %" = repairpercent;
IF (repairpercent != #missing)
repairpercentforcalc = repairpercent;
ENDIF
9
;
repairsCost = basicCost * repairpercentforcalc;
fogCost = "No Year"->"BegBalance"->"No currency"->"OCX_FOG Cost per Year";
"No currency"->"OCX_Maintenance" = maintenanceCost / "NumPeriods";
"No currency"->"OCX_Repairs" = repairsCost / "NumPeriods";
"No currency"->"OCX_FOG Expense" = fogCost / "NumPeriods";
"No currency"->"OCX_Insurance" = insuranceCost / "NumPeriods";
"OCX_Asset Capacity" = "No Year"->"BegBalance"->"OCX_Asset Capacity";
"OCX_Capacity UOM" = "No Year"->"BegBalance"->"OCX_Capacity UOM";
"OCX_Asset Units" = "No Year"->"BegBalance"->"OCX_Asset Units";
IF ("OCX_Capacity UOM" == 2)
AssetUOM = ("No currency"->"OCX_Depreciation" + "No currency"->"OCX_Repairs" + "No
currency"->"OCX_Insurance" + "No currency"->"OCX_Maintenance" + "No currency"->"OCX_Interest"
+ "No currency"->"OCX_FOG Expense" + "No currency"->"OCX_Other Operational Costs") /
"OCX_Asset Capacity";
AssetUOM = AssetUOM / "No Year"->"BegBalance"->"OCX_Asset Units";
"No currency"->"OCX_Asset Operating Cost per UOM" = (("No currency"->"OCX_Repairs" +
"No currency"->"OCX_Insurance" + "No currency"->"OCX_Maintenance" + "No currency"->"OCX_FOG
Expense" + "No currency"->"OCX_Other Operational Costs") / "OCX_Asset Capacity") / "No Year"-
>"BegBalance"->"OCX_Asset Units";
ELSEIF ("OCX_Capacity UOM" == 1)
AssetUOM = ("No currency"->"OCX_Depreciation" + "No currency"->"OCX_Repairs" + "No
currency"->"OCX_Insurance" + "No currency"->"OCX_Maintenance" + "No currency"->"OCX_Interest"
+ "No currency"->"OCX_FOG Expense" + "No currency"->"OCX_Other Operational Costs") /
("OCX_Asset Capacity" / 12);
AssetUOM = AssetUOM / "No Year"->"BegBalance"->"OCX_Asset Units";
"No currency"->"OCX_Asset Operating Cost per UOM" = (("No currency"->"OCX_Repairs" +
"No currency"->"OCX_Insurance" + "No currency"->"OCX_Maintenance" + "No currency"->"OCX_FOG
Expense" + "No currency"->"OCX_Other Operational Costs") / ("OCX_Asset Capacity" / 12)) / "No
Year"->"BegBalance"->"OCX_Asset Units";
ELSEIF ("OCX_Capacity UOM" == 4)
AssetUOM = ("No currency"->"OCX_Depreciation" + "No currency"->"OCX_Repairs" + "No
currency"->"OCX_Insurance" + "No currency"->"OCX_Maintenance" + "No currency"->"OCX_Interest"
+ "No currency"->"OCX_FOG Expense" + "No currency"->"OCX_Other Operational Costs");
AssetUOM = AssetUOM / "No Year"->"BegBalance"->"OCX_Asset Units";
"No currency"->"OCX_Asset Operating Cost per UOM" = (("No currency"->"OCX_Repairs" +
"No currency"->"OCX_Insurance" + "No currency"->"OCX_Maintenance" + "No currency"->"OCX_FOG
Expense" + "No currency"->"OCX_Other Operational Costs")) / "No Year"->"BegBalance"->"OCX_Asset
Units";
ELSEIF ("OCX_Capacity UOM" == #MISSING OR "OCX_Asset Capacity" == #MISSING)
AssetUOM = ("No currency"->"OCX_Depreciation" + "No currency"->"OCX_Repairs" + "No
currency"->"OCX_Insurance" + "No currency"->"OCX_Maintenance" + "No currency"->"OCX_Interest"
+ "No currency"->"OCX_FOG Expense" + "No currency"->"OCX_Other Operational Costs");
AssetUOM = AssetUOM / "No Year"->"BegBalance"->"OCX_Asset Units";
"No currency"->"OCX_Asset Operating Cost per UOM" = (("No currency"->"OCX_Repairs" +
"No currency"->"OCX_Insurance" + "No currency"->"OCX_Maintenance" + "No currency"->"OCX_FOG
Expense" + "No currency"->"OCX_Other Operational Costs")) / "No Year"->"BegBalance"->"OCX_Asset
Units";
ENDIF
"No currency"->"OCX_Calc Asset Cost per UOM" = AssetUOM;
ENDIF
IF (prematureEndDate != #MISSING AND ("TP-Date" >= prematureEndDate OR (("TP-Date" <=
prematureEndDate) AND ("TP-EndDate" >= prematureEndDate))))
IF (("Cal TP-Index" <> "Fiscal TP-Index") AND (@INT("TP-Date" / 10000) -
@INT(prematureEndDate / 10000) <= 1))
"No currency"->"OCX_Property, Plant, and Equipment Gross" = #MISSING;
"No currency"->"OCX_Accumulated Depreciation" = #MISSING;
10
ELSEIF (@INT("TP-Date" / 10000) == @INT(prematureEndDate / 10000))
"No currency"->"OCX_Property, Plant, and Equipment Gross" = #MISSING;
"No currency"->"OCX_Accumulated Depreciation" = #MISSING;
ENDIF
ENDIF
"OCX_periodOffset" = tempperiodOffset + 1;
IF ("OCX_periodOffset" > numDeprPeriods - 1)
quit = 1;
Lastmonth = "Fiscal TP-Index" + 1;
ELSE
Lastmonth = #Missing;
ENDIF
ENDIF
IF ((prematureEndDate != #MISSING AND (("TP-Date" <= prematureEndDate) AND ("TP-
EndDate" >= prematureEndDate))))
Lastmonth = "Fiscal TP-Index" + 1;
ENDIF
IF (Lastmonth > 0 AND Lastmonth <= "NumPeriods" AND "Fiscal TP-Index" == Lastmonth)
"No currency"->"OCX_Property, Plant, and Equipment Gross" = @prior("No currency"-
>"OCX_Property, Plant, and Equipment Gross");
"No currency"->"OCX_Accumulated Depreciation" = @prior("No currency"-
>"OCX_Accumulated Depreciation");
Lastmonth = Lastmonth + 1;
ENDIF
delayStart = delayStart - 1;
ENDIF
IF (Purchasedate != #Missing)
11
monthVal = monthVal + cashFlowIncidence;
IF (monthVal <= 0)
yearVal = yearVal - 10000;
monthVal = 1200 + monthVal;
ELSEIF (monthVal > 1231)
yearVal = yearVal + 10000;
monthVal = monthVal - 1200;
ENDIF
cashOutflowDate = yearVal + monthVal;
cashStaggeredPers = 1;
ENDIF
ENDIF
IF (NOT @ISMBR("BegBalance") and paramsSet2 == 1)
date = "TP-Date";
"OCX_Cash Flow Allocator" = #MISSING;
"No currency"->"OCX_Cash Outflow from Capital Additions" = #MISSING;
IF ((date <= cashOutflowDate) AND ("TP-EndDate" >= cashOutflowDate))
setCashImpact = cashStaggeredPers;
cashAllocPct = 1 / cashStaggeredPers;
ENDIF
IF (setCashImpact > 0)
"OCX_Cash Flow Allocator" = cashAllocPct;
setCashImpact = setCashImpact - 1;
ENDIF
"No currency"->"OCX_Cash Outflow from Capital Additions" = "No currency"->"No Year"-
>"BegBalance"->"OCX_Basic Cost" * "OCX_Cash Flow Allocator";
ENDIF
12
paramsSetFund = 1;
date = "TP-Date";
fundingDate = "No Year"->"BegBalance"->"OCX_Purchase Date";
IF (fundingIncidence == 500)
fundingStaggeredPers = fundingStaggeredValue;
ELSE
yearVal = @INT(fundingDate / 10000) * 10000;
monthVal = fundingDate - yearVal;
monthVal = monthVal + fundingIncidence;
IF (monthVal <= 0)
yearVal = yearVal - 10000;
monthVal = 1200 + monthVal;
ELSEIF (monthVal > 1231)
yearVal = yearVal + 10000;
monthVal = monthVal - 1200;
ENDIF
fundingDate = yearVal + monthVal;
fundingStaggeredPers = 1;
ENDIF
ENDIF
IF (NOT @ISMBR("BegBalance") and paramsSetFund == 1)
date = "TP-Date";
"OCX_Funding Allocator" = #MISSING;
"No currency"->"OCX_Cash Inflow from Funding" = #MISSING;
IF ((date <= fundingDate) AND ("TP-EndDate" >= fundingDate))
setFundingImpact = fundingStaggeredPers;
fundingAllocPct = 1 / fundingStaggeredPers;
ENDIF
IF (setFundingImpact > 0)
"OCX_Funding Allocator" = fundingAllocPct;
setFundingImpact = setFundingImpact - 1;
ENDIF
"No currency"->"OCX_Cash Inflow from Funding" = "No currency"->"No Year"-
>"BegBalance"->"OCX_Basic Cost" * fundingPercent * "OCX_Funding Allocator";
ENDIF
ENDIF
ENDIF
)
ENDFIX
FIX (@relative("OCX_Financial Statement Impact", 0))
"Qtrly 1" (
if (@ismbr(&OEP_QrtlyFcstStart:&OEP_QrtlyFcstEnd) or
@ismbr(&OEP_QrtlyPlanStart:&OEP_QrtlyPlanEnd))
if (Not (@ismbr("No Year")))
"No currency"->"Qtrly 1" = "No currency"->Q1;
"No currency"->"Qtrly 2" = "No currency"->Q2;
"No currency"->"Qtrly 3" = "No currency"->Q3;
"No currency"->"Qtrly 4" = "No currency"->Q4;
endif
elseif (@ismbr(&OEP_YrlyFCSTStart:&OEP_YrlyFcstEnd) or
@ismbr(&OEP_YrlyPlanStart:&OEP_YrlyPlanEnd))
if (Not (@ismbr("No Year")))
"No currency"->"OEP_Yearly Plan" = "No currency"->"YearTotal";
endif
endif
)
EndFIX
13
ENDFIX
ENDFIX
FIX ("FY20" : "No Year", "No Year", @LEVMBRS("Period", 0), "No currency")
Fix (@relative("OEP_No Entity", 0))
Endfix
@idescendants("OEP_No Entity");
ENDFIX
ENDFIX
14