retailcrm-api 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.markdown +88 -3
- data/lib/retailcrm-api/api_request.rb +15 -6
- data/lib/retailcrm-api/request.rb +3 -3
- data/lib/retailcrm-api/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19aca33fa8aabb3a4cd9acffaa7ed004cbd8be0a126ddb8f4c93b162fb60c50a
|
4
|
+
data.tar.gz: ea0d5c405d9c6073044a028eea147c207a0bc7ccbb784b02ddd6d6b108e40661
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a10e4ac6b8700f48597a3585a9a0cf5ef2aa646fedddec463fa02c7573f4c1b877335e2bbf6d8e99a76ae10675b4a0c00f858f050d924689774f732f9e45d3f8
|
7
|
+
data.tar.gz: 953ae085065c09ab797cef8bdd66cc4465500e43617d8ff1816305ec54755e63f2b47a55a2629eab5fca597d4ad3c200f07bbb2113d9b1418b8514b6ed296568
|
data/README.markdown
CHANGED
@@ -70,15 +70,100 @@ RetailcrmApi::Request.logger = MyLogger.new
|
|
70
70
|
|
71
71
|
### [Получение списка расходов, удовлетворяющих заданному фильтру](https://docs.retailcrm.ru/Developers/API/APIVersions/APIv5#get--api-v5-costs)
|
72
72
|
```ruby
|
73
|
-
|
73
|
+
params = {
|
74
|
+
filter: {
|
75
|
+
minSumm: 0
|
76
|
+
}
|
77
|
+
}
|
78
|
+
RetailcrmApi::Request.costs.retrieve(params: params).body
|
74
79
|
# => {:success=>true, :pagination=>{:limit=>20, :totalCount=>296, :currentPage=>1, :totalPageCount=>15}, :costs=>[{:id=>296, :dateFrom=>"2021-07-29", :dateTo=>"2021-07-29", :summ=>13996, :costItem=>"products-purchase-price", :createdAt=>"2021-07-29 00:34:35", :order=>{:id=>36, :number=>"36C"}, :sites=>["b12-skillum-ru"]}]}
|
75
80
|
```
|
81
|
+
### [Создание расхода](https://docs.retailcrm.ru/Developers/API/APIVersions/APIv5#post--api-v5-costs-create)
|
82
|
+
```ruby
|
83
|
+
body = {
|
84
|
+
site: "deppa-ru",
|
85
|
+
cost: {
|
86
|
+
summ: 100,
|
87
|
+
costItem: "office-expenses",
|
88
|
+
dateFrom: (DateTime.now - 1.day).strftime("%Y-%m-%d"),
|
89
|
+
dateTo: DateTime.now.strftime("%Y-%m-%d")
|
90
|
+
}
|
91
|
+
}
|
92
|
+
RetailcrmApi::Request.costs.create(body: body).body
|
93
|
+
# => {:success=>true, :id=>297}
|
94
|
+
```
|
95
|
+
### [Пакетное удаление расходов](https://docs.retailcrm.ru/Developers/APIhttps://docs.retailcrm.ru/Developers/API/APIVersions/APIv5#post--api-v5-costs-delete)
|
96
|
+
```ruby
|
97
|
+
body = {
|
98
|
+
ids: [297]
|
99
|
+
}
|
100
|
+
RetailcrmApi::Request.costs.create(body: body, suffix: "delete").body
|
101
|
+
# => {:success=>true, :count=>1, :notRemovedIds=>[]}
|
102
|
+
```
|
103
|
+
### [Пакетная загрузка расходов](https://docs.retailcrm.ru/Developers/API/APIVersions/APIv5#post--api-v5-costs-upload)
|
104
|
+
```ruby
|
105
|
+
body = {
|
106
|
+
costs: [
|
107
|
+
{
|
108
|
+
sites: ["deppa-ru"],
|
109
|
+
summ: 100,
|
110
|
+
costItem: "office-expenses",
|
111
|
+
dateFrom: (DateTime.now - 1.day).strftime("%Y-%m-%d"),
|
112
|
+
dateTo: DateTime.now.strftime("%Y-%m-%d")
|
113
|
+
}
|
114
|
+
]
|
115
|
+
}
|
116
|
+
RetailcrmApi::Request.costs.create(body: body, suffix: "upload").body
|
117
|
+
# => {:success=>true, :uploadedCosts=>[298]}
|
118
|
+
```
|
119
|
+
### [Получение информации о расходе](https://docs.retailcrm.ru/Developers/API/APIVersions/APIv5#get--api-v5-costs-id)
|
120
|
+
```ruby
|
121
|
+
RetailcrmApi::Request.costs(298).retrieve.body
|
122
|
+
# => {:success=>true, :cost=>{:id=>298, :dateFrom=>"2021-08-02", :dateTo=>"2021-08-03", :summ=>100, :costItem=>"office-expenses", :createdAt=>"2021-08-03 22:12:34", :sites=>["deppa-ru"]}}
|
123
|
+
```
|
124
|
+
### [Редактирование расхода](https://docs.retailcrm.ru/Developers/API/APIVersions/APIv5#post--api-v5-costs-id-edit)
|
125
|
+
```ruby
|
126
|
+
body = {
|
127
|
+
site: "deppa-ru",
|
128
|
+
cost: {
|
129
|
+
summ: 200,
|
130
|
+
costItem: "office-expenses",
|
131
|
+
dateFrom: (DateTime.now - 1.day).strftime("%Y-%m-%d"),
|
132
|
+
dateTo: DateTime.now.strftime("%Y-%m-%d")
|
133
|
+
}
|
134
|
+
}
|
135
|
+
RetailcrmApi::Request.costs(298).update(body: body).body
|
136
|
+
# => {:success=>true, :id=>298}
|
137
|
+
```
|
138
|
+
### [Удаление расхода](https://docs.retailcrm.ru/Developers/API/APIVersions/APIv5#post--api-v5-costs-id-delete)
|
139
|
+
```ruby
|
140
|
+
RetailcrmApi::Request.costs(298).delete.body
|
141
|
+
# => {:success=>true}
|
142
|
+
```
|
143
|
+
|
144
|
+
## Пользовательские поля
|
145
|
+
### [Получение списка пользовательских полей, удовлетворяющих заданному фильтру](https://docs.retailcrm.ru/Developers/API/APIVersions/APIv5#get--api-v5-custom-fields)
|
146
|
+
```ruby
|
147
|
+
params = {
|
148
|
+
filter: {
|
149
|
+
type: "date"
|
150
|
+
}
|
151
|
+
}
|
152
|
+
RetailcrmApi::Request.custom_fields.retrieve(params: params).body
|
153
|
+
# =>{:success=>true, :pagination=>{:limit=>20, :totalCount=>0, :currentPage=>1, :totalPageCount=>0}, :customFields=>[]}
|
154
|
+
```
|
76
155
|
|
77
156
|
## Клиенты
|
78
157
|
### [Получение списка клиентов, удовлетворяющих заданному фильтру](https://docs.retailcrm.ru/Developers/API/APIVersions/APIv5#get--api-v5-customers)
|
79
158
|
```ruby
|
80
|
-
|
81
|
-
|
159
|
+
params = {
|
160
|
+
limit: 100,
|
161
|
+
filter: {
|
162
|
+
sex: "male"
|
163
|
+
}
|
164
|
+
}
|
165
|
+
RetailcrmApi::Request.customers.retrieve(params: params).body
|
166
|
+
#=> {:success=>true, :pagination=>{:limit=>100, :totalCount=>0, :currentPage=>1, :totalPageCount=>0}, :customers=>[]}
|
82
167
|
```
|
83
168
|
### [Создание клиента](https://docs.retailcrm.ru/Developers/API/APIVersions/APIv5#post--api-v5-customers-create)
|
84
169
|
```ruby
|
@@ -5,20 +5,24 @@ module RetailcrmApi
|
|
5
5
|
@request_builder = builder
|
6
6
|
end
|
7
7
|
|
8
|
-
def post(params: nil, headers: nil, suffix: nil, body: {})
|
8
|
+
def post(params: nil, headers: nil, suffix: nil, body: {}, first_time: true)
|
9
9
|
validate_api_key
|
10
10
|
begin
|
11
11
|
response = self.rest_client(suffix).post do |request|
|
12
12
|
configure_request(request: request, params: params, headers: headers, body: body)
|
13
13
|
end
|
14
|
-
|
15
|
-
response
|
14
|
+
parse_response(response)
|
16
15
|
rescue => e
|
17
|
-
|
16
|
+
if e.response.dig(:status) == 403 && first_time
|
17
|
+
sleep(0.3.second)
|
18
|
+
self.post(params: params, headers: headers, suffix: suffix, body: body, first_time: false)
|
19
|
+
else
|
20
|
+
handle_error(e)
|
21
|
+
end
|
18
22
|
end
|
19
23
|
end
|
20
24
|
|
21
|
-
def get(params: nil, headers: nil)
|
25
|
+
def get(params: nil, headers: nil, first_time: true)
|
22
26
|
validate_api_key
|
23
27
|
|
24
28
|
begin
|
@@ -27,7 +31,12 @@ module RetailcrmApi
|
|
27
31
|
end
|
28
32
|
parse_response(response)
|
29
33
|
rescue => e
|
30
|
-
|
34
|
+
if e.response.dig(:status) == 403 && first_time
|
35
|
+
sleep(0.3.second)
|
36
|
+
self.get(params: params, headers: headers, first_time: false)
|
37
|
+
else
|
38
|
+
handle_error(e)
|
39
|
+
end
|
31
40
|
end
|
32
41
|
end
|
33
42
|
|
@@ -52,7 +52,7 @@ module RetailcrmApi
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def update(params: nil, headers: nil, body: {})
|
55
|
-
APIRequest.new(builder: self).post(params: params, headers: headers, suffix: '
|
55
|
+
APIRequest.new(builder: self).post(params: params, headers: headers, suffix: 'edit', body: body)
|
56
56
|
ensure
|
57
57
|
reset
|
58
58
|
end
|
@@ -63,8 +63,8 @@ module RetailcrmApi
|
|
63
63
|
reset
|
64
64
|
end
|
65
65
|
|
66
|
-
def delete(params: nil, headers: nil
|
67
|
-
APIRequest.new(builder: self).post(params: params, headers: headers)
|
66
|
+
def delete(params: nil, headers: nil)
|
67
|
+
APIRequest.new(builder: self).post(params: params, headers: headers, suffix: 'delete')
|
68
68
|
ensure
|
69
69
|
reset
|
70
70
|
end
|