Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi ActiveX) Quickbooks Query an InvoiceDemonstrates how to query for invoices matching a SELECT statement via the Quickbooks REST API. For more information, see https://www.developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/invoice#query-an-invoice
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB; ... procedure TForm1.Button1Click(Sender: TObject); var jsonToken: TChilkatJsonObject; success: Integer; rest: TChilkatRest; bTls: Integer; port: Integer; bAutoReconnect: Integer; success: Integer; sbAuth: TChilkatStringBuilder; sbResponseBody: TChilkatStringBuilder; respStatusCode: Integer; json: TChilkatJsonObject; DocNumber: WideString; SyncToken: WideString; domain: WideString; Balance: WideString; BillAddrCity: WideString; BillAddrLine1: WideString; BillAddrPostalCode: WideString; BillAddrLat: WideString; BillAddrLong: WideString; BillAddrCountrySubDivisionCode: WideString; BillAddrId: WideString; TxnDate: WideString; TotalAmt: WideString; CustomerRefName: WideString; CustomerRefValue: WideString; ShipAddrCity: WideString; ShipAddrLine1: WideString; ShipAddrPostalCode: WideString; ShipAddrLat: WideString; ShipAddrLong: WideString; ShipAddrCountrySubDivisionCode: WideString; ShipAddrId: WideString; DueDate: WideString; PrintStatus: WideString; Deposit: Integer; sparse: Integer; EmailStatus: WideString; ApplyTaxAfterDiscount: Integer; Id: WideString; TxnTaxDetailTotalTax: Integer; MetaDataCreateTime: WideString; MetaDataLastUpdatedTime: WideString; j: Integer; count_j: Integer; LineNum: Integer; Amount: WideString; SalesItemLineDetailTaxCodeRefValue: WideString; SalesItemLineDetailItemRefName: WideString; SalesItemLineDetailItemRefValue: WideString; DetailType: WideString; DefinitionId: WideString; invType: WideString; Name: WideString; QueryResponseStartPosition: Integer; QueryResponseTotalCount: Integer; QueryResponseMaxResults: Integer; time: WideString; i: Integer; count_i: Integer; begin // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // First get our previously obtained OAuth2 access token. jsonToken := TChilkatJsonObject.Create(Self); success := jsonToken.LoadFile('qa_data/tokens/qb-access-token.json'); rest := TChilkatRest.Create(Self); bTls := 1; port := 443; bAutoReconnect := 1; success := rest.Connect('sandbox-quickbooks.api.intuit.com',port,bTls,bAutoReconnect); sbAuth := TChilkatStringBuilder.Create(Self); sbAuth.Append('Bearer '); sbAuth.Append(jsonToken.StringOf('access_token')); rest.Authorization := sbAuth.GetAsString(); // -------------------------------------------------------------------------- // Note: The above REST connection and setup of the AWS credentials // can be done once. After connecting, any number of REST calls can be made. // The "auto reconnect" property passed to rest.Connect indicates that if // the connection is lost, a REST method call will automatically reconnect // if needed. // -------------------------------------------------------------------------- // This is a GET request, so there should be no Content-Type // This line of code is just to make sure.. rest.RemoveHeader('Content-Type'); rest.AddHeader('Accept','application/json'); rest.AllowHeaderFolding := 0; // Add a SELECT statement rest.AddQueryParam('query','select * from Invoice where id = ''239'''); sbResponseBody := TChilkatStringBuilder.Create(Self); success := rest.FullRequestNoBodySb('GET','/v3/company/<realmID>/invoice',sbResponseBody.ControlInterface); if (success <> 1) then begin Memo1.Lines.Add(rest.LastErrorText); Exit; end; respStatusCode := rest.ResponseStatusCode; if (respStatusCode >= 400) then begin Memo1.Lines.Add('Response Status Code = ' + IntToStr(respStatusCode)); Memo1.Lines.Add('Response Header:'); Memo1.Lines.Add(rest.ResponseHeader); Memo1.Lines.Add('Response Body:'); Memo1.Lines.Add(sbResponseBody.GetAsString()); Exit; end; // Success is indicated by a 200 response status. Memo1.Lines.Add('response status code = ' + IntToStr(respStatusCode)); json := TChilkatJsonObject.Create(Self); json.LoadSb(sbResponseBody.ControlInterface); json.EmitCompact := 0; Memo1.Lines.Add(json.Emit()); // Sample output: // Use the this online tool to generate parsing code from sample JSON: // Generate Parsing Code from JSON // { // "QueryResponse": { // "startPosition": 1, // "totalCount": 1, // "maxResults": 1, // "Invoice": [ // { // "DocNumber": "1070", // "SyncToken": "0", // "domain": "QBO", // "Balance": 150.0, // "BillAddr": { // "City": "Bayshore", // "Line1": "4581 Finch St.", // "PostalCode": "94326", // "Lat": "INVALID", // "Long": "INVALID", // "CountrySubDivisionCode": "CA", // "Id": "2" // }, // "TxnDate": "2015-07-24", // "TotalAmt": 150.0, // "CustomerRef": { // "name": "Amy's Bird Sanctuary", // "value": "1" // }, // "ShipAddr": { // "City": "Bayshore", // "Line1": "4581 Finch St.", // "PostalCode": "94326", // "Lat": "INVALID", // "Long": "INVALID", // "CountrySubDivisionCode": "CA", // "Id": "109" // }, // "LinkedTxn": [], // "DueDate": "2015-08-23", // "PrintStatus": "NeedToPrint", // "Deposit": 0, // "sparse": false, // "EmailStatus": "NotSet", // "Line": [ // { // "LineNum": 1, // "Amount": 150.0, // "SalesItemLineDetail": { // "TaxCodeRef": { // "value": "NON" // }, // "ItemRef": { // "name": "Services", // "value": "1" // } // }, // "Id": "1", // "DetailType": "SalesItemLineDetail" // }, // { // "DetailType": "SubTotalLineDetail", // "Amount": 150.0, // "SubTotalLineDetail": {} // } // ], // "ApplyTaxAfterDiscount": false, // "CustomField": [ // { // "DefinitionId": "1", // "Type": "StringType", // "Name": "Crew #" // } // ], // "Id": "239", // "TxnTaxDetail": { // "TotalTax": 0 // }, // "MetaData": { // "CreateTime": "2015-07-24T10:35:08-07:00", // "LastUpdatedTime": "2015-07-24T10:35:08-07:00" // } // } // ] // }, // "time": "2015-07-24T10:38:50.01-07:00" // } QueryResponseStartPosition := json.IntOf('QueryResponse.startPosition'); QueryResponseTotalCount := json.IntOf('QueryResponse.totalCount'); QueryResponseMaxResults := json.IntOf('QueryResponse.maxResults'); time := json.StringOf('time'); i := 0; count_i := json.SizeOfArray('QueryResponse.Invoice'); while i < count_i do begin json.I := i; DocNumber := json.StringOf('QueryResponse.Invoice[i].DocNumber'); SyncToken := json.StringOf('QueryResponse.Invoice[i].SyncToken'); domain := json.StringOf('QueryResponse.Invoice[i].domain'); Balance := json.StringOf('QueryResponse.Invoice[i].Balance'); BillAddrCity := json.StringOf('QueryResponse.Invoice[i].BillAddr.City'); BillAddrLine1 := json.StringOf('QueryResponse.Invoice[i].BillAddr.Line1'); BillAddrPostalCode := json.StringOf('QueryResponse.Invoice[i].BillAddr.PostalCode'); BillAddrLat := json.StringOf('QueryResponse.Invoice[i].BillAddr.Lat'); BillAddrLong := json.StringOf('QueryResponse.Invoice[i].BillAddr.Long'); BillAddrCountrySubDivisionCode := json.StringOf('QueryResponse.Invoice[i].BillAddr.CountrySubDivisionCode'); BillAddrId := json.StringOf('QueryResponse.Invoice[i].BillAddr.Id'); TxnDate := json.StringOf('QueryResponse.Invoice[i].TxnDate'); TotalAmt := json.StringOf('QueryResponse.Invoice[i].TotalAmt'); CustomerRefName := json.StringOf('QueryResponse.Invoice[i].CustomerRef.name'); CustomerRefValue := json.StringOf('QueryResponse.Invoice[i].CustomerRef.value'); ShipAddrCity := json.StringOf('QueryResponse.Invoice[i].ShipAddr.City'); ShipAddrLine1 := json.StringOf('QueryResponse.Invoice[i].ShipAddr.Line1'); ShipAddrPostalCode := json.StringOf('QueryResponse.Invoice[i].ShipAddr.PostalCode'); ShipAddrLat := json.StringOf('QueryResponse.Invoice[i].ShipAddr.Lat'); ShipAddrLong := json.StringOf('QueryResponse.Invoice[i].ShipAddr.Long'); ShipAddrCountrySubDivisionCode := json.StringOf('QueryResponse.Invoice[i].ShipAddr.CountrySubDivisionCode'); ShipAddrId := json.StringOf('QueryResponse.Invoice[i].ShipAddr.Id'); DueDate := json.StringOf('QueryResponse.Invoice[i].DueDate'); PrintStatus := json.StringOf('QueryResponse.Invoice[i].PrintStatus'); Deposit := json.IntOf('QueryResponse.Invoice[i].Deposit'); sparse := json.BoolOf('QueryResponse.Invoice[i].sparse'); EmailStatus := json.StringOf('QueryResponse.Invoice[i].EmailStatus'); ApplyTaxAfterDiscount := json.BoolOf('QueryResponse.Invoice[i].ApplyTaxAfterDiscount'); Id := json.StringOf('QueryResponse.Invoice[i].Id'); TxnTaxDetailTotalTax := json.IntOf('QueryResponse.Invoice[i].TxnTaxDetail.TotalTax'); MetaDataCreateTime := json.StringOf('QueryResponse.Invoice[i].MetaData.CreateTime'); MetaDataLastUpdatedTime := json.StringOf('QueryResponse.Invoice[i].MetaData.LastUpdatedTime'); j := 0; count_j := json.SizeOfArray('QueryResponse.Invoice[i].LinkedTxn'); while j < count_j do begin json.J := j; j := j + 1; end; j := 0; count_j := json.SizeOfArray('QueryResponse.Invoice[i].Line'); while j < count_j do begin json.J := j; LineNum := json.IntOf('QueryResponse.Invoice[i].Line[j].LineNum'); Amount := json.StringOf('QueryResponse.Invoice[i].Line[j].Amount'); SalesItemLineDetailTaxCodeRefValue := json.StringOf('QueryResponse.Invoice[i].Line[j].SalesItemLineDetail.TaxCodeRef.value'); SalesItemLineDetailItemRefName := json.StringOf('QueryResponse.Invoice[i].Line[j].SalesItemLineDetail.ItemRef.name'); SalesItemLineDetailItemRefValue := json.StringOf('QueryResponse.Invoice[i].Line[j].SalesItemLineDetail.ItemRef.value'); Id := json.StringOf('QueryResponse.Invoice[i].Line[j].Id'); DetailType := json.StringOf('QueryResponse.Invoice[i].Line[j].DetailType'); j := j + 1; end; j := 0; count_j := json.SizeOfArray('QueryResponse.Invoice[i].CustomField'); while j < count_j do begin json.J := j; DefinitionId := json.StringOf('QueryResponse.Invoice[i].CustomField[j].DefinitionId'); invType := json.StringOf('QueryResponse.Invoice[i].CustomField[j].Type'); Name := json.StringOf('QueryResponse.Invoice[i].CustomField[j].Name'); j := j + 1; end; i := i + 1; end; end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.