Jamesbrendamour's picture
|
download
raw
5.29 kB
---
title: List AR Invoices - Sage Intacct SDK for PHP | Sage Intacct Developer
url: https://developer.intacct.com/tools/sdk-php/query-invoices/
---
# List AR Invoices - Sage Intacct SDK for PHP | Sage Intacct Developer
Overview
Getting Started
List AR Invoices
List Vendors (Legacy)
CRUD Customer
Custom Object Function
Troubleshooting
* Prerequisites
* Examine the code
* Run the example
* Extra credit
+ Try a different object
* What’s next?
---
This example uses the new Query function to list AR invoices based on attributes of associated customers.
In addition, the query uses a `sum` aggregate operator to provide information about how much a given customer owes across all invoices.
---
## Prerequisites
* You have downloaded or cloned the examples for the Sage Intacct SDK for PHP and run `composer update`.
* You successfully ran the getting started example—in particular, you set up the `.credentials.ini` file required by `bootstrap.php`.
* The company you are using has multiple AR invoices, and you have list and view permissions for AR invoices and customers.
---
## Examine the code
Look at the `try` block in `query.php`. Here we build up a query function that will list AR invoices based on attributes of associated customers. Specifically, we’ll look for AR invoices where the customer ID starts with `c` or `1`.
The code first constructs an `OrOperator`, seeking customer IDs that start with `c` or `1`.
```xml
$filter = new OrOperator([ ( new Filter('CUSTOMERID') )->like('c%'),
( new Filter('CUSTOMERID') )->like('1%') ]);
```
Next, the `OrderBuilder` sets a a descending sort order based on the value of `CUSTOMERID`.
```xml
$order = ( new OrderBuilder())->descending('CUSTOMERID')->getOrders();
```
The `SelectBuilder` chooses two fields to return, `CUSTOMERID` and `CUSTOMERNAME`, and includes the `sum` aggregate operator for `TOTALDUE`. When used in a Query of AR invoices, this adds the values of the `TOTALDUE` parameters across all invoices. When using aggregate functions, the `fields` in the select element are used to group the results. So, the results will be grouped by `CUSTOMERID` first.
```xml
$fields = ( new SelectBuilder() )->fields([ 'CUSTOMERID', 'CUSTOMERNAME' ])
->sum('TOTALDUE')
->getFields();
```
The `Query` constructor pulls the pieces together and specifies the target of the query, `ARINVOICE`. The constructor also specifies a case insensitive filter and a pagesize of 100:
```xml
$res = ( new Query() )->select($fields)
->from('ARINVOICE')
->filter($filter)
->caseInsensitive(true)
->pageSize('100')
->orderBy($order);
```
---
## Run the example
1. Run the `query.php` file in a terminal:
```xml
php query.php
```
2. Examine the output, which gives the total number of results and prints the first one.
The following sample result shows that YellowHammer (CUSTOMERID 10003) owes 15016.44 across all their invoices.
```xml
Success! Total number of results:2
First ARINVOICE result found:
'CUSTOMERID' => '10003'
'CUSTOMERNAME' => 'YellowHammer'
'SUM.TOTALDUE' => '15016.44'
See the log file (logs/intacct.html) for the complete list of results.
```
3. If you don’t get any results, comment out the filter in the `Query` constructor so that all ARINVOICE objects will be returned and rerun the the example.
```xml
// ->filter($filter)
```
4. Comment out the `sum` aggregate operator and run the query again.
```xml
// ->sum('TOTALDUE')
```
The number of results will increase because the AR invoices are not being categorized into groups according to the customer ID. Instead, each AR invoice is returned.
5. Uncomment the `sum` line and run the query again.
6. Open the generated `logs/intacct.html` file in an HTML browser and review the entries.
You should see information such as the following:
Note that the log file was created by the logger set up in the `bootstrap.php` in the project root
---
## Extra credit
### Try a different object
Modify `query.php` to perform a different query. For example, you might want to calculate the total amount due to a given vendor across all the bills.
1. In the `query.php` file, change all occurrences of `CUSTOMERID` and `CUSTOMERNAME` to `VENDORID` and `VENDORNAME`.
2. Similarly, change all occurrences of `ARINVOICE` to `APBILL`.
3. Run the file:
```xml
php query.php
```
4. Examine the output, which will look something like this:
```xml
Success! Total number of results: 12
First ARINVOICE result found:
'VENDORID' => '20000'
'VENDORNAME' => 'Acme Co.
'SUM.TOTALDUE' => '418138.31'
'COUNT.RECORDNO' => '18'
See the log file (logs/intacct.html) for the complete list of results.
```
5. (Optional) Update the the echo statements in the `if`/`else` blocks so that they are for APBILL instead of ARINVOICE objects.
---
## What’s next?
* Try an example that creates, reads, updates, and deletes a customer.
* Browse the reference documentation for the SDK.
Provide feedback

Xet Storage Details

Size:
5.29 kB
·
Xet hash:
1787e93849664e5ee170c516de30a1abb4c24248b4ce6c353e8f05ca164ae332

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