Capital expenditure request (CER)
This form can be downloaded and imported into your Workflow Automation instance. The downloadable JSON file is at the bottom of this page. For information on importing forms, refer to this guide.
We have two capital expenditure request (CER) processes: one normal one, and one advanced one. The advanced process uses a special grid to total amounts vertically and horizontally using JavaScript.
To read about and download the advanced process, or to see the CapEx workflow form in action, refer to our documentation.
Form
Get the JavaScript
Here’s the full JavaScript used to total grid entries vertically and horizontally:
var grd = intForm.getElementByClientID("grd2");
console.clear();grd.events.onChange = function(){var grd2 = intForm.getElementByClientID("grd2");var faBusCase = intForm.getElementByClientID("faBusCase");var numTotalCapex = intForm.getElementByClientID("numTotalCapex");
var JanTotal = 0;var FebTotal = 0;var MarTotal = 0;var AprTotal = 0;var MayTotal = 0;var JunTotal = 0;var JulTotal = 0;var AugTotal = 0;var SepTotal = 0;var OctTotal = 0;var NovTotal = 0;var DecTotal = 0;var YearTotal = 0;var nextYearTotal = 0;
//calculate column totals first by month, then by yearfor (var i=0; i < 2; i++){if (grd2.gridOptions.data[i].Jan != null){JanTotal += parseFloat(grd2.gridOptions.data[i].Jan);}
if (grd2.gridOptions.data[i].Feb != null){FebTotal += parseFloat(grd2.gridOptions.data[i].Feb);}
if (grd2.gridOptions.data[i].Mar != null){MarTotal += parseFloat(grd2.gridOptions.data[i].Mar);}
if (grd2.gridOptions.data[i].Apr != null){AprTotal += parseFloat(grd2.gridOptions.data[i].Apr);}
if (grd2.gridOptions.data[i].May != null){MayTotal += parseFloat(grd2.gridOptions.data[i].May);}
if (grd2.gridOptions.data[i].June != null){JunTotal += parseFloat(grd2.gridOptions.data[i].June);}
if (grd2.gridOptions.data[i].July != null){JulTotal += parseFloat(grd2.gridOptions.data[i].July);}
if (grd2.gridOptions.data[i].Aug != null){AugTotal += parseFloat(grd2.gridOptions.data[i].Aug);}
if (grd2.gridOptions.data[i].Sep != null){SepTotal += parseFloat(grd2.gridOptions.data[i].Sep);}
if (grd2.gridOptions.data[i].Oct != null){OctTotal += parseFloat(grd2.gridOptions.data[i].Oct);}
if (grd2.gridOptions.data[i].Nov != null){NovTotal += parseFloat(grd2.gridOptions.data[i].Nov);}
if (grd2.gridOptions.data[i].Dec != null){DecTotal += parseFloat(grd2.gridOptions.data[i].Dec);}
if (grd2.gridOptions.data[i]["2021"] != null){nextYearTotal += parseFloat(grd2.gridOptions.data[i]["2021"]);}}
grd2.gridOptions.data[2].Jan = parseFloat(JanTotal);grd2.gridOptions.data[2].Feb = parseFloat(FebTotal);grd2.gridOptions.data[2].Mar = parseFloat(MarTotal);grd2.gridOptions.data[2].Apr = parseFloat(AprTotal);grd2.gridOptions.data[2].May = parseFloat(MayTotal);grd2.gridOptions.data[2].June = parseFloat(JunTotal);grd2.gridOptions.data[2].July = parseFloat(JulTotal);grd2.gridOptions.data[2].Aug = parseFloat(AugTotal);grd2.gridOptions.data[2].Sep = parseFloat(SepTotal);grd2.gridOptions.data[2].Oct = parseFloat(OctTotal);grd2.gridOptions.data[2].Nov = parseFloat(NovTotal);grd2.gridOptions.data[2].Dec = parseFloat(DecTotal);
grd2.gridOptions.data[2]["2020"] = parseFloat(YearTotal);grd2.gridOptions.data[2]["2021"] = parseFloat(nextYearTotal);
JanTotal = 0;FebTotal = 0;MarTotal = 0;AprTotal = 0;MayTotal = 0;JunTotal = 0;JulTotal = 0;AugTotal = 0;SepTotal = 0;OctTotal = 0;NovTotal = 0;DecTotal = 0;YearTotal = 0;nextYearTotal = 0;
//calculate opex column totals by month then by yearfor (var i=3; i < 5; i++){if (grd2.gridOptions.data[i].Jan != null){JanTotal += parseFloat(grd2.gridOptions.data[i].Jan);}
if (grd2.gridOptions.data[i].Feb != null){FebTotal += parseFloat(grd2.gridOptions.data[i].Feb);}
if (grd2.gridOptions.data[i].Mar != null){MarTotal += parseFloat(grd2.gridOptions.data[i].Mar);}
if (grd2.gridOptions.data[i].Apr != null){AprTotal += parseFloat(grd2.gridOptions.data[i].Apr);}
if (grd2.gridOptions.data[i].May != null){MayTotal += parseFloat(grd2.gridOptions.data[i].May);}
if (grd2.gridOptions.data[i].June != null){JunTotal += parseFloat(grd2.gridOptions.data[i].June);}
if (grd2.gridOptions.data[i].July != null){JulTotal += parseFloat(grd2.gridOptions.data[i].July);}
if (grd2.gridOptions.data[i].Aug != null){AugTotal += parseFloat(grd2.gridOptions.data[i].Aug);}
if (grd2.gridOptions.data[i].Sep != null){SepTotal += parseFloat(grd2.gridOptions.data[i].Sep);}
if (grd2.gridOptions.data[i].Oct != null){OctTotal += parseFloat(grd2.gridOptions.data[i].Oct);}
if (grd2.gridOptions.data[i].Nov != null){NovTotal += parseFloat(grd2.gridOptions.data[i].Nov);}
if (grd2.gridOptions.data[i].Dec != null){DecTotal += parseFloat(grd2.gridOptions.data[i].Dec);}
if (grd2.gridOptions.data[i]["2021"] != null){nextYearTotal += parseFloat(grd2.gridOptions.data[i]["2021"]);}}//end of column total for loop
grd2.gridOptions.data[5].Jan = parseFloat(JanTotal);grd2.gridOptions.data[5].Feb = parseFloat(FebTotal);grd2.gridOptions.data[5].Mar = parseFloat(MarTotal);grd2.gridOptions.data[5].Apr = parseFloat(AprTotal);grd2.gridOptions.data[5].May = parseFloat(MayTotal);grd2.gridOptions.data[5].June = parseFloat(JunTotal);grd2.gridOptions.data[5].July = parseFloat(JulTotal);grd2.gridOptions.data[5].Aug = parseFloat(AugTotal);grd2.gridOptions.data[5].Sep = parseFloat(SepTotal);grd2.gridOptions.data[5].Oct = parseFloat(OctTotal);grd2.gridOptions.data[5].Nov = parseFloat(NovTotal);grd2.gridOptions.data[5].Dec = parseFloat(DecTotal);
grd2.gridOptions.data[5]["2021"] = parseFloat(nextYearTotal);
//calculate row totalsfor (var i = 0; i < 6; i++){
var YearTotal = 0;if (grd2.gridOptions.data[i].Jan != null){YearTotal += parseFloat(grd2.gridOptions.data[i].Jan);}
if (grd2.gridOptions.data[i].Feb != null){YearTotal += parseFloat(grd2.gridOptions.data[i].Feb);}
if (grd2.gridOptions.data[i].Mar != null){YearTotal += parseFloat(grd2.gridOptions.data[i].Mar);}
if (grd2.gridOptions.data[i].Apr != null){YearTotal += parseFloat(grd2.gridOptions.data[i].Apr);}
if (grd2.gridOptions.data[i].May != null){YearTotal += parseFloat(grd2.gridOptions.data[i].May);}
if (grd2.gridOptions.data[i].June != null){YearTotal += parseFloat(grd2.gridOptions.data[i].June);}
if (grd2.gridOptions.data[i].July != null){YearTotal += parseFloat(grd2.gridOptions.data[i].July);}
if (grd2.gridOptions.data[i].Aug != null){YearTotal += parseFloat(grd2.gridOptions.data[i].Aug);}
if (grd2.gridOptions.data[i].Sep != null){YearTotal += parseFloat(grd2.gridOptions.data[i].Sep);}
if (grd2.gridOptions.data[i].Oct != null){YearTotal += parseFloat(grd2.gridOptions.data[i].Oct);}
if (grd2.gridOptions.data[i].Nov != null){YearTotal += parseFloat(grd2.gridOptions.data[i].Nov);}
if (grd2.gridOptions.data[i].Dec != null){YearTotal += parseFloat(grd2.gridOptions.data[i].Dec);}
grd2.gridOptions.data[i]["2020"] = parseFloat(YearTotal);
if (grd2.gridOptions.data[i]["2021"] != null){grd2.gridOptions.data[i]["Request Total"] = parseFloat(YearTotal) + parseFloat(grd2.gridOptions.data[i]["2021"]);} else{grd2.gridOptions.data[i]["Request Total"] = parseFloat(YearTotal);}
}//end of row total for loop
//showif (parseFloat(grd2.gridOptions.data[2]["Request Total"]) > 50000){faBusCase.show = true;faBusCase.validation.required = true;} else{faBusCase.validation.required = false;faBusCase.show = false;}
numTotalCapex.Answer = grd2.gridOptions.data[2]["Request Total"];
}//end of onchange