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 DLL) Xero Get Individual Employee Details (Payroll API Australia)Demonstrates how to get the detailed data for a particular employee. Note: This example requires Chilkat v9.5.0.64 or greater.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, StringBuilder, Rest, Xml; ... procedure TForm1.Button1Click(Sender: TObject); var rest: HCkRest; success: Boolean; sbPath: HCkStringBuilder; sbXml: HCkStringBuilder; bAutoTrim: Boolean; xml: HCkXml; recordCount: Integer; i: Integer; begin // Note: Requires Chilkat v9.5.0.64 or greater. // This requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. rest := CkRest_Create(); // Before sending REST API calls, the REST object needs to be // initialized for OAuth1. // See Xero 2-Legged OAuth1 Setup for sample code. // Assuming the REST object's OAuth1 authenticator is setup, and the initial // connection was made, we may now send REST HTTP requests.. sbPath := CkStringBuilder_Create(); CkStringBuilder_Append(sbPath,'/payroll.xro/1.0/Employees/'); // To get the detailed information for an individual employee, // add the EmployeeID to the path. CkStringBuilder_Append(sbPath,'056a9821-55b8-4c91-b5ce-a6ce2ab508ab'); // Get the data for the indicated employee. sbXml := CkStringBuilder_Create(); success := CkRest_FullRequestNoBodySb(rest,'GET',CkStringBuilder__getAsString(sbPath),sbXml); if (success <> True) then begin Memo1.Lines.Add(CkRest__lastErrorText(rest)); Exit; end; // A 200 response is expected for actual success. if (CkRest_getResponseStatusCode(rest) <> 200) then begin Memo1.Lines.Add(CkStringBuilder__getAsString(sbXml)); Exit; end; // Iterate over the employees and get some information.. bAutoTrim := False; xml := CkXml_Create(); CkXml_LoadSb(xml,sbXml,bAutoTrim); CkXml_SaveXml(xml,'qa_cache/xero_employee_lebron.xml'); // Use GetChild2 to navigate to the BankAccounts node. success := CkXml_FindChild2(xml,'Employees|Employee|BankAccounts'); if (success = False) then begin Memo1.Lines.Add('BankAccounts node not found.'); Exit; end; // Demonstrate how to iterate over each of the employee's Bank Accounts to get information // from each. (This same technique can be used for other parts of the XML.) recordCount := CkXml_getNumChildren(xml); Memo1.Lines.Add('Number of Bank Accounts = ' + IntToStr(recordCount)); i := 0; while i < recordCount do begin CkXml_putI(xml,i); Memo1.Lines.Add('AccountName: ' + CkXml__getChildContent(xml,'BankAccount|AccountName')); Memo1.Lines.Add('StatementText: ' + CkXml__getChildContent(xml,'BankAccount|StatementText')); Memo1.Lines.Add('AccountNumber: ' + CkXml__getChildContent(xml,'BankAccount|AccountNumber')); Memo1.Lines.Add('Amount: ' + CkXml__getChildContent(xml,'BankAccount|Amount')); Memo1.Lines.Add('----'); i := i + 1; end; // Return back to the root. CkXml_GetRoot2(xml); // The output looks like this: // Number of Bank Accounts = 2 // AccountName: James Lebron Savings // StatementText: Salary // AccountNumber: 345678 // Amount: 200.00 // ---- // AccountName: James Lebron Savings // StatementText: Salary // AccountNumber: 345678 // Amount: 200.00 // ---- // The employee XML looks like this: // <?xml version="1.0" encoding="utf-8" ?> // <Response xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> // <Id>6131dfc6-d11c-4fe0-aa1c-f7356c54754c</Id> // <Status>OK</Status> // <ProviderName>ChilkatAU</ProviderName> // <DateTimeUTC>2016-11-11T20:53:38.752419Z</DateTimeUTC> // <Employees> // <Employee> // <EmployeeID>056a9821-55b8-4c91-b5ce-a6ce2ab508ab</EmployeeID> // <FirstName>James</FirstName> // <LastName>Lebron</LastName> // <Status>ACTIVE</Status> // <Email>JL@madeup.email.com</Email> // <DateOfBirth>1982-03-15T00:00:00</DateOfBirth> // <Gender>M</Gender> // <HomeAddress> // <AddressLine1>123 Main St</AddressLine1> // <City>St. Kilda</City> // <Region>VIC</Region> // <PostalCode>3182</PostalCode> // <Country>AUSTRALIA</Country> // </HomeAddress> // <Phone>0400-000-123</Phone> // <Mobile> 408-230-9732</Mobile> // <StartDate>2015-09-01T00:00:00</StartDate> // <OrdinaryEarningsRateID>2c4fbb29-aa68-4a8d-bc05-3f6366f75227</OrdinaryEarningsRateID> // <PayrollCalendarID>4c08f63d-53af-4521-a8be-1d77fc0faf45</PayrollCalendarID> // <UpdatedDateUTC>2016-11-11T20:29:03</UpdatedDateUTC> // <IsAuthorisedToApproveLeave>false</IsAuthorisedToApproveLeave> // <TaxDeclaration> // <TaxFileNumber>999999811</TaxFileNumber> // <EmploymentBasis>FULLTIME</EmploymentBasis> // <AustralianResidentForTaxPurposes>true</AustralianResidentForTaxPurposes> // <TaxFreeThresholdClaimed>true</TaxFreeThresholdClaimed> // <HasHELPDebt>true</HasHELPDebt> // <HasSFSSDebt>false</HasSFSSDebt> // <EligibleToReceiveLeaveLoading>false</EligibleToReceiveLeaveLoading> // <UpdatedDateUTC>2016-11-11T20:29:03</UpdatedDateUTC> // <HasStudentStartupLoan>false</HasStudentStartupLoan> // </TaxDeclaration> // <BankAccounts> // <BankAccount> // <StatementText>Salary</StatementText> // <AccountName>James Lebron Savings</AccountName> // <BSB>122344</BSB> // <AccountNumber>345678</AccountNumber> // <Remainder>false</Remainder> // <Amount>200.00</Amount> // </BankAccount> // <BankAccount> // <StatementText>Salary</StatementText> // <AccountName>James Lebron</AccountName> // <BSB>123443</BSB> // <AccountNumber>2345678</AccountNumber> // <Remainder>true</Remainder> // </BankAccount> // </BankAccounts> // <OpeningBalances> // <OpeningBalanceDate>2016-02-01T00:00:00</OpeningBalanceDate> // <EarningsLines> // <EarningsLine> // <EarningsRateID>2c4fbb29-aa68-4a8d-bc05-3f6366f75227</EarningsRateID> // <Amount>13333.33</Amount> // </EarningsLine> // </EarningsLines> // <DeductionLines> // <DeductionLine> // <DeductionTypeID>2fd4c1e2-5bbb-43e4-a396-4c146f2f9b77</DeductionTypeID> // <Amount>40.00</Amount> // </DeductionLine> // </DeductionLines> // <Tax>4000.00</Tax> // <SuperLines> // <SuperLine> // <SuperMembershipID>9e9cc70d-1d6c-4ce5-a402-2c4fe80c02b0</SuperMembershipID> // <ContributionType>SGC</ContributionType> // <Amount>3999.99</Amount> // </SuperLine> // </SuperLines> // <ReimbursementLines /> // <LeaveLines> // <LeaveLine> // <LeaveTypeID>8aa43544-f7f2-4b7a-9ddf-0a9c831c4679</LeaveTypeID> // <NumberOfUnits>100.0000</NumberOfUnits> // </LeaveLine> // <LeaveLine> // <LeaveTypeID>8874e0c0-d1d8-4635-a359-c09f6cf1c747</LeaveTypeID> // <NumberOfUnits>40.0000</NumberOfUnits> // </LeaveLine> // </LeaveLines> // </OpeningBalances> // <PayTemplate> // <EarningsLines> // <EarningsLine> // <EarningsRateID>2c4fbb29-aa68-4a8d-bc05-3f6366f75227</EarningsRateID> // <CalculationType>ANNUALSALARY</CalculationType> // <AnnualSalary>40000.00</AnnualSalary> // <NumberOfUnitsPerWeek>38.0000</NumberOfUnitsPerWeek> // </EarningsLine> // </EarningsLines> // <DeductionLines> // <DeductionLine> // <DeductionTypeID>2fd4c1e2-5bbb-43e4-a396-4c146f2f9b77</DeductionTypeID> // <CalculationType>FIXEDAMOUNT</CalculationType> // <Amount>10.00</Amount> // </DeductionLine> // </DeductionLines> // <SuperLines> // <SuperLine> // <SuperMembershipID>9e9cc70d-1d6c-4ce5-a402-2c4fe80c02b0</SuperMembershipID> // <ContributionType>SGC</ContributionType> // <CalculationType>PERCENTAGEOFEARNINGS</CalculationType> // <MinimumMonthlyEarnings>450.00</MinimumMonthlyEarnings> // <ExpenseAccountCode>478</ExpenseAccountCode> // <LiabilityAccountCode>826</LiabilityAccountCode> // <Percentage>9.0000</Percentage> // </SuperLine> // <SuperLine> // <SuperMembershipID>9e9cc70d-1d6c-4ce5-a402-2c4fe80c02b0</SuperMembershipID> // <ContributionType>SALARYSACRIFICE</ContributionType> // <CalculationType>FIXEDAMOUNT</CalculationType> // <ExpenseAccountCode>478</ExpenseAccountCode> // <LiabilityAccountCode>826</LiabilityAccountCode> // <Amount>50.0000</Amount> // </SuperLine> // </SuperLines> // <ReimbursementLines /> // <LeaveLines> // <LeaveLine> // <LeaveTypeID>8aa43544-f7f2-4b7a-9ddf-0a9c831c4679</LeaveTypeID> // <CalculationType>FIXEDAMOUNTEACHPERIOD</CalculationType> // <AnnualNumberOfUnits>152.0000</AnnualNumberOfUnits> // </LeaveLine> // <LeaveLine> // <LeaveTypeID>8874e0c0-d1d8-4635-a359-c09f6cf1c747</LeaveTypeID> // <CalculationType>FIXEDAMOUNTEACHPERIOD</CalculationType> // <AnnualNumberOfUnits>76.0000</AnnualNumberOfUnits> // </LeaveLine> // </LeaveLines> // </PayTemplate> // <SuperMemberships> // <SuperMembership> // <SuperMembershipID>9e9cc70d-1d6c-4ce5-a402-2c4fe80c02b0</SuperMembershipID> // <SuperFundID>2bab4eeb-6f3c-4c66-a1f0-52fcb81f412a</SuperFundID> // <EmployeeNumber>1234</EmployeeNumber> // </SuperMembership> // </SuperMemberships> // <LeaveBalances> // <LeaveBalance> // <LeaveName>Annual Leave</LeaveName> // <LeaveTypeID>8aa43544-f7f2-4b7a-9ddf-0a9c831c4679</LeaveTypeID> // <NumberOfUnits>88.8602</NumberOfUnits> // <TypeOfUnits>Hours</TypeOfUnits> // </LeaveBalance> // <LeaveBalance> // <LeaveName>Personal/Carer's Leave</LeaveName> // <LeaveTypeID>8874e0c0-d1d8-4635-a359-c09f6cf1c747</LeaveTypeID> // <NumberOfUnits>45.8302</NumberOfUnits> // <TypeOfUnits>Hours</TypeOfUnits> // </LeaveBalance> // </LeaveBalances> // </Employee> // </Employees> // </Response> // // CkRest_Dispose(rest); CkStringBuilder_Dispose(sbPath); CkStringBuilder_Dispose(sbXml); CkXml_Dispose(xml); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.