Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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