Jamesbrendamour/sage-dev-docs / tools /sdk-node-js /custom-object-function.md
Jamesbrendamour's picture
|
download
raw
4.44 kB
---
title: Custom Object Function - Sage Intacct SDK for Node.js | Sage Intacct Developer
url: https://developer.intacct.com/tools/sdk-node-js/custom-object-function/
---
# Custom Object Function - Sage Intacct SDK for Node.js | Sage Intacct Developer
Overview
Getting Started
List AR Invoices
List Vendors (Legacy)
CRUD Customer
Custom Object Function
* Prerequisites
* Set up
* Run the example
* Extra credit
+ Get the record by ID
* Delete the record
* What’s next?
---
The example shows you how to:
* Create a class that extends `AbstractFunction` and implements `IFunction`.
* Implement the `writeXml` function to generate XML for the API function for the request.
* Call execute on a client and pass in the API function instance to send the request to the gateway.
---
## Prerequisites
* You have downloaded or cloned the Sage Intacct SDK for Node.js examples.
* You successfully ran the getting started example—in particular, you set up the `credentials.ini` file required by `bootstrap.js`.
* The company you are using has Platform Services enabled and an object definition for your custom object (the example uses `test_object`).
* The user you are using has add, edit, delete, list, and view permissions for the custom object.
---
## Set up
1. Open `TestObject.js` and note how `AbstractTestObject` extends `Intacct/SDK/Functions/AbstractFunction`.
`AbstractFunction` is a helper class provided mainly to generate random control IDs. `AbstractFunction` implements `Intacct/SDK/Functions/IFunction`, and any class whose instances will be executed by a client must implement `IFunction`. If using `executeBatch`, the parameter must be an `IFunction[]` array.
2. In `TestObject.js` note how `TestObjectCreate` extends `AbstractTestObject`.
The `IFunction` interface requires that the class implement the `writeXml(xml)` function. This implementation is where you provide the XML that will be processed at the gateway endpoint.
3. Back in the `AbstractTestObject` class, replace `test_object` with the integration name for your custom object.
```xml
this.integrationName = "test_object";
```
---
## Run the example
1. Run the `custom-object-function.js` file:
```xml
node custom-object-function.js
```
2. Observe the terminal output, which should look similar to this:
```xml
Created record ID 10153
```
Note the record ID, which will be used to delete the object later.
3. Open the generated `logs/intacct.log` file in a text editor and review the entries.
The file provides info and debug entries. The SDK provides a debug entry for each HTTP request/response (with the Sage Intacct endpoint).
Note that the log file was created by the logger set in the client config.
---
## Extra credit
### Get the record by ID
1. Update `custom-object-function.js` to execute a `Read` function using the record ID returned by `TestObjectCreate` as the key. For example:
```xml
let read = new IA.Functions.Common.Read();
read.objectName = "test_object";
read.keys = [
10174,
];
const readResponse = await client.execute(read);
const readResult = readResponse.getResult();
const recordNo = parseInt(readResult.data[0]["id"]);
console.log("Read record ID " + recordNo.toString());
```
## Delete the record
1. Create a `TestObjectDelete` class in `TestObject.js` and execute an instance of it that uses the same record ID returned in the `TestObjectCreate` result.
If you need help, see the example class.
```xml
class TestObjectDelete extends AbstractTestObject {
constructor(recordId) {
super();
this.id = recordId;
}
writeXml(xml) {
xml.writeStartElement("function");
xml.writeAttribute("controlid", this.controlId, true);
xml.writeStartElement("delete");
xml.writeElement("object", this.integrationName, true);
xml.writeElement("keys", this.id, true);
xml.writeEndElement(); // delete
xml.writeEndElement(); // function
}
}
exports.TestObjectDelete = TestObjectDelete;
```
---
## What’s next?
For more complex examples, you can use the functions in the SDK as models. For example, `AbstractBill` extends `AbstractFunction`, then `BillCreate` and `BillDelete` extend `AbstractBill` and write the XML for creating or deleting bills.
Provide feedback

Xet Storage Details

Size:
4.44 kB
·
Xet hash:
0de3b3edf1d9117c50f564b80fe07c4ca2bf5219a7908907036c7386548bf86d

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.