Invoice Item Builder Setup

Prerequisites

Setting Up the Invoice Item Builder

  1. Access FieldFX Back Office

  2. Switch to Salesforce Classic

  3. From Setup, enter "static" in the Quick Find box, then select Static Resources

  4. Complete one of the following:

    • If the en_US file displays in the list, proceed to step 11.

    • If the en_US file doesn’t display in the list, proceed to step 5.

  5. Download the en_US file

  6. Extract the file and save it to your local computer

  7. Move back to FieldFX Back Office

  8. Click New

  9. Complete the following:

    1. In Name, enter "en_US"

    2. In Cache Control, select "Public"

    3. Click Choose File

    4. Select the en_US file you downloaded

  10. Click Save

  11. Configure the Invoice Details fields

  12. Configure the Item grid

  13. Configure the Item picker

Invoice Details

Basics

The Invoice Details section displays basic invoice information.

Screenshot of the Invoice Details section
The user’s default page layout for the Invoice object must include the recordType field for the Invoice Details section to display.

Selecting the Fields to Display

  1. Access FieldFX Back Office

  2. Switch to Salesforce Classic

  3. From Setup, enter "object" in the Quick Find box, then select Objects

  4. Click Invoice

  5. Under Compact Layouts, click New

  6. Complete the following:

    1. In Label, enter "Invoice Details"

    2. In Available Fields, select the fields to include

    3. Click Add

    4. In Selected Fields, change the order

    5. Click Save

  7. Click Compact Layout Assignment

  8. Complete the following:

    1. Click Edit Assignment

    2. In Primary Compact Layout, select "Invoice Details"

    3. Click Save

Item Grid

Basics

The Item grid displays the items on an invoice.

Screenshot of an example Invoice Item Grid

Selecting the Fields to Display

  1. Access FieldFX Back Office

  2. Switch to Salesforce Classic

  3. From Setup, enter "object" in the Quick Find box, then select Objects

  4. Click Invoice Item

  5. Under Page Layouts, click Edit next to Invoice Item Layout

  6. Change the fields

  7. Click Save

Configuring a Field to Display Read-Only

  1. Access FieldFX Back Office

  2. Switch to Salesforce Classic

  3. From Setup, enter "object" in the Quick Find box, then select Objects

  4. Click Invoice Item

  5. Under Custom Fields & Relationships, click the field name

  6. Click Set Field-Level Security

  7. Select Read-Only next to the user profiles on which to impose the read-only restriction

  8. Click Save

Fields use a combination of page layout and field-level security settings and the most restrictive field setting always applies.

For example, if you make a field required in the page layout security settings and read-only in the field-level security settings, the field displays read-only for the user profiles specified in the field-level security settings.

Item Picker

Search Filters

Basics

Search filters display at the top of the Item picker.

Use search filters to change the items available for selection on the Item picker.

Screenshot of the Price Book Search Filters
Figure 1. Search filters on the Price Book Items tab

Selecting the Fields for Search Filters

  1. Access FieldFX Back Office

  2. Switch to Salesforce Classic

  3. From Setup, enter "object" in the Quick Find box, then select Objects

  4. Complete one of the following:

    • Click Credit Memo to select fields for credit memo search filters

    • Click Job to select fields for job search filters

    • Click Price Book Item to select fields for price book item search filters

    • Click Ticket to select fields for ticket search filters

    • Click Ticket Item to select fields for ticket item search filters

  5. Under Field Sets, click Edit next to IIBSearchFields

  6. Drag fields into the In the Field Set list

  7. Click Save

  8. Repeat steps 4 to 7 for other objects as needed

Search Results

Basics

Search results display at the bottom of the Item picker.

You can add items in the search results to an invoice.

Screenshot of search results in Price Book Items
Figure 2. Search results on the Price Book Items tab

Selecting the Fields for Search Results

  1. Access FieldFX Back Office

  2. Switch to Salesforce Classic

  3. From Setup, enter "object" in the Quick Find box, then select Objects

  4. Complete one of the following:

    • Click Credit Memo to select fields for credit memo search results

    • Click Price Book Item to select fields for price book item search results

    • Click Ticket to select fields for ticket search results

    • Click Ticket Item to select fields for ticket item search results

  5. Complete the following:

    1. Under Search Layouts, click Edit next to Search Results

    2. In Available Fields, select the fields to include

    3. Click Add

    4. In Selected Fields, select the fields to remove

    5. Click Remove

    6. In Selected Fields, change the order

    7. Select Override the search result column customizations for all users

    8. Click Save

  6. Repeat steps 4 and 5 for other objects as needed

Picker Width

Basics

You can set the width of the Item picker to control how far it displays across the page.

Setting the Picker Width

  1. Access FieldFX Back Office

  2. Switch to Salesforce Classic

  3. From Setup, enter "custom setting" in the Quick Find box, then select Custom Settings

  4. Click Manage next to FX Settings

  5. Click Edit

  6. In InvItemBldr PBI MaxFlyoutWidth, specify the picker’s width when it flies across the page

    Use a width between 500-1000.

  7. Click Save

Customize the Invoice Item Picker

Custom Lookups

Basics

  • The Custom Lookups feature improves how lookups work on the Item grid and Item picker.

  • This powerful feature gives you the ability to:

    • Limit the records that display available in lookups

    • Define the fields that display in lookups

    • Define the fields analyzed for keyword searches in lookups

Examples

Contact Lookup

Here’s an example of how you can configure a Contact lookup.

Table 1. Configuring a Contact lookup
Setting Value Impact

QueryFilter

(LastName=NULL OR LastName LIKE 'S%')

Only contacts with a blank last name or a last name starting with the letter "S" display available for selection.

QueryFields

FirstName, LastName, FX5__Office__r.Name

The listed fields display for contacts in search results.

KeywordSearchFields

LastName

Keyword searches analyze the last name of contacts.

OrderBy

LastName

Contacts sort in alphabetical order by last name.

Equipment Lookup

Here’s an example of how you can configure an Equipment lookup.

Table 2. Configuring an Equipment lookup
Setting Value Impact

QueryFilter

(FX5__Office__r.Name LIKE 'H%')

Only equipment xrefed to offices starting with the letter "H" displays available for selection.

QueryFields

Name, FX5__Description__c, FX5__Office__r.Name

The listed fields display for equipment in search results.

KeywordSearchFields

Name, FX5__Description__c

Keyword searches analyze the name and description of equipment.

OrderBy

Name

Equipment sorts in alphabetical order by name.

Configuring Custom Lookups

Scenario

As an example, we will show you how to configure a Contact lookup.

The code examples walkthrough adds a section of code each time. Each new step includes all of the previous code entries as well as the new part.
Copy the code from the last step to select the entire code block.
  1. Add a CSF_Settings static resource:

    1. Open a text editor

    2. Enter the following to name the static resource:

      window.csf_settings = {
    3. Enter the identifying code for the Invoice Item Builder and Item grid:

      window.csf_settings = {
        iib: {
          maingrid: {
    4. Enter the API name of the lookup:

      window.csf_settings = {
        qib: {
          maingrid: {
            "Contact__c": {
              "Contact__c": {
    5. Enter a SOQL query to restrict the records that display available for selection in the lookup:

      window.csf_settings = {
        qib: {
          maingrid: {
            "Contact__c": {
              "Contact__c": {
                "QueryFilter": "(LastName=NULL OR LastName LIKE 'S%')",
    6. Enter the fields to display for records in search results:

      window.csf_settings = {
        qib: {
          maingrid: {
            "Contact__c": {
              "Contact__c": {
                "QueryFilter": "(LastName=NULL OR LastName LIKE 'S%')",
                "QueryFields": "FirstName, LastName, FX5__Office__r.Name",
      • In this example, the First Name, Last Name, and Office fields display for records.

    7. Enter the fields to analyze in keyword searches:

      window.csf_settings = {
        qib: {
          maingrid: {
            "Contact__c": {
              "Contact__c": {
                "QueryFilter": "(LastName=NULL OR LastName LIKE 'S%')",
                "QueryFields": "FirstName, LastName, FX5__Office__r.Name",
                "KeywordSearchFields": "LastName",
      • In this example, keyword searches analyze values in the Last Name field.

    8. Enter the field by which to sort records:

      window.csf_settings = {
        qib: {
          maingrid: {
            "Contact__c": {
              "Contact__c": {
                "QueryFilter": "(LastName=NULL OR LastName LIKE 'S%')",
                "QueryFields": "FirstName, LastName, FX5__Office__r.Name",
                "KeywordSearchFields": "LastName",
                "OrderBy": "LastName"
      • In this example, records sort in alphabetical order by last name.

    9. Add braces { } to end the code for the Item grid:

      window.csf_settings = {
        qib: {
          maingrid: {
            "Contact__c": {
                "Contact__c": {
                    "QueryFilter": "(LastName=NULL OR LastName LIKE 'S%')",
                    "QueryFields": "FirstName, LastName, FX5__Office__r.Name";
                    "KeywordSearchFields": "LastName",
                    "OrderBy": "LastName"
                  }
              }
          },
    10. Add code for the Available Tickets tab on the Item picker.

      window.csf_settings = {
        qib: {
          maingrid: {
            "Contact__c": {
                "Contact__c": {
                    "QueryFilter": "(LastName=NULL OR LastName LIKE 'S%')",
                    "QueryFields": "FirstName, LastName, FX5__Office__r.Name";
                    "KeywordSearchFields": "LastName",
                    "OrderBy": "LastName"
                  }
              }
          },
          atipicker: {
            "Contact__c": {
              "Contact__c": {
                "QueryFilter": "(LastName=NULL OR LastName LIKE 'S%')",
                "QueryFields": "FirstName, LastName, FX5__Office__r.Name",
                "KeywordSearchFields": "LastName",
                "OrderBy": "LastName"
              }
            }
          },
    11. Add code for the Price Book Items tab on the Item picker.

      window.csf_settings = {
        qib: {
          maingrid: {
            "Contact__c": {
                "Contact__c": {
                    "QueryFilter": "(LastName=NULL OR LastName LIKE 'S%')",
                    "QueryFields": "FirstName, LastName, FX5__Office__r.Name";
                    "KeywordSearchFields": "LastName",
                    "OrderBy": "LastName"
                  }
              }
          },
          atipicker: {
            "Contact__c": {
              "Contact__c": {
                "QueryFilter": "(LastName=NULL OR LastName LIKE 'S%')",
                "QueryFields": "FirstName, LastName, FX5__Office__r.Name",
                "KeywordSearchFields": "LastName",
                "OrderBy": "LastName"
              }
            }
          },
          apbipicker: {
            "Contact__c": {
              "Contact__c": {
                  "QueryFilter": "(LastName=NULL OR LastName LIKE 'S%')",
                "QueryFields": "FirstName, LastName, FX5__Office__r.Name",
                "KeywordSearchFields": "LastName",
                "OrderBy": "LastName"
              }
            }
          }
    12. Add braces { } to end the lookup configuration:

      window.csf_settings = {
        qib: {
          maingrid: {
            "Contact__c": {
                "Contact__c": {
                    "QueryFilter": "(LastName=NULL OR LastName LIKE 'S%')",
                    "QueryFields": "FirstName, LastName, FX5__Office__r.Name";
                    "KeywordSearchFields": "LastName",
                    "OrderBy": "LastName"
                  }
              }
          },
          atipicker: {
            "Contact__c": {
              "Contact__c": {
                "QueryFilter": "(LastName=NULL OR LastName LIKE 'S%')",
                "QueryFields": "FirstName, LastName, FX5__Office__r.Name",
                "KeywordSearchFields": "LastName",
                "OrderBy": "LastName"
              }
            }
          },
          apbipicker: {
            "Contact__c": {
              "Contact__c": {
                "QueryFilter": "(LastName=NULL OR LastName LIKE 'S%')",
                "QueryFields": "FirstName, LastName, FX5__Office__r.Name",
                "KeywordSearchFields": "LastName",
                "OrderBy": "LastName"
              }
            }
          }
        }
      }

      Every left brace { should have a matching right brace }.

    13. Save the file with "CSF_Settings" as the file name

  2. Upload the CSF_Settings file to FieldFX Back Office:

    1. Access FieldFX Back Office

    2. Switch to Salesforce Classic

    3. From Setup, enter "static" in the Quick Find box, then select Static Resources

    4. Click New

    5. In Name, enter "CSF_Settings"

    6. In Cache Control, select "Public"

    7. Click Choose File

    8. Select the CSF_Settings file

      When you upload a new CSF_Settings file, the lookup configurations in the new file replace any existing lookup configurations.

  3. Test the Contact lookup

    1. Open the Invoice Item Builder

    2. Open the Contact lookup

    3. Verify that the lookup works as configured

Invoice Item Builder Button

Basics

The Invoice Item Builder button displays at the top of an invoice in FieldFX Back Office.

Screenshot of the Invoice Item Builder button highlighted

Changing the Name of the Invoice Item Builder Button

  1. Access FieldFX Back Office

  2. Switch to Salesforce Classic

  3. From Setup, enter "translation" in the Quick Find box, then select Override

  4. In Package, select "FieldFX Base Package"

  5. In Language, select "English"

  6. In Setup Component, select "Button and Link Label"

  7. In Object, select "Invoice"

  8. Double-click the Button or Link Label Override column next to Invoice Item Builder

  9. Enter a new button name

  10. Click Save