0% found this document useful (0 votes)
2 views

OCX CalculateTangibleAssets

Uploaded by

mpsyed
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

OCX CalculateTangibleAssets

Uploaded by

mpsyed
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 14

Calculate Tangible Asset :

SET AGGMISSG ON;


VAR tempperiodOffset = 0;
VAR priorAccumDepr = 0;
VAR deprMethod = 0;
VAR deprRate = 0;
VAR deprConvention = 0;
VAR numDeprPeriods = 0;
VAR totDeprPeriods = 0;
VAR persIn1stYear = 12;
VAR TpDayVal = 0;
VAR basicCost = 0;
VAR salvageVal = 0;
VAR deprAmt = 0;
VAR persInSection = 0;
VAR life = 0;
VAR lifeIndex = 0;
VAR isAnnual = 0;
VAR inServiceDate = 0;
VAR delayedStartDate = 0;
VAR prematureEndDate = 0;
VAR maintenanceCost = 0;
VAR insuranceCost = 0;
VAR repairsCost = 0;
VAR retirementObs = 0;
VAR retirementCosts = 0;
VAR purchaseDate = 0;
VAR retireOption = 0;
VAR saleValue = 0;
VAR netValue;
VAR yearVal;
VAR monthVal;
VAR dayVal;
VAR delayStart;
VAR split1stAmt;
VAR paramsSet = 0;
VAR paramsSet2 = 0;
VAR paramsSetFund = 0;
VAR preExistingPers = 0;
VAR setStartDepr = 0;
VAR fogCost = 0;
VAR taxRate = 0;
VAR AssetUOM;
VAR newBlock;
VAR basicCostLessTax = 0;
VAR date;
VAR cashOutflowDate;
VAR fundingDate;
VAR insuranceIncidenceMnth = 0;
VAR cashFlowIncidence;
VAR cashStaggeredPers = 1;
VAR setCashImpact = 0;
VAR cashAllocPct = 1;
VAR fundingIncidence;
VAR fundingStaggeredPers = 1;

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

IF (@ISMBR("BegBalance") AND paramsSet == 0)


paramsSet = 1;
FirstYear = 0;
"Fiscal TP-Index";
"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";
purchaseDate = #Missing;
IF ("No Year"->"OCX_Purchase Date" != #Missing)
purchaseDate = "No Year"->"OCX_Purchase Date";
ENDIF
delayedStartDate = "No Year"->"OCX_Delayed Start Date";
prematureEndDate = "No Year"->"OCX_Premature End Date";
inServiceDate = "No Year"->"OCX_In Service Date";

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
;

IF (inServiceDate < ("Tp-Date" + 100))


yearVal = (@INT(("Tp-Date" + 100) / 10000) * 10000 - @INT(inServiceDate / 10000) *
10000) / 10000;
monthVal = (("Tp-Date" + 100) - @INT(("Tp-Date" + 100) / 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;
firstyear = "YR-Index";
ELSE
preExistingPers = 0;
setStartDepr = 0;
ENDIF
IF (@ISMBR("FY20"))

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

IF (NOT @ISMBR("BegBalance") AND paramsSet == 1)


"OCX_Asset Status" = #MISSING;
"No currency"->"OCX_Depreciation" = #MISSING;
"No currency"->"OCX_Accumulated Depreciation" = #MISSING;
"No currency"->"OCX_Property, Plant, and Equipment Gross" = #MISSING;
"No currency"->"OCX_Insurance" = #MISSING;
"No currency"->"OCX_Maintenance" = #MISSING;
"No currency"->"OCX_Repairs" = #MISSING;
"No currency"->"OCX_FOG Expense" = #MISSING;
"No currency"->"OCX_Retirement Expenses" = #MISSING;
"No currency"->"OCX_Capital Expenditure" = #MISSING;
"OCX_Asset Units" = #MISSING;
"OCX_Asset Capacity" = #MISSING;
"OCX_Capacity UOM" = #MISSING;
"No currency"->"OCX_periodicPriorAccumDepr" = #MISSING;

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)

cashFlowIncidence = "No Year"->"BegBalance"->"OCX_Cash Flow Incidence";


IF (cashFlowIncidence == #MISSING)
cashFlowIncidence = "OCX_Global"->"No Year"->"BegBalance"->"OCX_Cash Flow Incidence";
IF (cashFlowIncidence == #MISSING)
cashFlowIncidence = "OEP_No Entity"->"OCX_Global"->"No Year"->"BegBalance"-
>"OCX_Cash Flow Incidence";
ENDIF
ENDIF
"No Year"->"BegBalance"->"OCX_Cash Flow Incidence" = cashFlowIncidence;
cashStaggeredValue = "No Year"->"BegBalance"->"OCX_Cash Staggered Value";
IF (cashStaggeredValue == #MISSING)
cashStaggeredValue = "OCX_Global"->"No Year"->"BegBalance"->"OCX_Cash Staggered
Value";
IF (cashStaggeredValue == #MISSING)
cashStaggeredValue = "OEP_No Entity"->"OCX_Global"->"No Year"->"BegBalance"-
>"OCX_Cash Staggered Value";
ENDIF
ENDIF
"No Year"->"BegBalance"->"OCX_Cash Staggered Value" = cashStaggeredValue;
IF (@ISMBR("BegBalance") and paramsSet2 == 0)
paramsSet2 = 1;
date = "TP-Date";
cashOutflowDate = "No Year"->"BegBalance"->"OCX_Purchase Date";
IF (cashFlowIncidence == 500)
cashStaggeredPers = cashStaggeredValue;
ELSE
yearVal = @INT(cashOutflowDate / 10000) * 10000;
monthVal = cashOutflowDate - yearVal;

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

fundingIncidence = "No Year"->"BegBalance"->"OCX_Funding Incidence";


IF (fundingIncidence == #MISSING)
fundingIncidence = "OCX_Global"->"No Year"->"BegBalance"->"OCX_Funding Incidence";
IF (fundingIncidence == #MISSING)
fundingIncidence = "OEP_No Entity"->"OCX_Global"->"No Year"->"BegBalance"-
>"OCX_Funding Incidence";
ENDIF
ENDIF
"No Year"->"BegBalance"->"OCX_Funding Incidence" = fundingIncidence;
fundingStaggeredValue = "No Year"->"BegBalance"->"OCX_Funding Staggered Value";
IF (fundingStaggeredValue == #MISSING)
fundingStaggeredValue = "OCX_Global"->"No Year"->"BegBalance"->"OCX_Funding
Staggered Value";
IF (fundingStaggeredValue == #MISSING)
fundingStaggeredValue = "OEP_No Entity"->"OCX_Global"->"No Year"->"BegBalance"-
>"OCX_Funding Staggered Value";
ENDIF
ENDIF
"No Year"->"BegBalance"->"OCX_Funding Staggered Value" = fundingStaggeredValue;
fundingPercent = "No Year"->"BegBalance"->"OCX_Funding %";
IF (fundingPercent == #MISSING)
fundingPercent = "OCX_Global"->"No Year"->"BegBalance"->"OCX_Funding %";
IF (fundingPercent == #MISSING)
fundingPercent = "OEP_No Entity"->"OCX_Global"->"No Year"->"BegBalance"-
>"OCX_Funding %";
ENDIF
ENDIF
"No Year"->"BegBalance"->"OCX_Funding %" = fundingPercent;
IF (@ISMBR("BegBalance") and paramsSetFund == 0)

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

You might also like