def extract(start_date, end_date): """ Connect to the shopify API and pull orders for the given time period :param start_date: timestamp indicating beginning of time range :param end_date: timestamp indicating end of time range :return: list of JSON responses """ logger.info('Begin Extract') # Create session session_manager = Oauth2SessionManager( client_id=cfg['quickbooks_client_id'], client_secret=cfg['quickbooks_client_secret'], access_token=cfg['quickbooks_access_token'], base_url='https://developer.intuit.com/v2/OAuth2Playground/RedirectUrl' ) # Refresh token and save to config refresh = session_manager.refresh_access_tokens( cfg['quickbooks_refresh_token'], return_result=True) cfg['quickbooks_access_token'] = refresh['access_token'] cfg['quickbooks_refresh_token'] = refresh['refresh_token'] # Create client client = QuickBooks(sandbox=False, session_manager=session_manager, company_id=cfg['quickbooks_realm_id'], refresh_token=cfg['quickbooks_refresh_token'], minorversion=4) # Get total number of reports response = client.query(""" select count(*) from Invoice where TxnDate > '{}' and TxnDate < '{}' """.format(start_date, end_date)) num_invoices = response['QueryResponse']['totalCount'] orders = [] for page in range(round(num_invoices / 25)): response = client.query(""" select * from Invoice where TxnDate > '{}' and TxnDate < '{}' STARTPOSITION {} MAXRESULTS {} """.format(start_date, end_date, (page * 25 + 1), 25)) orders.append(response) logger.info('Data Extraction completed successfully') return orders
def extract(): """ Get all customers on file :return: list of JSON responses """ logger.info('Begin Extract') # Create session session_manager = Oauth2SessionManager( client_id=cfg['quickbooks_client_id'], client_secret=cfg['quickbooks_client_secret'], access_token=cfg['quickbooks_access_token'], base_url='https://developer.intuit.com/v2/OAuth2Playground/RedirectUrl' ) # Refresh token and save to config refresh = session_manager.refresh_access_tokens( cfg['quickbooks_refresh_token'], return_result=True) cfg['quickbooks_access_token'] = refresh['access_token'] cfg['quickbooks_refresh_token'] = refresh['refresh_token'] # Create client client = QuickBooks(sandbox=False, session_manager=session_manager, company_id=cfg['quickbooks_realm_id'], refresh_token=cfg['quickbooks_refresh_token'], minorversion=4) # Get total number of reports response = client.query(""" select count(*) from Customers """) num_customers = response['QueryResponse']['totalCount'] customers = [] for page in range(round(num_customers / 25)): response = client.query(""" select * from Customers STARTPOSITION {} MAXRESULTS {} """.format((page * 25 + 1), 25)) customers.append(response) logger.info('Data Extraction completed successfully') return customers
def querycutomized(cls, select, qb=None): """ :param select: QBO SQL query select statement :param qb: :return: Returns list """ if not qb: qb = QuickBooks() json_data = qb.query(select) return json_data