Jamesbrendamour's picture
|
download
raw
9.66 kB
---
title: Other Script Examples | Sage Intacct Developer
url: https://developer.intacct.com/platform-services/other-script-examples/
---
# Other Script Examples | Sage Intacct Developer
Overview
AJAX Gateway
AJAX SDK for JavaScript
Page Script Walkthrough
Application Tutorial
Other Script Examples
Common JavaScript Errors
Trigger Examples
* Pick list
* GL Balance
* Pick List of Purchasing Transaction Types
* User Restrictions loaded into DataTables
---
This topic provides additional script examples for useful tasks.
---
## Pick list
This example creates a pick list for choosing which customers to display on the page.
The callback variable is set to the function to be performed on the returned data. The `read` call on the `CUSTOMER` object requests the `NAME` field in JSON format. Finally, the `select` field provides a display point in the HTML.
```xml
<script>
var callback = function (responseText) {
// Parse the response into a JavaScript object
var CUSTOMER = JSON.parse(responseText);
// Sort the array of results into alphabetical order by NAME
CUSTOMER.sort((function (index) {
return function (a, b) {
return (a[index] === b[index] ? 0 : (a[index] < b[index] ? -1 : 1));
};
})('NAME')); // NAME is the sort by field name
// Options variable to receive pick list values
var options = '<option>-- Select Customer --</option>';
// Add an option element for each customer record
for (var i = 0; i < CUSTOMER.length; i++) {
options += '<option value="' + CUSTOMER[i].NAME + '">' + CUSTOMER[i].NAME + '</option>';
}
// Load options in the 'pick_customer' element
document.getElementById('pick_customer').innerHTML = options;
};
var s = new API_Session();
s.ip_read("CUSTOMER", "NAME", "", "json", "", callback);
</script>
<select name="select" size="1" id="pick_customer"></select>
```
---
## GL Balance
This example returns a table for the GL Balance by Location for the account specified in the code. It is assumed there is a current reporting period with naming such as “Month Ended April 2014”.
```xml
<style>
#scriptSection fieldset {
padding: 30px;
border: 1px solid #EEEEEE;
}
#scriptSection fieldset legend {
font-weight: bold;
padding-left: 20px;
padding-right: 20px;
}
#scriptSection fieldset table td, #scriptSection fieldset table th {
border-left: 1px solid #EEEEEE;
padding-left: 20px;
padding-right: 20px;
}
#scriptSection fieldset table th {
border-bottom: 1px solid #EEEEEE;
}
#scriptSection fieldset table tr:hover td {
background-color: #fEf98D;
}
</style>
<div id="scriptSection">
<fieldset>
<legend>Current Petty Cash Balance</legend>
<div id="arGLBalanceHolder">
<table>
<thead>
<tr>
<td>Loading ...</td>
</tr>
</thead>
</table>
</div>
</fieldset>
<script>
jq(document).ready(function () {
// Fetch and display the GL account balance
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var d = new Date();
var month = monthNames[d.getMonth()];
var year = d.getFullYear();
var reportingPeriod = 'Month Ended ' + month + ' ' + year;
var account = 1010;
var api = new API_Session();
var callback = function (data) {
var holder = jq('div#arGLBalanceHolder');
data = JSON.parse(data);
if (data.length == 0) {
holder.html('No data');
return;
}
var tableContent = '<thead><tr><th>Account</th><th>Location</th><th>Amount</th></tr></thead><tbody>';
for (var r = 0; r < data.length; r++) {
tableContent += '<tr>';
tableContent += '<td>' + data[r].ACCOUNTNO + '--' + data[r].ACCOUNTTITLE + '</td>';
tableContent += '<td>' + data[r].LOCATIONID + '</td>';
tableContent += '<td>' + Number(data[r].ENDBAL).toFixed(2) + '</td>';
tableContent += '</tr>';
}
tableContent += '</tbody>';
holder.html('<table>' + tableContent + '</table></br><p>(For ' + reportingPeriod + ')</p>');
};
api.ip_readByQuery(
'glaccountbalance',
'ACCOUNTNO,ACCOUNTTITLE,ENDBAL,LOCATIONID',
"period = '" + reportingPeriod + "' AND accountno = '" + account + "'",
10,
'json',
callback
);
});
</script>
</div>
```
---
## Pick List of Purchasing Transaction Types
```xml
<script>
var callback = function (responseText) {
var xml = responseText,
xmlDoc = jq.parseXML(xml),
$xml = jq(xmlDoc);
var select = jq('#pick_potransaction');
$xml.find("type[typename='PODOCUMENT']").each(function () {
var value = jq(this).text();
if (value !== 'Purchasing Document') {
select.append("<option value='" + value + "'>" + value + "</option>");
}
});
};
var s = new API_Session();
s.ip_inspect("*", "1", callback); // Returned as XML not JSON
</script>
<select name="select" size="1" id="pick_potransaction"></select>
```
---
## User Restrictions loaded into DataTables
This example loads the first 1000 User Restrictions in the DataTables plugin.
You should place this script component on a custom Generic Menu Type page. Don’t forget to add `https://cdn.datatables.net` to the page’s Content Security Policy script, image, and style directives.
```xml
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.css">
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>
<table id="userRestrictions" class="display" width="100%"></table>
<script>
jq(document).ready(function () {
var callback = function (responseText) {
var xmlDoc = jq.parseXML(responseText),
$xml = jq(xmlDoc);
dataSet = [];
$xml.find("userrestriction").each(function() {
var locations = [];
jq(this).children("LOCATIONS").children("LOCATION").each(function() {
var locationId = jq(this).children("LOCATIONID").text();
var locationName = jq(this).children("LOCATIONNAME").text();
locations.push(locationId + "--" + locationName);
});
var departments = [];
jq(this).children("DEPARTMENTS").children("DEPARTMENT").each(function() {
var departmentId = jq(this).children("DEPARTMENTID").text();
var departmentName = jq(this).children("DEPARTMENTNAME").text();
departments.push(departmentId + "--" + departmentName);
});
var row = {
"userId": jq(this).children("LOGINID").text(),
"firstName": jq(this).children("FIRSTNAME").text(),
"lastName": jq(this).children("LASTNAME").text(),
"admin": jq(this).children("ADMIN").text(),
"userType": jq(this).children("USERTYPE").text(),
"status": jq(this).children("STATUS").text(),
"unrestricted": jq(this).children("UNRESTRICTED").text(),
"locations": locations,
"departments": departments,
};
dataSet.push(row);
});
jq("#userRestrictions").DataTable({
data: dataSet,
paging: false,
columns: [
{
data: "userId",
title: "User ID",
render: jq.fn.dataTable.render.text(),
},
{
data: "firstName",
title: "First name",
render: jq.fn.dataTable.render.text(),
},
{
data: "lastName",
title: "Last name",
render: jq.fn.dataTable.render.text(),
},
{
data: "admin",
title: "Admin privileges",
render: jq.fn.dataTable.render.text(),
},
{
data: "userType",
title: "User type",
render: jq.fn.dataTable.render.text(),
},
{
data: "status",
title: "Status",
render: jq.fn.dataTable.render.text(),
},
{
data: "unrestricted",
title: "Unrestricted",
render: jq.fn.dataTable.render.text(),
},
{
data: "locations[<br>]",
title: "Entities",
},
{
data: "departments[<br>]",
title: "Departments",
},
],
});
};
var ia = new API_Session();
ia.ip_readByQuery(
"USERRESTRICTION",
"*",
"",
1000,
"xml",
callback
);
});
</script>
```
Provide feedback

Xet Storage Details

Size:
9.66 kB
·
Xet hash:
6a75b53ff8b0e768f9c86bc2b15bbf1e4d47f32d3f785971efeb97fb3111d747

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