Class: Retailcrm

Inherits:
Object
  • Object
show all
Defined in:
lib/retailcrm.rb

Overview

RetailCRM API Client noinspection ALL

Defined Under Namespace

Classes: Response

Instance Method Summary collapse

Constructor Details

#initialize(url, key) ⇒ Retailcrm

Returns a new instance of Retailcrm.

[View source]

16
17
18
19
20
21
22
23
# File 'lib/retailcrm.rb', line 16

def initialize(url, key)
  @version = 3
  @url = "#{url}/api/v#{@version}/"
  @key = key
  @params = { :apiKey => @key }
  @filter = nil
  @ids = nil
end

Instance Method Details

#countriesObject

[View source]

646
647
648
649
# File 'lib/retailcrm.rb', line 646

def countries
  url = "#{@url}reference/countries"
  make_request(url)
end

#customers(filter = nil, limit = 20, page = 1) ⇒ Object

Get customers by filter

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.customers({:email => 'test@example.com'}, 50, 2)
=> {...}

Arguments:

filter (Hash)
limit (Integer) (20|50|100)
page (Integer)
[View source]

189
190
191
192
193
194
195
# File 'lib/retailcrm.rb', line 189

def customers(filter = nil, limit = 20, page = 1)
  url = "#{@url}customers"
  @params[:limit] = limit
  @params[:page] = page
  @filter = filter.to_a.map { |x| "filter[#{x[0]}]=#{x[1]}" }.join('&')
  make_request(url)
end

#customers_create(customer, site = nil) ⇒ Object

Create customer

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.customer_create(customer)
=> {...}

Arguments:

customer (Array)
site (String)
[View source]

229
230
231
232
233
234
# File 'lib/retailcrm.rb', line 229

def customers_create(customer, site = nil)
  url = "#{@url}customers/create"
  @params[:customer] = customer.to_json
  @params[:site] = site
  make_request(url, 'post')
end

#customers_edit(customer, site = nil) ⇒ Object

Edit customer

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.customers_edit(customer)
=> {...}

Arguments:

customer (Array)
site (String)
[View source]

247
248
249
250
251
252
253
# File 'lib/retailcrm.rb', line 247

def customers_edit(customer, site = nil)
  id = customer[:externalId]
  url = "#{@url}customers/#{id}/edit"
  @params[:customer] = customer.to_json
  @params[:site] = site
  make_request(url, 'post')
end

#customers_fix_external_ids(customers) ⇒ Object

Set external ids for customers created into CRM

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.customers_fix_external_ids([{:id => 200, :externalId => 334}, {:id => 201, :externalId => 364}])
=> {...}

Arguments:

customers (Array)
[View source]

283
284
285
286
287
# File 'lib/retailcrm.rb', line 283

def customers_fix_external_ids(customers)
  url = "#{@url}customers/fix-external-ids"
  @params[:customers] = customers.to_json
  make_request(url, 'post')
end

#customers_get(id, by = 'externalId', site = nil) ⇒ Object

Get customers by id (or externalId)

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.customers_get(345, 'id')
=> {...}

Arguments:

id (Integer)
by (String)
site (String)
[View source]

209
210
211
212
213
214
215
216
# File 'lib/retailcrm.rb', line 209

def customers_get(id, by = 'externalId', site = nil)
  url = "#{@url}customers/#{id}"
  @params[:site] = site
  if by != 'externalId'
    @params[:by] = by
  end
  make_request(url)
end

#customers_upload(customers, site = nil) ⇒ Object

Upload customers

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.customers_upload(customers)
=> {...}

Arguments:

customers (Array)
site (String)
[View source]

266
267
268
269
270
271
# File 'lib/retailcrm.rb', line 266

def customers_upload(customers, site = nil)
  url = "#{@url}customers/upload"
  @params[:customers] = customers.to_json
  @params[:site] = site
  make_request(url, 'post')
end

#delivery_servicesObject

[View source]

442
443
444
445
# File 'lib/retailcrm.rb', line 442

def delivery_services
  url = "#{@url}reference/delivery-services"
  make_request(url)
end

#delivery_services_edit(delivery_service) ⇒ Object

[View source]

451
452
453
454
455
456
# File 'lib/retailcrm.rb', line 451

def delivery_services_edit(delivery_service)
  code = delivery_service[:code]
  url = "#{@url}reference/delivery-services/#{code}/edit"
  @params[:deliveryService] = delivery_service.to_json
  make_request(url, 'post')
end

#delivery_typesObject

[View source]

461
462
463
464
# File 'lib/retailcrm.rb', line 461

def delivery_types
  url = "#{@url}reference/delivery-types"
  make_request(url)
end

#delivery_types_edit(delivery_type) ⇒ Object

[View source]

470
471
472
473
474
475
# File 'lib/retailcrm.rb', line 470

def delivery_types_edit(delivery_type)
  code = delivery_type[:code]
  url = "#{@url}reference/delivery-types/#{code}/edit"
  @params[:deliveryType] = delivery_type.to_json
  make_request(url, 'post')
end

#order_methodsObject

[View source]

481
482
483
484
# File 'lib/retailcrm.rb', line 481

def order_methods
  url = "#{@url}reference/order-methods"
  make_request(url)
end

#order_methods_edit(order_method) ⇒ Object

[View source]

490
491
492
493
494
495
# File 'lib/retailcrm.rb', line 490

def order_methods_edit(order_method)
  code = order_method[:code]
  url = "#{@url}reference/order-methods/#{code}/edit"
  @params[:orderMethod] = order_method.to_json
  make_request(url, 'post')
end

#order_typesObject

[View source]

501
502
503
504
# File 'lib/retailcrm.rb', line 501

def order_types
  url = "#{@url}reference/order-types"
  make_request(url)
end

#order_types_edit(order_type) ⇒ Object

[View source]

510
511
512
513
514
515
# File 'lib/retailcrm.rb', line 510

def order_types_edit(order_type)
  code = order_type[:code]
  url = "#{@url}reference/order-types/#{code}/edit"
  @params[:orderType] = order_type.to_json
  make_request(url, 'post')
end

#orders(filter = nil, limit = 20, page = 1) ⇒ Object

Get orders by filter

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.orders({:email => 'test@example.com', :status => 'new'}, 50, 2)
=> {...}

Arguments:

filter (Hash)
limit (Integer) (20|50|100)
page (Integer)
[View source]

37
38
39
40
41
42
43
# File 'lib/retailcrm.rb', line 37

def orders(filter = nil, limit = 20, page = 1)
  url = "#{@url}orders"
  @params[:limit] = limit
  @params[:page] = page
  @filter = filter.to_a.map { |x| "filter[#{x[0]}]=#{x[1]}" }.join('&')
  make_request(url)
end

#orders_create(order, site = nil) ⇒ Object

Create order

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.orders_create(order)
=> {...}

Arguments:

order (Array)
site (String)
[View source]

93
94
95
96
97
98
# File 'lib/retailcrm.rb', line 93

def orders_create(order, site = nil)
  url = "#{@url}orders/create"
  @params[:order] = order.to_json
  @params[:site] = site
  make_request(url, 'post')
end

#orders_edit(order, site = nil) ⇒ Object

Edit order

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.orders_edit(order)
=> {...}

Arguments:

order (Array)
site (String)
[View source]

111
112
113
114
115
116
117
# File 'lib/retailcrm.rb', line 111

def orders_edit(order, site = nil)
  id = order[:externalId]
  url = "#{@url}orders/#{id}/edit"
  @params[:order] = order.to_json
  @params[:site] = site
  make_request(url, 'post')
end

#orders_fix_external_ids(orders) ⇒ Object

Set external ids for orders created into CRM

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.orders_fix_external_ids([{:id => 200, :externalId => 334}, {:id => 201, :externalId => 364}])
=> {...}

Arguments:

orders (Array)
[View source]

147
148
149
150
151
# File 'lib/retailcrm.rb', line 147

def orders_fix_external_ids(orders)
  url = "#{@url}orders/fix-external-ids"
  @params[:orders] = orders.to_json
  make_request(url, 'post')
end

#orders_get(id, by = 'externalId', site = nil) ⇒ Object

Get orders by id (or externalId)

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.orders_get(345, 'id')
=> {...}

Arguments:

id (Integer)
by (String)
site (String)
[View source]

73
74
75
76
77
78
79
80
# File 'lib/retailcrm.rb', line 73

def orders_get(id, by = 'externalId', site = nil)
  url = "#{@url}orders/#{id}"
  if by != 'externalId'
    @params[:by] = by
    @params[:site] = site
  end
  make_request(url)
end

#orders_history(start_date = nil, end_date = nil, limit = 100, offset = 0, skip_my_changes = true) ⇒ Object

Get orders history

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.orders_history('2015-04-10 22:23:12', '2015-04-10 23:33:12')
=> {...}

Arguments:

start_date (Time) (Time.strftime('%Y-%m-%d %H:%M:%S'))
end_date (Time) (Time.strftime('%Y-%m-%d %H:%M:%S'))
limit (Integer) (20|50|100)
offset (Integer)
skip_my_changes (Boolean)
[View source]

167
168
169
170
171
172
173
174
175
# File 'lib/retailcrm.rb', line 167

def orders_history(start_date = nil, end_date = nil, limit = 100, offset = 0, skip_my_changes = true)
  url = "#{@url}orders/history"
  @params[:startDate] = start_date
  @params[:endDate] = end_date
  @params[:limit] = limit
  @params[:offset] = offset
  @params[:skipMyChanges] = skip_my_changes
  make_request(url)
end

#orders_statuses(ids = []) ⇒ Object

Get orders statuses

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.orders_statuses([26120, 19282])
=> {...}

Arguments:

ids (Array)
[View source]

55
56
57
58
59
# File 'lib/retailcrm.rb', line 55

def orders_statuses(ids = [])
  @ids = ids.map { |x| "ids[]=#{x}" }.join('&')
  url = "#{@url}orders/statuses"
  make_request(url)
end

#orders_upload(orders, site = nil) ⇒ Object

Upload orders

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.orders_upload(orders)
=> {...}

Arguments:

orders (Array)
site (String)
[View source]

130
131
132
133
134
135
# File 'lib/retailcrm.rb', line 130

def orders_upload(orders, site = nil)
  url = "#{@url}orders/upload"
  @params[:orders] = orders.to_json
  @params[:site] = site
  make_request(url, 'post')
end

#packs(filter = nil, limit = 20, page = 1) ⇒ Object

Get packs by filter

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.packs({:store => 'main'}, 50, 2)
=> {...}

Arguments:

filter (Hash)
limit (Integer) (20|50|100)
page (Integer)
[View source]

339
340
341
342
343
344
345
# File 'lib/retailcrm.rb', line 339

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

#packs_create(pack, site = nil) ⇒ Object

Create pack

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.packs_create(pack)
=> {...}

Arguments:

pack (Array)
site (String)
[View source]

358
359
360
361
362
363
# File 'lib/retailcrm.rb', line 358

def packs_create(pack, site = nil)
  url = "#{@url}orders/packs/create"
  @params[:pack] = pack.to_json
  @params[:site] = site
  make_request(url, 'post')
end

#packs_delete(id, site = nil) ⇒ Object

Delete pack

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.packs_delete(14)
=> {...}

Arguments:

id (Integer)
site (String)
[View source]

432
433
434
435
436
# File 'lib/retailcrm.rb', line 432

def packs_delete(id, site = nil)
  url = "#{@url}orders/packs/#{id}/delete"
  @params[:site] = site
  make_request(url, 'post')
end

#packs_edit(pack, site = nil) ⇒ Object

Edit pack

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.packs_edit(pack)
=> {...}

Arguments:

pack (Array)
site (String)
[View source]

413
414
415
416
417
418
419
# File 'lib/retailcrm.rb', line 413

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

#packs_get(id, site = nil) ⇒ Object

Get pack by id

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.packs_get(345)
=> {...}

Arguments:

id (Integer)
site (String)
[View source]

396
397
398
399
400
# File 'lib/retailcrm.rb', line 396

def packs_get(id, site = nil)
  url = "#{@url}orders/packs/#{id}"
  @params[:site] = site
  make_request(url)
end

#packs_history(filter = nil, limit = 20, page = 1) ⇒ Object

Get orders assembly history

www.retailcrm.ru/docs/Developers/ApiVersion3

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)
[View source]

377
378
379
380
381
382
383
# File 'lib/retailcrm.rb', line 377

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

#payment_statusesObject

[View source]

520
521
522
523
# File 'lib/retailcrm.rb', line 520

def payment_statuses
  url = "#{@url}reference/payment-statuses"
  make_request(url)
end

#payment_statuses_edit(payment_status) ⇒ Object

[View source]

529
530
531
532
533
534
# File 'lib/retailcrm.rb', line 529

def payment_statuses_edit(payment_status)
  code = payment_status[:code]
  url = "#{@url}reference/payment-statuses/#{code}/edit"
  @params[:paymentStatus] = payment_status.to_json
  make_request(url, 'post')
end

#payment_typesObject

[View source]

540
541
542
543
# File 'lib/retailcrm.rb', line 540

def payment_types
  url = "#{@url}reference/payment-types"
  make_request(url)
end

#payment_types_edit(payment_type) ⇒ Object

[View source]

549
550
551
552
553
554
# File 'lib/retailcrm.rb', line 549

def payment_types_edit(payment_type)
  code = payment_type[:code]
  url = "#{@url}reference/payment-types/#{code}/edit"
  @params[:paymentType] = payment_type.to_json
  make_request(url, 'post')
end

#product_statusesObject

[View source]

560
561
562
563
# File 'lib/retailcrm.rb', line 560

def product_statuses
  url = "#{@url}reference/product-statuses"
  make_request(url)
end

#product_statuses_edit(product_status) ⇒ Object

[View source]

569
570
571
572
573
574
# File 'lib/retailcrm.rb', line 569

def product_statuses_edit(product_status)
  code = product_status[:code]
  url = "#{@url}reference/product-statuses/#{code}/edit"
  @params[:productStatus] = product_status.to_json
  make_request(url, 'post')
end

#sitesObject

[View source]

579
580
581
582
# File 'lib/retailcrm.rb', line 579

def sites
  url = "#{@url}reference/sites"
  make_request(url)
end

#sites_edit(site) ⇒ Object

[View source]

588
589
590
591
592
593
# File 'lib/retailcrm.rb', line 588

def sites_edit(site)
  code = site[:code]
  url = "#{@url}reference/sites/#{code}/edit"
  @params[:site] = site.to_json
  make_request(url, 'post')
end

#statistic_updateObject

[View source]

655
656
657
658
# File 'lib/retailcrm.rb', line 655

def statistic_update
  url = "#{@url}statistic/update"
  make_request(url)
end

#status_groupsObject

[View source]

599
600
601
602
# File 'lib/retailcrm.rb', line 599

def status_groups
  url = "#{@url}reference/status-groups"
  make_request(url)
end

#statusesObject

[View source]

607
608
609
610
# File 'lib/retailcrm.rb', line 607

def statuses
  url = "#{@url}reference/statuses"
  make_request(url)
end

#statuses_edit(status) ⇒ Object

[View source]

616
617
618
619
620
621
# File 'lib/retailcrm.rb', line 616

def statuses_edit(status)
  code = status[:code]
  url = "#{@url}reference/statuses/#{code}/edit"
  @params[:status] = status.to_json
  make_request(url, 'post')
end

#store_inventories(filter = nil, limit = 20, page = 1) ⇒ Object

Get purchace prices & stock balance

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.store_inventories({:productExternalId => 26120, :details => 1}, 50, 2)
=> {...}

Arguments:

filter (Hash)
limit (Integer) (20|50|100)
page (Integer)
[View source]

301
302
303
304
305
306
307
# File 'lib/retailcrm.rb', line 301

def store_inventories(filter = nil, limit = 20, page = 1)
  url = "#{@url}store/inventories"
  @params[:limit] = limit
  @params[:page] = page
  @filter = filter.to_a.map { |x| "filter[#{x[0]}]=#{x[1]}" }.join('&')
  make_request(url)
end

#store_inventories_upload(offers = [], site = nil) ⇒ Object

Set purchace prices & stock balance

www.retailcrm.ru/docs/Developers/ApiVersion3

Example:

>> Retailcrm.store_inventories_upload({:offers => [{:externalId => 123, :stores => [{:code => 'store_1', :available => 15, :purchasePrice => 1000}]}]}, :site => 'main_site')
=> {...}

Arguments:

offers (Array)
site (String)
[View source]

320
321
322
323
324
325
# File 'lib/retailcrm.rb', line 320

def store_inventories_upload(offers = [], site = nil)
  url = "#{@url}store/inventories/upload"
  @params[:offers] = offers
  @params[:site] = site
  make_request(url, 'post')
end

#storesObject

[View source]

627
628
629
630
# File 'lib/retailcrm.rb', line 627

def stores
  url = "#{@url}reference/stores"
  make_request(url)
end

#stores_edit(store) ⇒ Object

[View source]

636
637
638
639
640
641
# File 'lib/retailcrm.rb', line 636

def stores_edit(store)
  code = store[:code]
  url = "#{@url}reference/stores/#{code}/edit"
  @params[:store] = store.to_json
  make_request(url, 'post')
end