Sales Order Templates

A Preventative Maintenance contract will often require ongoing billing over the life of the Project. For example a Project with a monthly service may have a callout fee for each visit, with additional Inventory consumed, to be fully billed each month.

NetSuite Memorized Transactions

One solution for this would be to use NetSuite Memorized Transactions. The Service Manager would create a Sales Order under the Project with the callout fee, then memorize it to reoccur in sync with the Cases. Field Service Programs would generate a monthly Case and NetSuite would generate a monthly Sales Order.

How to Configure

The Mobile should show only the relevant Sales Order. That is defined as the Sales Order on the Project that is not Fully Billed, Closed, or the original Memorized Transaction.

            {
   "routes/mobile": {
      "salesorder": {
         "article": {
            "filters": [
               ["job.internalid","anyof","{‌event.company}"],"and",
               ["memorized","is","false"], "and",
               ["status","noneof", ["SalesOrd:G","SalesOrd:H"]]
            ]
         }
      }
   }
} 

          

Important Considerations

  • Service Managers must have a deep understanding of Memorized Transactions.

  • Has additional setup time for new contracts.

  • Sales Order records would be created before a job is started.

  • No direct link between the Sales Order and Case.

Default Table Values

An alternative solution is to configure the Mobile to have a default value for the Sales Order Items table element. Defining this default value is equivalent to prefilling the lines on a Sales Order in NetSuite.

How to Configure

The Sales Order table element, items, represents the Items sublist on the record. The element attribute, value, defines the default value for the element. Set this to an array of objects with values for the elements on each line. This example adds one line with a Callout Fee Service Item.

            {
   "routes/mobile": {
      "salesorder": {
         "element": {
            "items": {
               "value": [{
                  "item":{
                     "id": 123,
                     "label": "Callout Fee"
                  },
                  "quantity": 1
               }]
            }
         }
      }
   }
} 

          

Important Considerations

  • Callout fee Item and Quantity are hard coded in config.

  • Sales Orders are created at the time of the job.

Dynamic Default Table Values

A more flexible version of the previous solution is to set the default table values dynamically from record data. Common use cases are to source the Callout Fee from a custom Field on the Asset or from a custom child record on the Project.

How to Configure

Use a search to query the relevant records and map the fields to the line values for Item and Quantity. This example assumes there is a custom Callout Fee child record under the Project with an Item and Quantity field. For each new Project, the Service Manager would create Callout Fee records.

            {
   "routes/mobile": {
      "salesorder": {
         "element": {
            "items": {
               "value": {
                  "record": "customrecord_nxc_callout",
                  "filters": ["custrecord_nxc_callout_project","anyof","{‌event.job}"],
                  "map": {
                     "item": {
                        "id": "custrecord_nxc_callout_item",
                        "label": "#custrecord_nxc_callout_item"
                     },
                     "quantity": "custrecord_nxc_callout_quantity"
                  }
               }
            }
         }
      }
   }
} 

          

Important Considerations

  • Service Manager defines the Callout Fee

  • Supports multiple charges on the same job

  • Can be modified over the life of the contract

  • Items used as default values must be valid for the project

General Notices