DataFlex
DataFlex
QuickBooks - Query Employees
See more QuickBooks Examples
Demonstrates how to query the QuickBooks employee data.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoJsonToken
Handle hoRest
Boolean iBAutoReconnect
Handle hoSbAuth
String sQuery
String sResponseBody
Handle hoJson
Handle hoDtime
Boolean iBLocalTime
Variant vDt
Handle hoDt
Integer iNumRecords
Integer i
Handle hoSTab
String sYear
String sMonth
String sDay
String sTemp1
Integer iTemp1
Integer iTemp2
Integer iTemp3
Integer iTemp4
Integer iTemp5
Boolean bTemp1
Move False To iSuccess
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// Get our previously obtained OAuth2 access token, which should contain JSON like this:
// {
// "expires_in": 3600,
// "x_refresh_token_expires_in": 8726400,
// "refresh_token": "L011546037639r ... 3vR2DrbOmg0Sdagw",
// "access_token": "eyJlbmMiOiJBMTI4Q0 ... oETJEMbeggg",
// "token_type": "bearer"
// }
Get Create (RefClass(cComChilkatJsonObject)) To hoJsonToken
If (Not(IsComObjectCreated(hoJsonToken))) Begin
Send CreateComObject of hoJsonToken
End
Get ComLoadFile Of hoJsonToken "qa_data/tokens/qb-access-token.json" To iSuccess
Get Create (RefClass(cComChilkatRest)) To hoRest
If (Not(IsComObjectCreated(hoRest))) Begin
Send CreateComObject of hoRest
End
// Connect using TLS.
// A single REST object, once connected, can be used for many Quickbooks REST API calls.
// The auto-reconnect indicates that if the already-established HTTPS connection is closed,
// then it will be automatically re-established as needed.
Move True To iBAutoReconnect
Get ComConnect Of hoRest "sandbox-quickbooks.api.intuit.com" 443 True iBAutoReconnect To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoRest To sTemp1
Showln sTemp1
Procedure_Return
End
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbAuth
If (Not(IsComObjectCreated(hoSbAuth))) Begin
Send CreateComObject of hoSbAuth
End
Get ComAppend Of hoSbAuth "Bearer " To iSuccess
Get ComStringOf Of hoJsonToken "access_token" To sTemp1
Get ComAppend Of hoSbAuth sTemp1 To iSuccess
Get ComGetAsString Of hoSbAuth To sTemp1
Set ComAuthorization Of hoRest To sTemp1
Get ComAddHeader Of hoRest "Accept" "application/json" To iSuccess
Set ComAllowHeaderFolding Of hoRest To False
Move "select * from Employee" To sQuery
Get ComAddQueryParam Of hoRest "query" sQuery To iSuccess
Get ComAddQueryParam Of hoRest "minorversion" "45" To iSuccess
// The company ID is 123146096291789
Get ComFullRequestNoBody Of hoRest "GET" "/v3/company/123146096291789/query" To sResponseBody
Get ComLastMethodSuccess Of hoRest To bTemp1
If (bTemp1 = False) Begin
Get ComLastErrorText Of hoRest To sTemp1
Showln sTemp1
Procedure_Return
End
// We should expect a 200 response if successful.
Get ComResponseStatusCode Of hoRest To iTemp1
If (iTemp1 <> 200) Begin
Showln "Request Header: "
Get ComLastRequestHeader Of hoRest To sTemp1
Showln sTemp1
Showln "----"
Get ComResponseStatusCode Of hoRest To iTemp1
Showln "Response StatusCode = " iTemp1
Get ComResponseStatusText Of hoRest To sTemp1
Showln "Response StatusLine: " sTemp1
Showln "Response Header:"
Get ComResponseHeader Of hoRest To sTemp1
Showln sTemp1
Showln sResponseBody
Procedure_Return
End
// Load the JSON response into a JSON object for parsing.
// A sample JSON response is shown below.
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
Get ComLoad Of hoJson sResponseBody To iSuccess
// Show the full JSON response.
Set ComEmitCompact Of hoJson To False
Get ComEmit Of hoJson To sTemp1
Showln sTemp1
// Use this online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON
// These will be used for parsing date/time strings..
Get Create (RefClass(cComCkDateTime)) To hoDtime
If (Not(IsComObjectCreated(hoDtime))) Begin
Send CreateComObject of hoDtime
End
Move True To iBLocalTime
Get Create (RefClass(cComChilkatDtObj)) To hoDt
If (Not(IsComObjectCreated(hoDt))) Begin
Send CreateComObject of hoDt
End
// Iterate over each account returned.
Get ComSizeOfArray Of hoJson "QueryResponse.Employee" To iNumRecords
Move 0 To i
While (i < iNumRecords)
Set ComI Of hoJson To i
Get ComStringOf Of hoJson "QueryResponse.Employee[i].DisplayName" To sTemp1
Showln "DisplayName: " sTemp1
Get ComStringOf Of hoJson "QueryResponse.Employee[i].Id" To sTemp1
Showln "Id: " sTemp1
Get ComBoolOf Of hoJson "QueryResponse.Employee[i].Active" To bTemp1
Showln "Active: " bTemp1
// Load the CreateTime into a CkDateTime...
Get ComStringOf Of hoJson "QueryResponse.Employee[i].MetaData.CreateTime" To sTemp1
Get ComSetFromTimestamp Of hoDtime sTemp1 To iSuccess
Get pvComObject of hoDt to vDt
Send ComToDtObj To hoDtime iBLocalTime vDt
Get ComMonth Of hoDt To iTemp1
Get ComDay Of hoDt To iTemp2
Get ComYear Of hoDt To iTemp3
Get ComHour Of hoDt To iTemp4
Get ComMinute Of hoDt To iTemp5
Showln iTemp1 "/" iTemp2 "/" iTemp3 " " iTemp4 ":" iTemp5
// The the birth year, month, and day, if it exists.
// The BirthDate contains something like this: "1985-09-11"
Get ComHasMember Of hoJson "QueryResponse.Employee[i].BirthDate" To bTemp1
If (bTemp1 = True) Begin
Get Create (RefClass(cComChilkatStringTable)) To hoSTab
If (Not(IsComObjectCreated(hoSTab))) Begin
Send CreateComObject of hoSTab
End
Get ComStringOf Of hoJson "QueryResponse.Employee[i].BirthDate" To sTemp1
Get ComSplitAndAppend Of hoSTab sTemp1 "-" True True To iSuccess
Get ComStringAt Of hoSTab 0 To sYear
Get ComStringAt Of hoSTab 1 To sMonth
Get ComStringAt Of hoSTab 2 To sDay
Showln "BirthDate: " sMonth "/" sDay "/" sYear
End
Showln "----"
Move (i + 1) To i
Loop
Showln "Success."
// ------------------------------------------------------
// The JSON response looks like this:
// {
// "QueryResponse": {
// "Employee": [
// {
// "BillableTime": false,
// "domain": "QBO",
// "sparse": false,
// "Id": "55",
// "SyncToken": "0",
// "MetaData": {
// "CreateTime": "2016-09-15T11:21:48-07:00",
// "LastUpdatedTime": "2016-09-15T11:21:48-07:00"
// },
// "GivenName": "Emily",
// "FamilyName": "Platt",
// "DisplayName": "Emily Platt",
// "PrintOnCheckName": "Emily Platt",
// "Active": true
// },
// {
// "BillableTime": false,
// "BirthDate": "1985-09-11",
// "HiredDate": "2016-08-17",
// "domain": "QBO",
// "sparse": false,
// "Id": "54",
// "SyncToken": "1",
// "MetaData": {
// "CreateTime": "2016-09-15T11:21:28-07:00",
// "LastUpdatedTime": "2016-09-15T11:46:26-07:00"
// },
// "GivenName": "John",
// "FamilyName": "Johnson",
// "DisplayName": "John Johnson",
// "PrintOnCheckName": "John Johnson",
// "Active": true,
// "PrimaryPhone": {
// "FreeFormNumber": "(540) 555-9645"
// }
// },
// {
// "SSN": "XXX-XX-XXXX",
// "PrimaryAddr": {
// "Id": "98",
// "Line1": "45 N. Elm Street",
// "City": "Middlefield",
// "CountrySubDivisionCode": "CA",
// "PostalCode": "93242"
// },
// "BillableTime": false,
// "domain": "QBO",
// "sparse": false,
// "Id": "60",
// "SyncToken": "0",
// "MetaData": {
// "CreateTime": "2016-10-25T14:08:18-07:00",
// "LastUpdatedTime": "2016-10-25T14:08:18-07:00"
// },
// "GivenName": "John",
// "FamilyName": "Meuller",
// "DisplayName": "John Meuller",
// "PrintOnCheckName": "John Meuller",
// "Active": true,
// "PrimaryPhone": {
// "FreeFormNumber": "408-525-1234"
// }
// }
// ],
// "startPosition": 1,
// "maxResults": 3
// },
// "time": "2016-10-25T14:18:38.487-07:00"
//
End_Procedure