- Web Services
- Updated .NET and Node.js SDKs
- Platform Services
- General Ledger
- Project and Resource Management
- Construction Early Adopter Program
- Data Delivery Service
This release is scheduled to go live beginning on the evening of August 21, 2020.
Web Services
Look up fields and relationships for querying
A new lookup
function helps you get the most out of the query
function. The lookup
function lists all the fields and relationships for an object that can be used in the select
and/or filter
statements of your query
. You can use lookup
on both standard and custom objects (query
does not yet support custom objects though).
The following shows part of a response from a lookup
on the journal entry object, GLBATCH. Note the information provided for the fields, which includes valid values. Relationships that can be queried are listed after the fields.
<Type Name="GLBATCH" DocumentType="">
<Fields>
<Field>
<ID>RECORDNO</ID>
<LABEL>Record number</LABEL>
<DESCRIPTION>Record Number</DESCRIPTION>
<REQUIRED>false</REQUIRED>
<READONLY>false</READONLY>
<DATATYPE>INTEGER</DATATYPE>
<ISCUSTOM>false</ISCUSTOM>
</Field>
...
<Field>
<ID>STATE</ID>
<LABEL>State</LABEL>
<DESCRIPTION></DESCRIPTION>
<REQUIRED>true</REQUIRED>
<READONLY>false</READONLY>
<DATATYPE>TEXT</DATATYPE>
<VALIDVALUES>
<VALIDVALUE>Draft</VALIDVALUE>
<VALIDVALUE>Submitted</VALIDVALUE>
<VALIDVALUE>Partially Approved</VALIDVALUE>
<VALIDVALUE>Approved</VALIDVALUE>
<VALIDVALUE>Posted</VALIDVALUE>
<VALIDVALUE>Declined</VALIDVALUE>
<VALIDVALUE>Reversal pending</VALIDVALUE>
<VALIDVALUE>Reversed</VALIDVALUE>
</VALIDVALUES>
<ISCUSTOM>false</ISCUSTOM>
</Field>
...
</Fields>
...
<Relationships>
<Relationship>
<OBJECTPATH>JOURNAL</OBJECTPATH>
<OBJECTNAME>JOURNAL</OBJECTNAME>
<LABEL></LABEL>
<RELATIONSHIPTYPE>MANY2ONE</RELATIONSHIPTYPE>
<RELATEDBY>JOURNAL</RELATEDBY>
</Relationship>
...
</Relationships>
</Type>
The information in the response helps you compose a query such as:
<query>
<object>GLBATCH</object>
<select>
<field>RECORDNO</field>
<field>STATE</field>
</select>
<filter>
<equalto>
<field>STATE</field>
<value>Posted</value>
</equalto>
</filter>
</query>
Note that owned objects are not included in the lookup
output. For more information, see Building more complex queries.
Query into private entities
By default, in a multi-entity company, queries from the top-level entity do not access data in private entities. You can set the new showprivate
option to true
if you want to query data in private entities. For example:
<query>
<object>APBILL</object>
<select>
<field>RECORDNO</field>
<field>VENDORID</field>
</select>
<options>
<showprivate>true</showprivate>
</options>
</query>
ReadByName now supports names with commas
Previously, you could not use readByName
for a name that included a comma. To address this, a backslash escape character (\
) is now supported. For example, assume you have two contact IDs:
- Roberts, Bob
- Sarah Sharpes
The following returns both contacts:
<readByName>
<object>CONTACT</object>
<keys>Roberts\, Bob, Sara Sharpes</keys>
<fields>*</fields>
</readByName>
Updated .NET and Node.js SDKs
In 2020 Release 1, Sage Intacct released a new XML query
function that supports more robust, complex query statements than the legacy readByQuery
function. The new query provides more operators, lets you sort results, perform aggregate operations such as sum or average, and use a larger page size limit. Perhaps the most interesting new capability is that you can get the values for fields on related objects and/or use them in filters.
The Sage Intacct SDKs for .NET and Node.js have been updated to include this new query capability. (The PHP SDK already supported the new query.)
Note: The new query does not currently support custom objects.
New examples
New examples for the SDKs show you how to use the new query and take advantage of its powerful features. Building and running the new examples will update the versions of the Sage Intacct SDKs:
Platform Services
List Platform Services applications
A new object, PTAPPLICATION, provides information about each Platform Services application installed in your company.
For example, the following lists the record number and application name for each installed Platform Services application:
<query>
<object>PTAPPLICATION</object>
<select>
<field>RECORDNO</field>
<field>APPLICATIONNAME</field>
</select>
</query>
Data such as this is returned:
<PTAPPLICATION>
<RECORDNO>10014</RECORDNO>
<APPLICATIONNAME>T2 Additional features</APPLICATIONNAME>
</PTAPPLICATION>
<PTAPPLICATION>
<RECORDNO>10016</RECORDNO>
<APPLICATIONNAME>MCA My Conferencing App</APPLICATIONNAME>
</PTAPPLICATION>
For more information, see the functions that operate on PTAPPLICATION:
Visibility into installed components
Now, when a Platform application is published, all CSPs and onload scripts are included in the application wrapper. These components are also added to the Application Definition page when the application is installed. This reduces the risk of existing CSPs and onload scripts being accidentally deleted or overwritten in target companies.
More information about visibility into installed components is available in the Sage Intacct product help.
Trigger enhancements
We’ve simplified the process of creating a trigger that uses a document template, removing manual steps that took you out of your workflow. You no longer have to create and upload a document template prior to creating a trigger. See XML document templates in the Sage Intacct product help for details.
Problematic seed records now ignored
We fixed a potential issue with seed records in Platform applications. Before this release, you were able to install a Platform application that included seed records with problematic relationships. The problematic relationships used record numbers to specify related standard objects when they should have used the unique IDs. (Record numbers are not unique across companies.)
Starting with the current release, any seed records with these problematic relationships are ignored when installing Platform applications.
Important: Platform developers need to use the unique ID and not the record number when creating relationships in seed records.
General Ledger
Create budgets with details
You can now create a budget and its details all at once (batch) by creating a GLBUDGETHEADER object with owned GLBUDGETITEMS. You can also use update on GLBUDGETHEADER to add more budget details or modify existing budget details. A delete function lets you remove budget details.
For more information:
- List Budgets
- Get Budget
- Get Budget by ID
- Create Budget
- Update Budget
- Delete Budget
- List Budget Details
- Get Budget Detail
- Delete Budget Detail
Important: The legacy budget objects (BUDGETHEADER and GLBUDGET) will be migrated to the new object types (GLBUDGETHEADER and GLBUDGETITEMS) in a future release (planned to occur between the 2020-R3 and 2021-R2 releases). After migration, create, update, and delete, when used on the old objects, will return error messages explaining that you need to use the new object names.
Cross-entity account allocation
You can now use cross-entity and cross-currency dynamic account allocations. To do so, enable the functionality in the header of the allocation definition, then specify the exchange rate for the allocation target.
See the ALLOWALLOCATION
and EXCH_RATE_TYPE_ID
parameters on these functions:
Project and Resource Management
Timesheet approval by proxy
You can now approve or decline timesheets on behalf of a different user. To do this, first create a Web services only user in the UI and grant this user Project permissions that include List and API Proxy for approving timesheets.
Next, send a request using the Web services only ID for the login
, and provide the ID of a qualified user (in the approval chain) as the value for APPROVEDBY
or DECLINEBY
in the appropriate funtion.
For example, assume API_Proxy_1
is the Web services only user. The following request approves a timesheet on behalf of the user with ID jsmith
:
<request>
<control>
<senderid>jsmith_ws_sender</senderid>
<password>1234567</password>
...
</control>
<operation>
<authentication>
<login>
<userid>API_Proxy_1</userid>
<companyid>Johnson's Tractors</companyid>
<password>3456789</password>
</login>
</authentication>
<content>
<function controlid="x99876">
<approve>
<TIMESHEET>
<RECORDNO>1</RECORDNO>
<COMMENT>Approved for jsmith by API_Proxy_1</COMMENT>
<APPROVEDBY>jsmith</APPROVEDBY>
</TIMESHEET>
</approve>
</function>
</content>
</operation>
</request>
For more information:
Construction Early Adopter Program
Introducing project estimates
A project estimate enables you to track actual costs against estimated costs to determine whether your project is profitable. You can also create a project’s work breakdown structure (WBS) from an estimate.
After creating your project estimate, you use the project, task, and cost type dimensions to track actual costs across other applications, like AP, Purchasing, and the General Ledger.
For more information:
Override retainage percentage
You can now override the retainage percentage on entries of Purchasing or Order Entry transactions. For more information, see the new trx_amountretained
parameter on create and update functions for:
Data Delivery Service
We are improving the Data Delivery Service processing times by limiting the duplicate objects in the queue. Only one object of the same type is allowed in the queue or processing state at the same time. If you run a delivery with an object that is already in the queue, your delivery job is cancelled.
For more information, see Data Delivery Service in the Sage Intacct product help.