Buckets:
| 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.