Configuring FSM Case Invoicing
Configure FSM Case Invoicing to control which available billable time and expenses are selected and how the Generate Invoice button appears on a Case form. The standard configuration supplies the button and selects time and expenses through tasks belonging to the invoice's case.
For invoice creation, line-selection behavior, and processing effects, see FSM Case Invoicing.
Before You Begin
Before you change the invoicing settings, confirm the following:
-
Use an account with FSM installed and a role that can maintain Field Service Configuration records.
-
Retain the installed Field Service User Event deployments for cases and invoices and the Field Service Suitelet. The case deployment adds the button. The Suitelet handles the request. The invoice deployment supports the later update of unbilled amounts.
-
Use a saved Case with a Field Service Case Type (
custevent_nx_case_type), a valid customer or project context, and available invoice lines. -
For the default time and expense scope, retain the Task relationship on time bills and expense lines (
custcol_nx_task) and the Task's relationship to the Case. Linking a charge directly to the Case alone does not qualify it for this selection. -
If billing a sales order, check the Case's Transaction (
custevent_nx_case_transaction) and the sales order's Case (custbody_nx_case). These are separate fields. Default time and expense selection uses the Case on the initialized Invoice.
The supplied case and invoice forms expose the relevant FSM fields. If you use custom forms, retain access to the fields needed to select the source transaction and inspect the resulting invoice and its Task links.
Core Settings and Choices
No custom override is required for the standard behavior. The invoice model sets applyCaseTimeExpenseOnly to true, and the case invoice view sets hidden to false. If you omit these properties from custom JSON, FSM retains the default values.
The following table lists the case invoicing settings, their default values or baselines, and their effects.
|
Setting |
JSON Path |
Default or Baseline |
Effect |
|---|---|---|---|
|
Time and expense scope |
|
|
Selects available time and expenses whose task belongs to the invoice's case. Set |
|
Button visibility |
|
|
Set |
|
Button label |
|
Translated Generate Invoice label |
Changes the button text. |
|
Confirmation message |
|
Translated request to confirm invoice generation |
Changes the message shown before the request. |
|
Success message |
|
Translated invoice-created message |
Changes the successful-request message. |
|
Error message |
|
Translated generic operation-error message |
Changes the failed-request message. |
|
Button identifier |
|
|
Identifies the page button. Retain this value unless a different, unique button ID is required. |
For root placement and model and view structure, see Finding a Configuration Area, Where Model Settings Are Configured, and FSM NetSuite View Configuration.
Label and message values can be literal text or FSM translation identifiers. Changing wording does not change invoice eligibility or error handling. Keep the confirmation clear about the selected billing scope, and do not describe the success message as confirmation that unbilled amounts have been recalculated.
For shared property definitions, see models/invoice and views/case/invoice.
The following fragment shows the default values for time and expense selection, button visibility, and the button ID:
{
"models/invoice": {
"prototype": {
"applyCaseTimeExpenseOnly": true
}
},
"views/case/invoice": {
"hidden": false,
"name": "custpage_nx_invoice"
}
}
Configure Time and Expense Selection
The default scope is suitable when each Case should bill only its own Task-linked time and expenses. The broader scope is suitable only when the invoice's available customer or project charges match the intended billing outcome.
Setting applyCaseTimeExpenseOnly to false can bill time and expenses for other work available to the same customer or project. The change affects case invoicing throughout the active configuration and is not restricted to one case.
To configure time and expense selection:
-
Go to Field Service > Administration > Configuration. The Field Service Configuration page opens the active configuration record.
-
Record the name of the active configuration so that you can identify it when activating the replacement.
-
In Name, enter a unique name for the new version. Begin with the current product version, followed by the date in
YYYYMMDDformat and your initials. You can add a short description. -
Check the Inactive box to keep the replacement inactive during editing.
-
From the Save list, click Save As.
-
Click List. On the Field Service Configuration List page, check the Show Inactives box.
-
Find the new record and click Edit.
-
In the Editor, find or add the root
"models/invoice"object and itsprototypeobject. -
Set
applyCaseTimeExpenseOnlyto one of the following values:-
true: Select available time and expenses linked to tasks belonging to the invoice's case. -
false: Apply all available billable time and expense lines on the initialized invoice.
This fragment broadens the selection. Merge it into the existing configuration because the fragment is not a complete account configuration.
{ "models/invoice": { "prototype": { "applyCaseTimeExpenseOnly": false } } } -
-
Preserve other model mappings and settings. Changing the selection flag does not make an unbillable charge billable or add an unprocessed consumable to an invoice.
-
Validate the JSON in the Editor and check for repeated property names within each object. Only the last value of a repeated property name remains. Saving rejects invalid JSON. Valid JSON does not establish that downstream processing succeeds.
-
From the Save As list, click Save.
-
On the configuration list, clear the Inactive box for the replacement record and check the Inactive box for the previous active record.
-
Click Submit. Reopen the configuration page to confirm the intended record is active.
Item lines are still supplied by transforming an eligible sales order. This flag changes time and expense selection, not the source of item lines. For the separate rules that determine billable status, see Configuring FSM Billing Rules.
Configure the Case Button
To configure the case button:
-
Go to Field Service > Administration > Configuration. The Field Service Configuration page opens the active configuration record.
-
Record the name of the active configuration so that you can identify it when activating the replacement.
-
In Name, enter a unique name for the new version. Begin with the current product version, followed by the date in
YYYYMMDDformat and your initials. You can add a short description. -
Check the Inactive box to keep the replacement inactive during editing.
-
From the Save list, click Save As.
-
Click List. On the Field Service Configuration List page, check the Show Inactives box.
-
Find the new record and click Edit.
-
In the Editor, make the intended changes to the root
"views/case/invoice"object.To hide the button, merge this fragment at the root of the custom configuration:
{ "views/case/invoice": { "hidden": true } }To change its wording, add the required
label,confirm,success, orerrorproperties to the same view object. For example, this fragment changes the label and confirmation. The other view settings remain unchanged.{ "views/case/invoice": { "label": "Create Invoice", "confirm": "Create an invoice using the configured billing scope?" } } -
Use a single
"views/case/invoice"object when combining visibility and text changes. -
Validate the JSON in the Editor and check for repeated property names within each object. Only the last value of a repeated property name remains. Saving rejects invalid JSON. Valid JSON does not establish that downstream processing succeeds.
-
From the Save As list, click Save.
-
On the configuration list, clear the Inactive box for the replacement record and check the Inactive box for the previous active record.
-
Click Submit. Reopen the configuration page to confirm the intended record is active.
Setting hidden to false permits the button to appear when the Case qualifies. It does not force the button to appear on a Case without eligible invoice lines. Hiding the button does not change line selection, revoke permissions, or prevent invoicing through other methods.
Transaction and Account Dependencies
FSM uses the sales order selected in the Case's Transaction field only when it has no payment method and its status is Pending Billing or Pending Billing/Partially Fulfilled. Otherwise, FSM creates an invoice from Case details and available charges. Preserve the intended Case customer, Company, asset, PO number, and time zone.
Consumable processing can supply the case's sales order link. Generate Invoice selects the order through the case's Transaction field, so an order's Case body field alone does not select it. See FSM Consumable Processing for its separate processing behavior.
For an invoice created from Case details, the Consolidate Projects on Sales Transactions accounting preference affects the billing context. When you check this box, FSM does not supply the case's Company as the invoice project. When you clear this box, FSM supplies that Company as the project context. To review the preference, go to Setup > Accounting > Preferences > Accounting Preferences. On the Items/Transactions subtab, review the Consolidate Projects on Sales Transactions box. For the account-wide effects, see Using the Project Consolidation Preference.
With Multi-Subsidiary Customer enabled, FSM also supplies the Case's subsidiary when creating the invoice from Case details. Neither the selection flag nor button settings bypass NetSuite transaction validation.
When Invoicing Settings Apply
Button settings apply when the case form loads. FSM also evaluates the time and expense selection rules to determine whether Generate Invoice appears. FSM applies the same selection rules when processing the invoice request. Changes can therefore affect invoicing from existing Cases.
Button availability is evaluated separately from the case's Amount Unbilled calculation. Creating an invoice does not confirm that this amount has been recalculated. For details, see FSM Case Invoicing, FSM Case Unbilled Amount Calculation, and FSM Script Reference.
For performance measurement and data capture, see FSM Performance and Data Collection.
Changing the Invoicing Settings
Set applyCaseTimeExpenseOnly to true for the standard case-specific scope. Set the case invoice button's hidden property to false, or remove its custom override, to retain the standard button availability conditions. Removing custom label and message properties restores their inherited text.
Changes apply to subsequent form loads and invoice requests without reversing existing invoices or charges or canceling a request already in progress.
Related Topics
- FSM Configuration Reference
- FSM Record Model Configuration
- FSM NetSuite View Configuration
- Configuring FSM Billing Rules
- FSM Case Invoicing
-
FSM Case Unbilled Amount Calculation
-
FSM Consumable Processing
- FSM Script Reference