class Activewave

Constants

LIST_ALL_INVOICES_QUERY
LIST_ALL_PRODUCTS_QUERY
LIST_BUSINESSES
LIST_CUSTOMERS_QUERY
LIST_USERS

Attributes

api_token[RW]
business_id[RW]

Public Class Methods

new(business_id, api_token) click to toggle source
# File lib/activewave.rb, line 10
def initialize(business_id, api_token)
  @business_id = business_id
  @api_token   = api_token

end

Public Instance Methods

create_customer(name, first_name, last_name, email=nil) click to toggle source
# File lib/activewave.rb, line 224
def create_customer(name, first_name, last_name, email=nil)
  create_a_customer(name, first_name, last_name, email)
end
create_expense_record(date, anchor_account_id, line_item_account_id, amount, desc) click to toggle source
# File lib/activewave.rb, line 237
def create_expense_record(date, anchor_account_id, line_item_account_id, amount, desc)
  create_a_transaction(date, anchor_account_id, line_item_account_id, amount, desc, "EXPENSES")
end
create_invoice(driver_id, product_id, status="SAVED") click to toggle source
# File lib/activewave.rb, line 228
def create_invoice(driver_id, product_id, status="SAVED")
  create_an_invoice(driver_id, product_id, status)
end
create_sales_record(date, anchor_account_id, line_item_account_id, amount, desc) click to toggle source
# File lib/activewave.rb, line 233
def create_sales_record(date, anchor_account_id, line_item_account_id, amount, desc)
  create_a_transaction(date, anchor_account_id, line_item_account_id, amount, desc)
end
current_user() click to toggle source
# File lib/activewave.rb, line 245
def current_user
  execute(LIST_USERS)
end
get_current_user() click to toggle source
# File lib/activewave.rb, line 253
def get_current_user
  execute(LIST_USERS)
end
get_user_details() click to toggle source
# File lib/activewave.rb, line 249
def get_user_details
  execute(LIST_USERS)
end
list_all_assets() click to toggle source
# File lib/activewave.rb, line 277
def list_all_assets
  list_assets_or_liabilities()
end
list_all_businesses() click to toggle source
# File lib/activewave.rb, line 273
def list_all_businesses
  execute(LIST_BUSINESSES)
end
list_all_customers() click to toggle source
# File lib/activewave.rb, line 265
def list_all_customers
  execute(LIST_CUSTOMERS_QUERY)
end
list_all_expenses() click to toggle source
# File lib/activewave.rb, line 293
def list_all_expenses
  list_assets_or_liabilities("EXPENSE")
end
list_all_income() click to toggle source
# File lib/activewave.rb, line 285
def list_all_income
  list_assets_or_liabilities("INCOME")
end
list_all_incomes() click to toggle source
# File lib/activewave.rb, line 281
def list_all_incomes
  list_assets_or_liabilities("INCOME")
end
list_all_invoices() click to toggle source
# File lib/activewave.rb, line 269
def list_all_invoices
  execute(LIST_ALL_INVOICES_QUERY)
end
list_all_products() click to toggle source
# File lib/activewave.rb, line 261
def list_all_products
  execute(LIST_ALL_PRODUCTS_QUERY)
end
list_incomes() click to toggle source
# File lib/activewave.rb, line 289
def list_incomes
  list_assets_or_liabilities("INCOME")
end
list_users() click to toggle source
# File lib/activewave.rb, line 241
def list_users
  execute(LIST_USERS)
end
user() click to toggle source
# File lib/activewave.rb, line 257
def user
  execute(LIST_USERS)
end

Private Instance Methods

create_a_customer(name, first_name, last_name, email) click to toggle source
# File lib/activewave.rb, line 313
def create_a_customer(name, first_name, last_name, email)
  @@request.body = "{\"query\":\"mutation ($input: CustomerCreateInput!) {\\n  customerCreate(input: $input) {\\n    didSucceed\\n    inputErrors {\\n      code\\n      message\\n      path\\n    }\\n    customer {\\n      id\\n      name\\n      firstName\\n      lastName\\n      email\\n      address {\\n        addressLine1\\n        addressLine2\\n        city\\n        province {\\n          code\\n          name\\n        }\\n        country {\\n          code\\n          name\\n        }\\n        postalCode\\n      }\\n      currency {\\n        code\\n      }\\n    }\\n  }\\n}\",\"variables\":{\"input\":{\"businessId\":\"#{@business_id}\",\"name\":\"#{name}\",\"firstName\":\"#{first_name}\",\"lastName\":\"#{last_name}\",\"email\":\"#{email}\",\"currency\":\"GHS\"}}}"
  response = @@https.request(@@request)
  JSON.parse(response.read_body)
end
create_a_transaction(date, anchor_account_id, line_item_account_id, amount, desc, type="SALES") click to toggle source
# File lib/activewave.rb, line 298
def create_a_transaction(date, anchor_account_id, line_item_account_id, amount, desc, type="SALES")
  action = {SALES: ["DEPOSIT", "INCREASE"], EXPENSES: ["WITHDRAWAL", "INCREASE"]}
  current_action = action[type.to_sym]
  @@request.body = "{\"query\":\"  mutation ($input:MoneyTransactionCreateInput!){\\n    moneyTransactionCreate(input:$input){\\n      didSucceed\\n      inputErrors{\\n        path\\n        message\\n        code\\n      }\\n      transaction{\\n        id\\n      }\\n    }\\n  }\",\"variables\":{\"input\":{\"businessId\":\"#{@business_id}\",\"externalId\":\"#{desc + Time.now.to_s}\",\"date\":\"#{date}\",\"description\":\"#{desc}\",\"anchor\":{\"accountId\":\"#{anchor_account_id}\",\"amount\":#{amount},\"direction\":\"#{current_action[0]}\"},\"lineItems\":[{\"accountId\":\"#{line_item_account_id}\",\"amount\":#{amount},\"balance\":\"#{current_action[1]}\"}]}}}"
  response = @@https.request(@@request)
  JSON.parse(response.read_body)
end
create_an_invoice(driver_id, product_id, status="SAVED") click to toggle source
# File lib/activewave.rb, line 306
def create_an_invoice(driver_id, product_id, status="SAVED")
  @@request.body = "{\"query\":\"mutation ($input: InvoiceCreateInput!) {\\n  invoiceCreate(input: $input) {\\n    didSucceed\\n    inputErrors {\\n      message\\n      code\\n      path\\n    }\\n    invoice {\\n      id\\n      createdAt\\n      modifiedAt\\n      pdfUrl\\n      viewUrl\\n      status\\n      title\\n      subhead\\n      invoiceNumber\\n      invoiceDate\\n      poNumber\\n      customer {\\n        id\\n        name\\n        # Can add additional customer fields here\\n      }\\n      currency {\\n        code\\n      }\\n      dueDate\\n      amountDue {\\n        value\\n        currency {\\n          symbol\\n        }\\n      }\\n      amountPaid {\\n        value\\n        currency {\\n          symbol\\n        }\\n      }\\n      taxTotal {\\n        value\\n        currency {\\n          symbol\\n        }\\n      }\\n      total {\\n        value\\n        currency {\\n          symbol\\n        }\\n      }\\n      exchangeRate\\n      footer\\n      memo\\n      disableCreditCardPayments\\n      disableBankPayments\\n      itemTitle\\n      unitTitle\\n      priceTitle\\n      amountTitle\\n      hideName\\n      hideDescription\\n      hideUnit\\n      hidePrice\\n      hideAmount\\n      items {\\n        product {\\n          id\\n          name\\n          # Can add additional product fields here\\n        }\\n        description\\n        quantity\\n        price\\n        subtotal {\\n          value\\n          currency {\\n            symbol\\n          }\\n        }\\n        total {\\n          value\\n          currency {\\n            symbol\\n          }\\n        }\\n        account {\\n          id\\n          name\\n          subtype {\\n            name\\n            value\\n          }\\n          # Can add additional account fields here\\n        }\\n        taxes {\\n          amount {\\n            value\\n          }\\n          salesTax {\\n            id\\n            name\\n            # Can add additional sales tax fields here\\n          }\\n        }\\n      }\\n      lastSentAt\\n      lastSentVia\\n      lastViewedAt\\n    }\\n  }\\n}\",\"variables\":{\"input\":{\"businessId\":\"#{@business_id}\",\"customerId\":\"#{driver_id}\",\"items\":[{\"productId\":\"#{product_id}\"}], \"status\":\"#{status}\"}}}"
  response = @@https.request(@@request)
  JSON.parse(response.read_body)
end
execute(query) click to toggle source
# File lib/activewave.rb, line 328
def execute(query)
  HTTParty.post(
    @@wave_api_url,
    headers: {
      'Content-Type'  => 'application/json',
      'Authorization' => "Bearer #{@api_token}"
    },
    body: {
      query: "{#{query}}"
    }.to_json
  ).parsed_response
end
list_assets_or_liabilities(filter="ASSET") click to toggle source
# File lib/activewave.rb, line 320
def list_assets_or_liabilities(filter="ASSET")
  @@request.body = "{\"query\":\"query ($businessId: ID!, $page: Int!, $pageSize: Int!) {\\n  business(id: $businessId) {\\n    id\\n    accounts(page: $page, pageSize: $pageSize, types: [#{filter}]) {\\n      pageInfo {\\n        currentPage\\n        totalPages\\n        totalCount\\n      }\\n      edges {\\n        node {\\n          id\\n          name\\n          description\\n          displayId\\n          type {\\n            name\\n            value\\n          }\\n          subtype {\\n            name\\n            value\\n          }\\n          normalBalanceType\\n          isArchived\\n        }\\n      }\\n    }\\n  }\\n}\",\"variables\":{\"businessId\":\"#{@business_id}\",\"page\":1,\"pageSize\":100}}"
  response = @@https.request(@@request)
  JSON.parse(response.read_body)
end