atol 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e641c3da1fd82f9b25d4d6f7945758211f2a304c
4
- data.tar.gz: ffa5be8712a96c1fa5767289e5fb26735ecfd573
3
+ metadata.gz: dadf4b469fa9fa9b1489d00b72d057b28e3db6a8
4
+ data.tar.gz: 731afecf6097e8767443df85c6c13a919f415b2c
5
5
  SHA512:
6
- metadata.gz: 8af070acadff92c07ea6bb74e21ea48b6ac78b94baea32edab622a60b44b3e53ca745a1033611c847cdf508bef08adc708626b37d1d80f6548471ccd580faa1b
7
- data.tar.gz: 8d6c72068f8ba205e7260ce7f1f22beb6e365406a16171e11c0157f88cc536a3b74747947b9c906c6e77142d32456cb6d935c38be52a442a5739f34b2558811f
6
+ metadata.gz: eb8a892c606a28c653ba0e6bdeede5f9b96b895fe1430f80826dfd91af61126bb0b6a31ec4b261ece202da35ea1c1c0c6f624dd14daa3655192886ac020f6be9
7
+ data.tar.gz: 73e2c099851188b28784536d1755b49a8aad2cd706f6ece489e3d46d71972cb8d3eb42c3fa4e66fbdcca6533c22ec1e124d7d1244942d41e000c575d78f17e98
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- atol (0.4.2)
4
+ atol (0.5.0)
5
5
  anyway_config (~> 1.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -106,12 +106,32 @@ body = Atol::Request::PostDocument::Sell::Body.new(
106
106
 
107
107
  Для создания `items` можно использовать класс `Atol::Request::PostDocument::Item::Body`.
108
108
 
109
- Его конструктор принимает обязательные аргументы `name`, `price` и опциональный `quantity` (по умолчанию 1).
109
+ Его конструктор принимает обязательные аргументы `name`, `price`, `payment_method`, `payment_object` и опциональный `quantity` (по умолчанию 1).
110
+
111
+ Допустимые значения `payment_method`:
112
+ ```ruby
113
+ [
114
+ 'full_prepayment', 'prepayment', 'advance', 'full_payment',
115
+ 'partial_payment', 'credit', 'credit_payment'
116
+ ]
117
+ ```
118
+ Допустимые значения `payment_object`:
119
+ ```ruby
120
+ [
121
+ 'commodity', 'excise', 'job', 'service', 'gambling_bet', 'gambling_prize',
122
+ 'lottery', 'lottery_prize', 'intellectual_activity', 'payment','agent_commission',
123
+ 'composite', 'another'
124
+ ]
125
+ ```
126
+
127
+ Например:
110
128
 
111
129
  ```ruby
112
130
  item = Atol::Request::PostDocument::Item::Body.new(
113
131
  name: 'product name',
114
132
  price: 100,
133
+ payment_method: 'full_payment',
134
+ payment_object: 'service',
115
135
  quantity: 2
116
136
  ).to_h
117
137
  ```
@@ -126,15 +146,21 @@ body = Atol::Request::PostDocument::Sell::Body.new(
126
146
  Atol::Request::PostDocument::Item::Body.new(
127
147
  name: 'number 9',
128
148
  price: 50,
149
+ payment_method: 'full_payment',
150
+ payment_object: 'service',
129
151
  quantity: 2
130
152
  ).to_h,
131
153
  Atol::Request::PostDocument::Item::Body.new(
132
154
  name: 'number 9 large',
133
- price: 100
155
+ price: 100,
156
+ payment_method: 'full_payment',
157
+ payment_object: 'service'
134
158
  ).to_h,
135
159
  Atol::Request::PostDocument::Item::Body.new(
136
160
  name: 'number 6',
137
- price: 60
161
+ price: 60,
162
+ payment_method: 'full_payment',
163
+ payment_object: 'service'
138
164
  ).to_h
139
165
  ]
140
166
  ).to_json
@@ -143,28 +169,28 @@ body = Atol::Request::PostDocument::Sell::Body.new(
143
169
  Результат:
144
170
  ```json
145
171
 
146
- {
147
- "receipt":{
148
- "attributes":{
172
+ {
173
+ "receipt":{
174
+ "attributes":{
149
175
  "sno":"usn_income_outcome",
150
176
  "email":"example@example.com"
151
177
  },
152
- "items":[
153
- {
178
+ "items":[
179
+ {
154
180
  "name":"number 9",
155
181
  "price":50.0,
156
182
  "quantity":2.0,
157
183
  "sum":100.0,
158
184
  "tax":"none"
159
185
  },
160
- {
186
+ {
161
187
  "name":"number 9 large",
162
188
  "price":100.0,
163
189
  "quantity":1.0,
164
190
  "sum":100.0,
165
191
  "tax":"none"
166
192
  },
167
- {
193
+ {
168
194
  "name":"number 6",
169
195
  "price":60.0,
170
196
  "quantity":1.0,
@@ -172,15 +198,15 @@ body = Atol::Request::PostDocument::Sell::Body.new(
172
198
  "tax":"none"
173
199
  }
174
200
  ],
175
- "payments":[
176
- {
201
+ "payments":[
202
+ {
177
203
  "sum":260.0,
178
204
  "type":1
179
205
  }
180
206
  ],
181
207
  "total":260.0
182
208
  },
183
- "service":{
209
+ "service":{
184
210
  "inn":"123456789010",
185
211
  "payment_address":"г. Москва, ул. Ленина, д.1 к.2"
186
212
  },
@@ -5,13 +5,33 @@ module Atol
5
5
  class PostDocument
6
6
  module Item
7
7
  class Body
8
- def initialize(name:, price:, quantity: 1, config: nil)
8
+ BadPaymentMethodError = Class.new(StandardError)
9
+ BadPaymentObjectError = Class.new(StandardError)
10
+
11
+ PAYMENT_METHODS = [
12
+ 'full_prepayment', 'prepayment', 'advance', 'full_payment',
13
+ 'partial_payment', 'credit', 'credit_payment'
14
+ ]
15
+
16
+ PAYMENT_OBJECTS = [
17
+ 'commodity', 'excise', 'job', 'service', 'gambling_bet', 'gambling_prize',
18
+ 'lottery', 'lottery_prize', 'intellectual_activity', 'payment', 'agent_commission',
19
+ 'composite', 'another'
20
+ ]
21
+
22
+ attr_accessor :config, :name, :price, :quantity, :payment_method, :payment_object
23
+
24
+ def initialize(config: nil, name:, price:, quantity: 1, payment_method:, payment_object:)
9
25
  raise Atol::ZeroItemQuantityError if quantity.to_i.zero?
26
+ raise BadPaymentMethodError unless PAYMENT_METHODS.include?(payment_method.to_s)
27
+ raise BadPaymentObjectError unless PAYMENT_OBJECTS.include?(payment_object.to_s)
10
28
 
11
- @config = config || Atol.config
12
- @name = name
13
- @price = price.to_f
14
- @quantity = quantity.to_f
29
+ self.config = config || Atol.config
30
+ self.name = name
31
+ self.price = price.to_f
32
+ self.quantity = quantity.to_f
33
+ self.payment_method = payment_method.to_s
34
+ self.payment_object = payment_object.to_s
15
35
  end
16
36
 
17
37
  def to_h
@@ -26,11 +46,13 @@ module Atol
26
46
 
27
47
  def body
28
48
  @body ||= {
29
- name: @name,
30
- price: @price,
31
- quantity: @quantity,
32
- sum: (@price * @quantity).round(2),
33
- tax: @config.default_tax
49
+ name: name,
50
+ price: price,
51
+ quantity: quantity,
52
+ sum: (price * quantity).round(2),
53
+ tax: config.default_tax,
54
+ payment_method: payment_method,
55
+ payment_object: payment_object
34
56
  }
35
57
  end
36
58
  end
@@ -1,6 +1,6 @@
1
1
  module Atol
2
2
  module Version
3
3
  API = 'v4'.freeze
4
- LIB = '0.4.2'.freeze
4
+ LIB = '0.5.0'.freeze
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atol
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GeorgeGorbanev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-16 00:00:00.000000000 Z
11
+ date: 2019-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: anyway_config