Package: sageintacctsdk
Sage Intacct SDKPython SDK to access Sage Intacct web servicesInstallationThis project requiresPython 3+andRequestslibrary (pip install requests).Download this project and use it (copy it in your project, etc).Install it frompip.$ pip install sageintacctsdkUsageTo use this SDK you'll need these Sage Intacct credentials used for authentication:sender ID,sender password,user ID,company IDanduser password.This SDK is very easy to use.First you'll need to create a connection using the main class SageIntacctSDK.fromsageintacctsdkimportSageIntacctSDKconnection=SageIntacctSDK(sender_id='<YOUR SENDER ID>',sender_password='<YOUR SENDER PASSWORD>',user_id='<YOUR USER ID>',company_id='<YOUR COMPANY ID>',user_password='<YOUR USER PASSWORD>')After that you'll be able to access any of the 28 API classes: accounts, ap_payments, ar_invoices, ar_payments, attachments, bills, charge_card_accounts, charge_card_transactions, checking_accounts, classes, contacts, customers, departments, employees, expense_payment_types, expense_reports, expense_types, gl_detail, items, locations, order_entry_transactions, projects, reimbursements, revenue_recognition_schedules, revenue_recognition_schedule_entries, savings_accounts, tasks and vendors."""USAGE: <SageIntacctSDK INSTANCE>.<API_NAME>.<API_METHOD>(<PARAMETERS>)"""# Create a new Expense Report of 3800 USD, spent at 2019-28-11 and from employee with employee id E101data={'employeeid':'E101','datecreated':{'year':2019,'month':11,'day':28},'state':'Approved','description':'Team lunch','expenses':{'expense':[{'expensetype':'Food','amount':3800,'expensedate':{'year':2019,'month':11,'day':28}}]}}response=connection.employees.post(data)# Use get_all methods to get all objects of certain typesresponse=connection.accounts.get_all()# Get details of Employee with EMPLOYEEID E101response=connection.employees.get(field='EMPLOYEEID',value='E101')Advanced QueriesSeveral methods of querying the Sage Inacct API exists within the SDK.  <get_by_query> allows you to specify multiple
critera using textual mathematical operators and logical filters.Arguments are passed to and_filter, or_filter, or both.  The and_filter is the default operator to pass filters to.
For example if you want to pass a single operator without a logical context you would pass it to and_filter.You must pass multiple operators to or_filter.You may also format your own filter payload in accordance with API documentation and pass to the function.See query structures here:https://developer.intacct.com/web-services/queries/Warning: Operators can only be used once in a given logical context. and_filter cannot accept multiple 'equalto' operators
for example.  This is an API limitation.## Returns Data Structure of object to perform query on.  Helpful to identify field keys.print(connection.gl_detail.get_lookup())# Returns records between specified datesquery_tuple_between=[('between','ENTRY_DATE',['01/01/2020','12/31/2020'])]fields=['RECORDNO','ENTRY_DATE','BATCH_NO','ACCOUNTNO','DEBITAMOUNT']response=connection.gl_detail.get_by_query(fields=fields,and_filter=query_tuple_between)# Returns records between specified accountsquery_tuple_multiple=[('greaterthan','ACOUNTNO','6000'),('lessthan','ACCOUNTNO','7000')]response=connection.gl_detail.get_by_query(fields=fields,and_filter=query_tuple_multiple)# Returns records that match listin_list=['1000','1100','1200']query_tuple_in=[('in','ACCOUNTNO',in_list)]response=connection.gl_detail.get_by_query(fields=fields,and_filter=query_tuple_in)payload={'and':{'equalto':{'field':'ACCOUNTNO','value':'1000'}}}response=connnection.gl_detail.get_by_query(filter_payload=payload)See more details about the usage into the wiki pages of this project.LicenseThis project is licensed under the MIT License - see theLICENSEfile for details