Compare commits

..

7 commits

Author SHA1 Message Date
Alex Lushpai
979d06550a
Update product name, cleanup annotations 2020-12-15 13:30:40 +03:00
Alex Lushpai
30999696f9
Update README.md 2020-02-19 13:50:59 +03:00
Alex Lushpai
978f2f0509 Update README.md 2016-03-14 23:07:43 +03:00
Alex Lushpai
4358a6e815 Merge pull request #3 from gwinn/master
Update client methods & docs
2016-03-08 01:28:47 +03:00
Alex Lushpai
2ffec96adb fix typos 2016-03-08 01:26:58 +03:00
Alex Lushpai
06c5ce871d gemspec 2016-03-08 01:25:01 +03:00
Alex Lushpai
0763201af2 update client methods & docs 2016-03-08 01:23:25 +03:00
5 changed files with 144 additions and 101 deletions

View file

@ -1,6 +1,6 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2013 Alex Lushpai Copyright (c) 2013-2020 RetailDriver LLC
Permission is hereby granted, free of charge, to any person obtaining a copy of Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in this software and associated documentation files (the "Software"), to deal in

View file

@ -1,35 +1,36 @@
[![Gem Version](https://badge.fury.io/rb/retailcrm.svg)](http://badge.fury.io/rb/retailcrm) [![Gem](https://img.shields.io/gem/v/retailcrm?color=red)](https://rubygems.org/gems/retailcrm)
[![RDoc](https://img.shields.io/badge/RDoc-reference-red.svg)](http://www.rubydoc.info/gems/retailcrm)
Ruby-клиент для retailCRM API RetailCRM API ruby client
============================= =========================
### Установка ### Install
``` ```
gem install retailcrm gem install retailcrm
``` ```
### Примеры использования ### Examples
#### Получение информации о заказе #### Get order
```ruby ```ruby
require 'retailcrm' require 'retailcrm'
api = Retailcrm.new('https://yourcrmname.retailcrm.ru', 'yourApiKeyHere') api = Retailcrm.new('https://demo.retailcrm.pro', 'yourApiKeyHere')
response = api.orders_get(345, 'id').response response = api.orders_get(345, 'id').response
order = response[:order] order = response[:order]
``` ```
#### Создание заказа #### Create order
```ruby ```ruby
require 'retailcrm' require 'retailcrm'
api = Retailcrm.new('https://yourcrmname.retailcrm.ru', 'yourApiKeyHere') api = Retailcrm.new('https://demo.retailcrm.pro', 'yourApiKeyHere')
order = { order = {
:externalId => 171, :externalId => 171,
@ -68,11 +69,3 @@ response = api.orders_create(order).response
order_id = response[:id] order_id = response[:id]
``` ```
#### Документация REST API
http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
#### Документация API библиотеки
http://www.rubydoc.info/gems/retailcrm

View file

@ -24,7 +24,6 @@ class Retailcrm
## ##
# === Get orders by filter # === Get orders by filter
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
# Example: # Example:
# >> Retailcrm.orders({:email => 'test@example.com', :status => 'new'}, 50, 2) # >> Retailcrm.orders({:email => 'test@example.com', :status => 'new'}, 50, 2)
@ -44,7 +43,6 @@ class Retailcrm
## ##
# === Get orders statuses # === Get orders statuses
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
# Example: # Example:
# >> Retailcrm.orders_statuses([26120, 19282]) # >> Retailcrm.orders_statuses([26120, 19282])
@ -60,7 +58,6 @@ class Retailcrm
## ##
# === Get orders by id (or externalId) # === Get orders by id (or externalId)
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
# Example: # Example:
# >> Retailcrm.orders_get(345, 'id') # >> Retailcrm.orders_get(345, 'id')
@ -81,7 +78,6 @@ class Retailcrm
## ##
# === Create order # === Create order
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
# Example: # Example:
# >> Retailcrm.orders_create(order) # >> Retailcrm.orders_create(order)
@ -99,7 +95,6 @@ class Retailcrm
## ##
# === Edit order # === Edit order
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
# Example: # Example:
# >> Retailcrm.orders_edit(order) # >> Retailcrm.orders_edit(order)
@ -118,7 +113,6 @@ class Retailcrm
## ##
# === Upload orders # === Upload orders
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
# Example: # Example:
# >> Retailcrm.orders_upload(orders) # >> Retailcrm.orders_upload(orders)
@ -136,7 +130,6 @@ class Retailcrm
## ##
# === Set external ids for orders created into CRM # === Set external ids for orders created into CRM
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
# Example: # Example:
# >> Retailcrm.orders_fix_external_ids([{:id => 200, :externalId => 334}, {:id => 201, :externalId => 364}]) # >> Retailcrm.orders_fix_external_ids([{:id => 200, :externalId => 334}, {:id => 201, :externalId => 364}])
@ -152,7 +145,6 @@ class Retailcrm
## ##
# === Get orders history # === Get orders history
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
# Example: # Example:
# >> Retailcrm.orders_history('2015-04-10 22:23:12', '2015-04-10 23:33:12') # >> Retailcrm.orders_history('2015-04-10 22:23:12', '2015-04-10 23:33:12')
@ -174,29 +166,8 @@ class Retailcrm
make_request(url) make_request(url)
end end
##
# === Get orders assembly history
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
#
# Example:
# >> Retailcrm.orders_packs_history({:orderId => 26120, :startDate => '2015-04-10 23:33:12'}, 50, 2)
# => {...}
#
# Arguments:
# filter (Hash)
# limit (Integer) (20|50|100)
# page (Integer)
def orders_packs_history(filter = nil, limit = 20, page = 1)
url = "#{@url}orders/packs/history"
@params[:limit] = limit
@params[:page] = page
@filter = filter.to_a.map { |x| "filter[#{x[0]}]=#{x[1]}" }.join('&')
make_request(url)
end
## ##
# === Get customers by filter # === Get customers by filter
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
# Example: # Example:
# >> Retailcrm.customers({:email => 'test@example.com'}, 50, 2) # >> Retailcrm.customers({:email => 'test@example.com'}, 50, 2)
@ -216,7 +187,6 @@ class Retailcrm
## ##
# === Get customers by id (or externalId) # === Get customers by id (or externalId)
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
# Example: # Example:
# >> Retailcrm.customers_get(345, 'id') # >> Retailcrm.customers_get(345, 'id')
@ -237,7 +207,6 @@ class Retailcrm
## ##
# === Create customer # === Create customer
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
# Example: # Example:
# >> Retailcrm.customer_create(customer) # >> Retailcrm.customer_create(customer)
@ -255,7 +224,6 @@ class Retailcrm
## ##
# === Edit customer # === Edit customer
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
# Example: # Example:
# >> Retailcrm.customers_edit(customer) # >> Retailcrm.customers_edit(customer)
@ -274,7 +242,6 @@ class Retailcrm
## ##
# === Upload customers # === Upload customers
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
# Example: # Example:
# >> Retailcrm.customers_upload(customers) # >> Retailcrm.customers_upload(customers)
@ -292,7 +259,6 @@ class Retailcrm
## ##
# === Set external ids for customers created into CRM # === Set external ids for customers created into CRM
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
# Example: # Example:
# >> Retailcrm.customers_fix_external_ids([{:id => 200, :externalId => 334}, {:id => 201, :externalId => 364}]) # >> Retailcrm.customers_fix_external_ids([{:id => 200, :externalId => 334}, {:id => 201, :externalId => 364}])
@ -308,7 +274,6 @@ class Retailcrm
## ##
# === Get purchace prices & stock balance # === Get purchace prices & stock balance
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
# Example: # Example:
# >> Retailcrm.store_inventories({:productExternalId => 26120, :details => 1}, 50, 2) # >> Retailcrm.store_inventories({:productExternalId => 26120, :details => 1}, 50, 2)
@ -328,7 +293,6 @@ class Retailcrm
## ##
# === Set purchace prices & stock balance # === Set purchace prices & stock balance
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
# Example: # Example:
# >> Retailcrm.store_inventories_upload({:offers => [{:externalId => 123, :stores => [{:code => 'store_1', :available => 15, :purchasePrice => 1000}]}]}, :site => 'main_site') # >> Retailcrm.store_inventories_upload({:offers => [{:externalId => 123, :stores => [{:code => 'store_1', :available => 15, :purchasePrice => 1000}]}]}, :site => 'main_site')
@ -344,9 +308,113 @@ class Retailcrm
make_request(url, 'post') make_request(url, 'post')
end end
##
# === Get packs by filter
#
# Example:
# >> Retailcrm.packs({:store => 'main'}, 50, 2)
# => {...}
#
# Arguments:
# filter (Hash)
# limit (Integer) (20|50|100)
# page (Integer)
def packs(filter = nil, limit = 20, page = 1)
url = "#{@url}orders/packs"
@params[:limit] = limit
@params[:page] = page
@filter = filter.to_a.map { |x| "filter[#{x[0]}]=#{x[1]}" }.join('&')
make_request(url)
end
##
# === Create pack
#
# Example:
# >> Retailcrm.packs_create(pack)
# => {...}
#
# Arguments:
# pack (Array)
# site (String)
def packs_create(pack, site = nil)
url = "#{@url}orders/packs/create"
@params[:pack] = pack.to_json
@params[:site] = site
make_request(url, 'post')
end
##
# === Get orders assembly history
#
# Example:
# >> Retailcrm.packs_history({:orderId => 26120, :startDate => '2015-04-10 23:33:12'}, 50, 2)
# => {...}
#
# Arguments:
# filter (Hash)
# limit (Integer) (20|50|100)
# page (Integer)
def packs_history(filter = nil, limit = 20, page = 1)
url = "#{@url}orders/packs/history"
@params[:limit] = limit
@params[:page] = page
@filter = filter.to_a.map { |x| "filter[#{x[0]}]=#{x[1]}" }.join('&')
make_request(url)
end
##
# === Get pack by id
#
# Example:
# >> Retailcrm.packs_get(345)
# => {...}
#
# Arguments:
# id (Integer)
# site (String)
def packs_get(id, site = nil)
url = "#{@url}orders/packs/#{id}"
@params[:site] = site
make_request(url)
end
##
# === Edit pack
#
# Example:
# >> Retailcrm.packs_edit(pack)
# => {...}
#
# Arguments:
# pack (Array)
# site (String)
def packs_edit(pack, site = nil)
id = pack[:id]
url = "#{@url}orders/packs/#{id}/edit"
@params[:pack] = pack.to_json
@params[:site] = site
make_request(url, 'post')
end
##
# === Delete pack
#
# Example:
# >> Retailcrm.packs_delete(14)
# => {...}
#
# Arguments:
# id (Integer)
# site (String)
def packs_delete(id, site = nil)
url = "#{@url}orders/packs/#{id}/delete"
@params[:site] = site
make_request(url, 'post')
end
## ##
# === Get delivery services # === Get delivery services
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def delivery_services def delivery_services
url = "#{@url}reference/delivery-services" url = "#{@url}reference/delivery-services"
@ -355,7 +423,6 @@ class Retailcrm
## ##
# === Edit delivery service # === Edit delivery service
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def delivery_services_edit(delivery_service) def delivery_services_edit(delivery_service)
code = delivery_service[:code] code = delivery_service[:code]
@ -365,7 +432,6 @@ class Retailcrm
end end
# Get delivery types # Get delivery types
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def delivery_types def delivery_types
url = "#{@url}reference/delivery-types" url = "#{@url}reference/delivery-types"
@ -374,7 +440,6 @@ class Retailcrm
## ##
# === Edit delivery type # === Edit delivery type
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def delivery_types_edit(delivery_type) def delivery_types_edit(delivery_type)
code = delivery_type[:code] code = delivery_type[:code]
@ -385,7 +450,6 @@ class Retailcrm
## ##
# === Get order methods # === Get order methods
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def order_methods def order_methods
url = "#{@url}reference/order-methods" url = "#{@url}reference/order-methods"
@ -394,7 +458,6 @@ class Retailcrm
## ##
# === Edit order method # === Edit order method
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def order_methods_edit(order_method) def order_methods_edit(order_method)
code = order_method[:code] code = order_method[:code]
@ -405,7 +468,6 @@ class Retailcrm
## ##
# === Get order types # === Get order types
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def order_types def order_types
url = "#{@url}reference/order-types" url = "#{@url}reference/order-types"
@ -414,7 +476,6 @@ class Retailcrm
## ##
# === Edit order type # === Edit order type
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def order_types_edit(order_type) def order_types_edit(order_type)
code = order_type[:code] code = order_type[:code]
@ -424,7 +485,6 @@ class Retailcrm
end end
# Get payment statuses # Get payment statuses
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def payment_statuses def payment_statuses
url = "#{@url}reference/payment-statuses" url = "#{@url}reference/payment-statuses"
@ -433,7 +493,6 @@ class Retailcrm
## ##
# === Edit payment status # === Edit payment status
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def payment_statuses_edit(payment_status) def payment_statuses_edit(payment_status)
code = payment_status[:code] code = payment_status[:code]
@ -444,7 +503,6 @@ class Retailcrm
## ##
# === Get payment types # === Get payment types
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def payment_types def payment_types
url = "#{@url}reference/payment-types" url = "#{@url}reference/payment-types"
@ -453,7 +511,6 @@ class Retailcrm
## ##
# === Edit payment type # === Edit payment type
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def payment_types_edit(payment_type) def payment_types_edit(payment_type)
code = payment_type[:code] code = payment_type[:code]
@ -464,7 +521,6 @@ class Retailcrm
## ##
# === Get product statuses # === Get product statuses
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def product_statuses def product_statuses
url = "#{@url}reference/product-statuses" url = "#{@url}reference/product-statuses"
@ -473,7 +529,6 @@ class Retailcrm
## ##
# === Edit product status # === Edit product status
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def product_statuses_edit(product_status) def product_statuses_edit(product_status)
code = product_status[:code] code = product_status[:code]
@ -483,7 +538,6 @@ class Retailcrm
end end
# Get sites list # Get sites list
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def sites def sites
url = "#{@url}reference/sites" url = "#{@url}reference/sites"
@ -492,7 +546,6 @@ class Retailcrm
## ##
# === Edit site # === Edit site
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def sites_edit(site) def sites_edit(site)
code = site[:code] code = site[:code]
@ -503,7 +556,6 @@ class Retailcrm
## ##
# === Get status groups # === Get status groups
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def status_groups def status_groups
url = "#{@url}reference/status-groups" url = "#{@url}reference/status-groups"
@ -511,7 +563,6 @@ class Retailcrm
end end
# Get statuses # Get statuses
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def statuses def statuses
url = "#{@url}reference/statuses" url = "#{@url}reference/statuses"
@ -520,7 +571,6 @@ class Retailcrm
## ##
# === Edit status # === Edit status
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def statuses_edit(status) def statuses_edit(status)
code = status[:code] code = status[:code]
@ -531,7 +581,6 @@ class Retailcrm
## ##
# === Get stores # === Get stores
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def stores def stores
url = "#{@url}reference/stores" url = "#{@url}reference/stores"
@ -540,7 +589,6 @@ class Retailcrm
## ##
# === Edit store # === Edit store
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def stores_edit(store) def stores_edit(store)
code = store[:code] code = store[:code]
@ -549,10 +597,15 @@ class Retailcrm
make_request(url, 'post') make_request(url, 'post')
end end
# Get countries list
#
def countries
url = "#{@url}reference/countries"
make_request(url)
end
## ##
# === Statistic update # === Statistic update
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
# #
def statistic_update def statistic_update
url = "#{@url}statistic/update" url = "#{@url}statistic/update"

View file

@ -1,7 +1,7 @@
Gem::Specification.new do |s| Gem::Specification.new do |s|
s.name = 'retailcrm' s.name = 'retailcrm'
s.version = '1.1.1' s.version = '1.1.2'
s.date = '2015-04-15' s.date = '2016-03-07'
s.summary = 'RetailCRM Rest API client' s.summary = 'RetailCRM Rest API client'
s.description = 'Library for interact with RetailCRM API' s.description = 'Library for interact with RetailCRM API'
s.authors = ['Alex Lushpai'] s.authors = ['Alex Lushpai']

View file

@ -5,7 +5,7 @@ class Bootstrap
attr_reader :api_key, :api_url, :order, :customer, :refs_get, :refs_edit attr_reader :api_key, :api_url, :order, :customer, :refs_get, :refs_edit
def initialize def initialize
@api_url = 'https://demo.retailcrm.ru' @api_url = 'https://demo.retailcrm.pro'
@api_key = 'YourAPIKeyRightHere' @api_key = 'YourAPIKeyRightHere'
id = Time.now.to_i id = Time.now.to_i
@ -14,9 +14,9 @@ class Bootstrap
@customer = { @customer = {
:externalId => id, :externalId => id,
:createdAt => time, :createdAt => time,
:firstName => 'API', :firstName => 'John',
:lastName => 'Test', :lastName => 'Doe',
:email => 'pupkin@example.org', :email => 'john@example.org',
:phones => [{:number => '+79099099090'}] :phones => [{:number => '+79099099090'}]
} }
@ -31,24 +31,23 @@ class Bootstrap
:firstName => 'API', :firstName => 'API',
:lastName => 'Test', :lastName => 'Test',
:customer => { :customer => {
:firstName => 'Тестовый', :firstName => 'John',
:lastName => 'Клиент', :lastName => 'Doe',
:phones => [{:number => '+79099099090'}], :phones => [{:number => '+79099099090'}],
}, },
:delivery => { :delivery => {
:code => 'courier', :code => 'courier',
:cost => 500, :cost => 500
:address => {:text => '344000, Ростов-на-Дону, пр. Буденовский, 13'}
}, },
:status => 'new', :status => 'new',
:items => [ :items => [
{ {
:productName => 'Товар 1', :productName => 'First',
:initialPrice => 500, :initialPrice => 500,
:quantity => 2 :quantity => 2
}, },
{ {
:productName => 'Товар 2', :productName => 'Second',
:initialPrice => 1300, :initialPrice => 1300,
:quantity => 1 :quantity => 1
} }
@ -75,24 +74,23 @@ class Bootstrap
:firstName => 'API', :firstName => 'API',
:lastName => 'Test', :lastName => 'Test',
:customer => { :customer => {
:firstName => 'Тестовый', :firstName => 'John',
:lastName => 'Клиент', :lastName => 'Doe',
:phones => [{:number => '+79099099090'}], :phones => [{:number => '+79099099090'}],
}, },
:delivery => { :delivery => {
:code => 'courier', :code => 'courier',
:cost => 500, :cost => 500
:address => {:text => '344000, Ростов-на-Дону, пр. Буденовский, 13'}
}, },
:status => 'new', :status => 'new',
:items => [ :items => [
{ {
:productName => 'Товар 1', :productName => 'First',
:initialPrice => 500, :initialPrice => 500,
:quantity => 2 :quantity => 2
}, },
{ {
:productName => 'Товар 2', :productName => 'Second',
:initialPrice => 1300, :initialPrice => 1300,
:quantity => 1 :quantity => 1
} }
@ -107,24 +105,23 @@ class Bootstrap
:firstName => 'API2', :firstName => 'API2',
:lastName => 'Test2', :lastName => 'Test2',
:customer => { :customer => {
:firstName => 'Тестовый2', :firstName => 'Joe',
:lastName => 'Клиент2', :lastName => 'Doe',
:phones => [{:number => '+79099099000'}], :phones => [{:number => '+79099099000'}],
}, },
:delivery => { :delivery => {
:code => 'ems', :code => 'ems',
:cost => 500, :cost => 500
:address => {:text => '344000, Ростов-на-Дону, пр. Буденовский, 15'}
}, },
:status => 'availability-confirmed', :status => 'availability-confirmed',
:items => [ :items => [
{ {
:productName => 'Товар 3', :productName => 'Third',
:initialPrice => 500, :initialPrice => 500,
:quantity => 2 :quantity => 2
}, },
{ {
:productName => 'Товар 4', :productName => 'Extra',
:initialPrice => 1300, :initialPrice => 1300,
:quantity => 1 :quantity => 1
} }
@ -192,7 +189,7 @@ class Bootstrap
}, },
sites_edit: { sites_edit: {
name: 'Rake Shop', name: 'Rake Shop',
url: 'http://yandex.ru', url: 'http://example.org',
code: 'api-client-all', code: 'api-client-all',
loadFromYml: false, loadFromYml: false,
}, },