SBET supported Formula & Operations

Prev Next

Overview

Formulas define how your Spec Based Estimate Template (SBET) calculates materials, labor, and costs. This article outlines the supported form field types, formulas and how they operate, common errors you may encounter, and best practices to help you create accurate and reliable formulas.


Who uses this feature

  • Administrators, managers, and field managers

  • Primarily for Residential Roofing Service & Replacement

Feature configuration

  • Account configuration is required to use this feature. Please contact Technical Support for details.

Things to know

  • The column headers cannot contain spaces. Use the original import template as a reference when preparing your file. For example, you can write the ParentTag column exactly as "ParentTag" (no space). If you enter it as "Parent Tag" with a space, it won't be recognized and the logic won't apply correctly.

  • In the QuantityFormulaByName column, put form field names inside brackets [ ]. For example, if the form field is called Squares, write it as [Squares]. This column is where you set up the calculation for how many items go on the estimate. For example, if you use [Squares]*3, the system takes the number entered in Squares and multiplies it by three to get the quantity.

  • Formulas are not case-sensitive. Uppercase and lowercase letters are treated the same. For example, IF, if, If, and iF all work the same way.

Formula and Operations

In step 4 of the Spec Based Template creation flow, you need to set up your estimates using formulas. The table below lists the available formulas and operations you can use. These pre-set options let you build calculations that determine quantities and pricing automatically.

Section

Description

Examples

Supported Calculations

Addition

+

Subtraction

-

Multiplication

*

Division

/

IF Function

IF ([form field name]. value if true, value if false)

Example: IF([Partial Replacement] = 1, 0)

Nummerical Comparisons in IF Function

Greater than

>

Less than

<

Equal to

=

Not equal to

! =

Less than or equal to

< =

Greater than or equal to

> =

Rounding with ROUNDUP

ROUNDUP ([form field name], decimal space)

Example: ROUNDUP([Ridge Vent]/30, 0)

Supported Decimal Space

0 decimal place

Example: ROUNDUP(5.75, 0) → 6

1 decimal place

Example: ROUNDUP(5.75, 1) → 5.8

Between Function

Checks if a value is between two numbers, including the numbers themselves.

Example: Between([Partial Replacement], 5, 10) → true if [Partial Replacement] is 5, 6, 7, 8, 9, or 10

Null Function (Only for dropdown/ radio buttons)

Checks if a value is empty or has no data.

Example:

  • IF([Shingles]= NULL, 20, 30)
    → If Shingles is empty (null), it will return 20.
    → If Shingles has a value, it will return 30.

  • IF([Shingles]= "", 20, 30)
    → If Shingles is empty (null), it will return 20.
    → If Shingles has a value, it will return 30.

More Complex formulas

Customers can create complex conditional formulas.

Example:

  • IF([Area] > 122, ROUNDUP([Shingles] - 45.126, 2), IF([Ridge Vent]=NULL, ([Area] + [Shingles]) * 2.2 + [Area], 25))
    → Returns a rounded value if [Area] > 122, otherwise checks if [Ridge Vent] is null to perform different calculations.

  • IF([Area] > 122, ROUNDUP([Shingles] - 45.126, 2), ...:
    → If the roof's area is greater than 122 square meters, it calculates the needed shingles using ROUNDUP([Shingles] - 45.126, 2).

  • IF([Ridge Vent]=NULL, ([Area] + [Shingles]) * 2.2 + [Area], 25):
    → If the roof's area is less than or equal to 122 square meters, it checks if the [Ridge Vent] value is provided.                            

    • If [Ridge Vent] is not provided, it calculates the total materials needed using ([Area] + [Shingles]) * 2.2 + [Area].

    • If [Ridge Vent] is provided, it uses the fixed value 25.

Supporting Quotation Answers in Dropdown & Radio Button

This is for dropdown & radio button text answers

Examples:

  • Form Answer: 5" gutter
    Formula: IF([gutter length] = "5\" gutter", 14, 0)

  • Form Answer: "5 gutter"
    Formula: IF([gutter length] = "\"5 gutter\"", 14, 0)

  • Form Answer: 5 gu"tter
    Formula: IF([gutter length] = "5 gu\"tter", 14, 0)

Supported Form Field Types

Within the formula builder, there are four supported form field types that you can use to create your formulas:

  • Number: Field responses must be numeric. For example, 300 or 500.

  • Text: You can enter text and it can be used in formulas but only within IF statements.

  • Dropdown: You can select a dropdown answer that is a text-based option. These new fields can be used in formulas, but only within IF statements. For example, IF([drip edge] = "yes", 14, IF([drip edge] = "no", 10, 10 + 10)).

  • Radio Button: You can select a radio button answer that is text. These new fields can be used in formulas, but only within IF statements. For example, IF([drip edge] = "yes", 14, IF([drip edge] = "no", 10, IF([drip edge] = "", 0, 20))).

Ways to create SBET

There are three different options of creating Spec Based Estimate Templates (SBETs) from the office side or the mobile side. These are the following options:

  • Option 1: Create SBET Estimate from the Job screen

  • Option 2: Create SBET Estimate from the Project screen

  • Option 3: Create SBET Estimate from Mobile

Option 1: Create SBET estimate from the Job screen

  1. Search for the job number and open the job page.

  2. On the job screen, click Job Actions > Add an Estimate.

  3. In the Build Estimate(s) pop-up, click Spec Based TemplateUser interface for building estimates with template selection and item list.

  4. Select the template from the list and click Next.

  5. From the Select Measurement Option pop-up, select an existing measurement or manual input and click Next.        

    Note: If you select Existing Measurements, some measurements pre-populate on your form. If you select Manual Input, you need to input all measurements manually.

     Select measurement options for GAF QuickMeasure, including existing measurements and building selection.    

  6. On the Form, fill out the relevant data and click Save.

Option 2: Create Spec Based Estimate from the Project screen

  1. Open the project screen and click Actions > Build Estimate.

  2. From the Build Estimate pop-up, select an existing opportunity or click Create New OpportunityUser interface for building estimates with options to create or add opportunities.

  3. In the Create New Opportunity screen, select the details, click Spec Based Template to select one and click DoneForm for creating a new opportunity with proposal and template selection options.

  4. On the Form, fill out the relevant data and click Save.

Option 3: Create SBET Estimate from Mobile

  1. Tap Overview on the dashboard, and then tap View Current Job.

  2. Tap Forms to select the form and fill out the measurements on the form. User interface displaying various forms with a focus on the Measurement Form option.

  3. When finished, tap Save.

Error Code list

See common errors you may encounter when creating formulas. Each message explains what went wrong and how to fix it before trying again.


Invalid SKU Code Name

Code not found: On the (Rules) tab, in row ({row.Row}) the value ‘{data.SkuCodeName}’ in SkuCodeName is not recognized in the system. Check the CodeName or add the item to the Pricebook before trying again.

Invalid SKU ID

[{data.SkuId.Value}] does not exist in Pricebook or the code/name does not match Pricebook code/name. Make sure to add the item first to Pricebook before using it in Roofing Templates.

Proposal Type Not Found

ProposalType not found: On the (Rules) tab, in row ({row.Row}) the value ‘{data.ProposalType}’ in ProposalType is not used for this Input Based Proposal. Check the spelling before importing again.

Duplicate Section/Proposal Type

Too many entries for this section/proposal type: On the (Rules) tab for the ({data.SectionName}) section and ({data.ProposalType}) proposal type. We only support 1 item per proposal type and section combination. Please update your file and try again.

Duplicate SKU Type

Too many sku types: On the (Rules) tab for the ({data.SectionName}) section and ({rule.LineItemType.Value}) sku type. We only support 1 sku type per section. Please update your file and try again.

Missing Proposal Type

Proposal Type is required: On the (Rules) tab, in row ({row.Row}).

Missing Quantity Formula Name

QuantityFormulaByName is required: On the (Rules) tab, in row ({row.Row}).

Input Field Not Found

Input Field not found: On the (Rules) tab, in row ({row.Row}) the value ‘{variableName}’ in QuantityFormulaByName is not in the input source. Check the spelling before importing again.

Input Field Not Unique

Input Field is not unique: On the (Rules) tab, in row ({row.Row}) the value ‘{variableName}’ in QuantityFormulaByName can be referring to more than one item in the input source. Use QuantityFormulaById to refine to the specific field.

Unsupported Calculation

Calculation not recognized: On the (Rules) tab, in row ({row.Row}) in QuantityFormulaByName, there are calculations that are not supported. The only formulas supported are +, -, *, /, roundup(), if().

Unsupported Field Type in Forms

EX: Row: 21 Form Field “SQ Low Slope” form field has an incorrect field type.

When a price modifier is in an item group

Price modifiers cannot be added to item groups: On the (Rules) tab, in row (3). SkuCodeName (percentdiscount) SkuId () ItemGroupName (GroupContainingPriceModifier).

When the parent of an item group isn't a service/equipment

Only service and equipment items can be parents of an item group: On the (Rules) tab, in row (4). SkuCodeName (percentdiscount) SkuId () ItemGroupName (GroupWithPriceModifierAsRoot).

When no ParentTag is specified for a group and there are no services or equipment in the item group

No valid item group parent found: On the (Rules) tab, the group ‘GroupWithNoValidParentIdentified’ has no service or equipment item which could be the item group parent.

Want to learn more?