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

capex-request-advanced-form-grid.png(opens in a new tab)

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 year
for (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 year
for (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 totals
for (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
//show
if (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
Download the Form