class Xsys::Api

Public Class Methods

add_background_job_event(code, event_description) click to toggle source
# File lib/xsys/api.rb, line 23
def self.add_background_job_event(code, event_description)
  params = { description: event_description }
  Model::JobEvent.new(post_request("/background_jobs/#{code}/job_events", params)[:body])
end
calculate_company_taxes(company_code, items) click to toggle source
# File lib/xsys/api.rb, line 224
def self.calculate_company_taxes(company_code, items)
  attrs = {
    company_code: company_code,
    items: items.to_json
  }

  Model::CompanyTaxCalculation.new(get_request('/companies/calculate_taxes', attrs)[:body])
end
calculate_corporation_taxes(cuit, items) click to toggle source
# File lib/xsys/api.rb, line 243
def self.calculate_corporation_taxes(cuit, items)
  response = post_request('/corporations/taxes_calculation', {
    cuit: cuit,
    items: items.to_json
  })

  Model::CorporationTaxesCalculation.new(response[:body])
end
cancel_stock_reserve(stock_reserve_code, user_login, cancellation_reason=nil) click to toggle source
# File lib/xsys/api.rb, line 188
def self.cancel_stock_reserve(stock_reserve_code, user_login, cancellation_reason=nil)
  response = put_request("/stock_reserves/#{stock_reserve_code}/cancel", {
    user_login: user_login,
    cancellation_reason: cancellation_reason
  })

  if response[:status_code] == 200
    Model::StockReserve.new(response[:body])
  else
    false
  end
end
configure(args={}) click to toggle source
# File lib/xsys/api.rb, line 3
def self.configure(args={})
  if args[:endpoint].present?
    @endpoint = "#{args[:endpoint]}/api"
  else
    @endpoint = "https://gestion.lhconfort.com.ar/api"
  end

  @access_token = args[:access_token]

  self
end
create_stock_reserve(attrs={}) click to toggle source
# File lib/xsys/api.rb, line 160
def self.create_stock_reserve(attrs={})
  response = post_request('/stock_reserves', attrs)

  if response[:status_code] == 200
    if response[:body] == 'null'
      false
    else
      Model::StockReserve.new(response[:body])
    end
  else
    false
  end
end
defer_stock_reserve(stock_reserve_code, expiration_date, user_login) click to toggle source
# File lib/xsys/api.rb, line 201
def self.defer_stock_reserve(stock_reserve_code, expiration_date, user_login)
  response = put_request("/stock_reserves/#{stock_reserve_code}/defer", {
    expiration_date: expiration_date,
    user_login: user_login
  })

  if response[:status_code] == 200
    Model::StockReserve.new(response[:body])
  else
    false
  end
end
get_background_job(code) click to toggle source
# File lib/xsys/api.rb, line 15
def self.get_background_job(code)
  Model::BackgroundJob.new(get_request("/background_jobs/#{code}")[:body])
end
get_cash_register_period(code) click to toggle source
# File lib/xsys/api.rb, line 257
def self.get_cash_register_period(code)
  response = get_request("/cash_register_periods/#{code}")

  if response[:body].blank?
    nil
  else
    Model::CashRegisterPeriod.new(response[:body])
  end
end
get_cash_register_periods(filters={}) click to toggle source
# File lib/xsys/api.rb, line 252
def self.get_cash_register_periods(filters={})
  response = get_request('/cash_register_periods', filters)
  response[:body].map { |x| Model::CashRegisterPeriod.new(x) }
end
get_company(code) click to toggle source
# File lib/xsys/api.rb, line 214
def self.get_company(code)
  result = get_request("/companies/#{code}")[:body]

  if result == 'null'
    nil
  else
    Model::Company.new(result)
  end
end
get_corporation(cuit) click to toggle source
# File lib/xsys/api.rb, line 233
def self.get_corporation(cuit)
  result = get_request("/corporations/#{cuit}")[:body]

  if result.blank?
    nil
  else
    Model::Corporation.new(result)
  end
end
get_invoice_kind(code) click to toggle source
# File lib/xsys/api.rb, line 272
def self.get_invoice_kind(code)
  response = get_request("/invoice_kinds/#{code}")

  if response[:body].blank?
    nil
  else
    Model::InvoiceKind.new(response[:body])
  end
end
get_invoice_kinds(filters={}) click to toggle source
# File lib/xsys/api.rb, line 267
def self.get_invoice_kinds(filters={})
  response = get_request('/invoice_kinds', filters)
  response[:body].map { |x| Model::InvoiceKind.new(x) }
end
get_locality(locality_code) click to toggle source
# File lib/xsys/api.rb, line 302
def self.get_locality(locality_code)
  response = get_request("/localities/#{locality_code}")

  if response[:body].blank?
    nil
  else
    Model::Locality.new(response[:body])
  end
end
get_price_lists(filters={}) click to toggle source
# File lib/xsys/api.rb, line 28
def self.get_price_lists(filters={})
  get_request('/price_lists')[:body].map { |r| Model::PriceList.new(r) }
end
get_product(product_id) click to toggle source
# File lib/xsys/api.rb, line 51
def self.get_product(product_id)
  response_body = get_request("/products/#{product_id}")[:body]

  if response_body == 'null'
    nil
  else
    Model::Product.new(response_body)
  end
end
get_product_categories(filters={}) click to toggle source
# File lib/xsys/api.rb, line 78
def self.get_product_categories(filters={})
  response = get_request('/product_categories', filters)

  if response[:headers][:link]
    {
      pagination: Pagination.new(JSON.parse(response[:headers][:link])),
      results: response[:body].map { |r| Model::ProductCategory.new(r) }
    }
  else
    response[:body].map { |r| Model::ProductCategory.new(r) }
  end
end
get_product_category(category_id) click to toggle source
# File lib/xsys/api.rb, line 91
def self.get_product_category(category_id)
  Model::ProductCategory.new(get_request("/product_categories/#{category_id}")[:body])
end
get_product_price_lists(filters={}) click to toggle source
# File lib/xsys/api.rb, line 95
def self.get_product_price_lists(filters={})
  response = get_request('/product_price_lists', filters)

  if response[:headers][:link]
    {
      pagination: Pagination.new(JSON.parse(response[:headers][:link])),
      results: response[:body].map { |r| Model::ProductPriceList.new(r) }
    }
  else
    response[:body].map { |r| Model::ProductPriceList.new(r) }
  end
end
get_product_provider(provider_id) click to toggle source
# File lib/xsys/api.rb, line 74
def self.get_product_provider(provider_id)
  Model::ProductProvider.new(get_request("/product_providers/#{provider_id}")[:body])
end
get_product_providers(filters={}) click to toggle source
# File lib/xsys/api.rb, line 61
def self.get_product_providers(filters={})
  response = get_request('/product_providers', filters)

  if response[:headers][:link]
    {
      pagination: Pagination.new(JSON.parse(response[:headers][:link])),
      results: response[:body].map { |r| Model::ProductProvider.new(r) }
    }
  else
    response[:body].map { |r| Model::ProductProvider.new(r) }
  end
end
get_province(province_code) click to toggle source
# File lib/xsys/api.rb, line 287
def self.get_province(province_code)
  response = get_request("/provinces/#{province_code}")

  if response[:body].blank?
    nil
  else
    Model::Province.new(response[:body])
  end
end
get_provinces() click to toggle source
# File lib/xsys/api.rb, line 282
def self.get_provinces
  response = get_request('/provinces')
  response[:body].map { |x| Model::Province.new(x) }
end
get_sale(code) click to toggle source
# File lib/xsys/api.rb, line 138
def self.get_sale(code)
  response_body = get_request("/sales/#{code}")[:body]

  if response_body == 'null'
    nil
  else
    Model::Sale.new(response_body)
  end
end
get_sellers() click to toggle source
# File lib/xsys/api.rb, line 108
def self.get_sellers
  get_request('/sellers')[:body].map { |r| Model::Seller.new(r) }
end
get_shops(kind=nil) click to toggle source
# File lib/xsys/api.rb, line 112
def self.get_shops(kind=nil)
  shop_kinds = [:commercial, :virtual, :physical, :stockable, :service, :with_target]

  if kind.nil?
    get_request('/shops')[:body].map { |r| Model::Shop.new(r) }
  elsif shop_kinds.include?(kind.to_sym)
    get_request("/shops/#{kind}")[:body].map { |r| Model::Shop.new(r) }
  else
    []
  end
end
get_stock_reserve(code) click to toggle source
# File lib/xsys/api.rb, line 174
def self.get_stock_reserve(code)
  response_body = get_request("/stock_reserves/#{code}")[:body]

  if response_body == 'null'
    nil
  else
    Model::StockReserve.new(response_body)
  end
end
mass_update_product_marketplaces(attrs={}) click to toggle source
# File lib/xsys/api.rb, line 156
def self.mass_update_product_marketplaces(attrs={})
  post_request('/product_marketplace_listings/mass_update', attrs)[:body]    
end
search_localities(filters={}) click to toggle source
# File lib/xsys/api.rb, line 297
def self.search_localities(filters={})
  response = get_request('/localities', filters)
  response[:body].map { |x| Model::Locality.new(x) }
end
search_product_ids(filters={}) click to toggle source
# File lib/xsys/api.rb, line 45
def self.search_product_ids(filters={})
  response = get_request('/product_ids', filters)

  response[:body]['product_ids']
end
search_products(filters={}) click to toggle source
# File lib/xsys/api.rb, line 32
def self.search_products(filters={})
  response = get_request('/products', filters)

  if response[:headers][:link]
    {
      pagination: Pagination.new(JSON.parse(response[:headers][:link])),
      results: response[:body].map { |r| Model::Product.new(r) }
    }
  else
    response[:body].map { |r| Model::Product.new(r) }
  end
end
search_stock_reserves(filters={}) click to toggle source
# File lib/xsys/api.rb, line 184
def self.search_stock_reserves(filters={})
  get_request('/stock_reserves', filters)[:body].map { |x| Model::StockReserve.new(x) }
end
update_background_job(code, params) click to toggle source
# File lib/xsys/api.rb, line 19
def self.update_background_job(code, params)
  Model::BackgroundJob.new(put_request("/background_jobs/#{code}", params)[:body])
end
update_cash_withdrawal_items(shop_code, cash_withdrawal_items) click to toggle source
# File lib/xsys/api.rb, line 131
def self.update_cash_withdrawal_items(shop_code, cash_withdrawal_items)
  post_request('/cash_withdrawal_items', {
    shop_code: shop_code,
    cash_withdrawal_items: cash_withdrawal_items
  })[:body]
end
update_cash_withdrawals(shop_code, cash_withdrawals) click to toggle source
# File lib/xsys/api.rb, line 124
def self.update_cash_withdrawals(shop_code, cash_withdrawals)
  post_request('/cash_withdrawals', {
    shop_code: shop_code,
    cash_withdrawals: cash_withdrawals
  })[:body]
end
update_product(product_id, attrs={}) click to toggle source
# File lib/xsys/api.rb, line 148
def self.update_product(product_id, attrs={})
  Model::Product.new(put_request("/products/#{product_id}", attrs)[:body])
end
update_product_price_list(attrs={}) click to toggle source
# File lib/xsys/api.rb, line 152
def self.update_product_price_list(attrs={})
  put_request('/product_price_lists', attrs)[:body]
end

Private Class Methods

get_request(action, params={}, headers={}) click to toggle source
# File lib/xsys/api.rb, line 314
def self.get_request(action, params={}, headers={})
  begin
    headers.merge!({ authorization: "Token token=\"#{@access_token}\"" })
    parse_response(RestClient.get("#{@endpoint}#{action}", {params: params}.merge(headers)))
  rescue => e
    parse_response(e.response)
  end
end
parse_response(response) click to toggle source
# File lib/xsys/api.rb, line 341
def self.parse_response(response)
  {
    headers: response.headers,
    body: (JSON.parse(response.body) rescue response.body),
    status_code: response.code
  }
end
post_request(action, params={}, headers={}) click to toggle source
# File lib/xsys/api.rb, line 323
def self.post_request(action, params={}, headers={})
  begin
    headers.merge!({ authorization: "Token token=\"#{@access_token}\"" })
    parse_response(RestClient.post("#{@endpoint}#{action}", params, headers))
  rescue => e
    parse_response(e.response)
  end
end
put_request(action, params={}, headers={}) click to toggle source
# File lib/xsys/api.rb, line 332
def self.put_request(action, params={}, headers={})
  begin
    headers.merge!({ authorization: "Token token=\"#{@access_token}\"" })
    parse_response(RestClient.put("#{@endpoint}#{action}", params, headers))
  rescue => e
    parse_response(e.response)
  end
end