rs.ge 0.0.17 → 0.1.0.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/rs.rb +5 -71
- data/lib/rs/models/waybill_unit.rb +21 -0
- data/lib/rs/requests/base_request.rb +20 -0
- data/lib/rs/requests/waybill_unit_request.rb +44 -0
- data/lib/rs/version.rb +1 -2
- data/rs.gemspec +3 -5
- data/spec/requests/waybill_units_spec.rb +24 -0
- data/spec/spec_helper.rb +3 -85
- metadata +14 -42
- data/lib/rs/car.rb +0 -6
- data/lib/rs/dict.rb +0 -259
- data/lib/rs/invoice.rb +0 -18
- data/lib/rs/print.rb +0 -331
- data/lib/rs/sys.rb +0 -128
- data/lib/rs/waybill.rb +0 -483
- data/problems.md +0 -1
- data/spec/rs/car_spec.rb +0 -25
- data/spec/rs/dict_spec.rb +0 -181
- data/spec/rs/open_user.rb +0 -12
- data/spec/rs/pdf_spec.rb +0 -21
- data/spec/rs/sys_spec.rb +0 -77
- data/spec/rs/waybill_delete_spec.rb +0 -63
- data/spec/rs/waybill_invoice_spec.rb +0 -19
- data/spec/rs/waybill_spec.rb +0 -205
- data/spec/rs/waybill_validation_spec.rb +0 -149
data/lib/rs/waybill.rb
DELETED
@@ -1,483 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
|
3
|
-
module RS
|
4
|
-
|
5
|
-
protected
|
6
|
-
|
7
|
-
def self.append_validation_error(errors, field, error)
|
8
|
-
errors[field.to_sym] ||= []
|
9
|
-
errors[field.to_sym] << error
|
10
|
-
end
|
11
|
-
|
12
|
-
public
|
13
|
-
|
14
|
-
# ამოწმებს თუ რამდენად სწორია პირადი ნომრის ჩანაწერი.
|
15
|
-
# პირადი ნომერი უნდა შედგებოდს ზუსტად 11 ციფრისაგან.
|
16
|
-
def self.is_valid_personal_tin(tin)
|
17
|
-
tin =~ /^[0-9]{11}$/
|
18
|
-
end
|
19
|
-
|
20
|
-
# ამოწმებს თუ რამდენად სწორია საწარმოს საიდენტიფიკაციო ნომრის ჩანაწერი
|
21
|
-
# (გარდა ინდ. მეწარმისა).
|
22
|
-
# საწარმოს საიდენტიფიკაციო ნომერი უნდა შედგებოდს ზუსტად 9 ციფრისაგან.
|
23
|
-
def self.is_valid_corporate_tin(tin)
|
24
|
-
tin =~ /^[0-9]{9}$/
|
25
|
-
end
|
26
|
-
|
27
|
-
# ეს არის ზედნადების ხაზი საქონლისთვის.
|
28
|
-
class WaybillItem
|
29
|
-
attr_accessor :id, :prod_name, :unit_id, :unit_name, :quantity, :price, :bar_code, :excise_id, :vat_type
|
30
|
-
|
31
|
-
# აბრუნებს ამ ხაზის XML წარმოდგენას.
|
32
|
-
# @param xml XML builder-ის კლასი
|
33
|
-
def to_xml(xml)
|
34
|
-
xml.GOODS do |b|
|
35
|
-
b.ID (self.id ? self.id : 0)
|
36
|
-
b.W_NAME self.prod_name
|
37
|
-
b.UNIT_ID self.unit_id
|
38
|
-
b.UNIT_TXT self.unit_name
|
39
|
-
b.QUANTITY self.quantity
|
40
|
-
b.PRICE self.price
|
41
|
-
b.AMOUNT self.quantity * self.price
|
42
|
-
b.BAR_CODE self.bar_code
|
43
|
-
b.A_ID (self.excise_id ? self.excise_id : 0)
|
44
|
-
b.VAT_TYPE (self.vat_type || Waybill::VAT_COMMON)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def self.init_from_hash(hash)
|
49
|
-
item = WaybillItem.new
|
50
|
-
item.id = hash[:id]
|
51
|
-
item.prod_name = hash[:w_name]
|
52
|
-
item.unit_id = hash[:unit_id].to_i
|
53
|
-
item.unit_name = hash[:unit_txt]
|
54
|
-
item.quantity = hash[:quantity].to_f
|
55
|
-
item.price = hash[:price].to_f
|
56
|
-
item.bar_code = hash[:bar_code]
|
57
|
-
item.excise_id = hash[:a_id] == '0' ? nil : hash[:a_id].to_i
|
58
|
-
item
|
59
|
-
end
|
60
|
-
|
61
|
-
# ამოწმებს ამ კლასს შემდეგი შეცდომების არსებობაზე:
|
62
|
-
#
|
63
|
-
# # საქონლის დასახელება უნდა იყოს მითითებული
|
64
|
-
# # შტრიხ-კოდი უნდა იყოს მითითებული
|
65
|
-
# # საქონლის ზომის ერთეული უნდა იყოს მითითებული
|
66
|
-
# # თუ ზომის ერთეულია "სხვა", ზომის ერთეულის სახელიც უნდა იყოს მითითებული
|
67
|
-
# # რაოდენობა > 0
|
68
|
-
# # ფასი >= 0
|
69
|
-
def validate
|
70
|
-
@validation_errors = {}
|
71
|
-
if self.prod_name.nil? or self.prod_name.strip.empty?
|
72
|
-
RS.append_validation_error(@validation_errors, :prod_name, 'საქონლის სახელი არაა განსაზღვრული')
|
73
|
-
end
|
74
|
-
if self.unit_id.nil?
|
75
|
-
RS.append_validation_error(@validation_errors, :unit_id, 'ზომის ერთეული არაა განსაზღვრული')
|
76
|
-
end
|
77
|
-
if self.unit_id == RS::WaybillUnit::OTHERS and (self.unit_name.nil? or self.unit_name.strip.empty?)
|
78
|
-
RS.append_validation_error(@validation_errors, :unit_name, 'ზომის ერთეულის სახელი არაა განსაზღვრული')
|
79
|
-
end
|
80
|
-
if self.quantity.nil? or self.quantity <= 0
|
81
|
-
RS.append_validation_error(@validation_errors, :quantity, 'რაოდენობა უნდა იყოს მეტი 0-ზე')
|
82
|
-
end
|
83
|
-
if self.price.nil? or self.price < 0
|
84
|
-
RS.append_validation_error(@validation_errors, :price, 'ფასი არ უნდა იყოს უარყოფითი')
|
85
|
-
end
|
86
|
-
if self.bar_code.nil? or self.bar_code.strip.empty?
|
87
|
-
RS.append_validation_error(@validation_errors, :bar_code, 'საქონლის შტრიხ-კოდი უნდა იყოს განსაზღვრული')
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
def validation_errors
|
92
|
-
@validation_errors
|
93
|
-
end
|
94
|
-
|
95
|
-
def valid?
|
96
|
-
self.validate
|
97
|
-
@validation_errors.empty?
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
# ეს არის ზედნადების კლასი.
|
102
|
-
class Waybill
|
103
|
-
TRANSPORTATION_PAID_BY_BUYER = 1
|
104
|
-
TRANSPORTATION_PAID_BY_SELLER = 2
|
105
|
-
STATUS_DELETED = -1
|
106
|
-
STATUS_DEACTIVATED = -2
|
107
|
-
STATUS_SAVED = 0
|
108
|
-
STATUS_ACTIVE = 1
|
109
|
-
STATUS_CLOSED = 2
|
110
|
-
# ჩვეულებრივი
|
111
|
-
VAT_COMMON = 0
|
112
|
-
# ნულოვანი
|
113
|
-
VAT_ZERO = 1
|
114
|
-
# დაუბეგრავი
|
115
|
-
VAT_NONE = 2
|
116
|
-
attr_accessor :id, :type, :status, :parent_id, :number
|
117
|
-
attr_accessor :seller_id # გამყიდველის უნიკალური კოდი
|
118
|
-
attr_accessor :seller_tin, :seller_name
|
119
|
-
attr_accessor :buyer_tin, :check_buyer_tin, :buyer_name
|
120
|
-
attr_accessor :seller_info, :buyer_info # გამყიდველის/მყიდველის თანამდებობა, სახელი და გვარი
|
121
|
-
attr_accessor :driver_tin, :check_driver_tin, :driver_name
|
122
|
-
attr_accessor :start_address, :end_address
|
123
|
-
attr_accessor :transportation_cost, :transportation_cost_payer, :transport_type_id, :transport_type_name, :car_number
|
124
|
-
attr_accessor :comment
|
125
|
-
attr_accessor :create_date, :start_date, :delivery_date, :activate_date
|
126
|
-
attr_accessor :items
|
127
|
-
attr_accessor :error_code
|
128
|
-
attr_accessor :invoice_id
|
129
|
-
|
130
|
-
def to_xml(xml)
|
131
|
-
xml.WAYBILL do |b|
|
132
|
-
b.GOODS_LIST do |g|
|
133
|
-
(self.items || []).each do |item|
|
134
|
-
item.to_xml g
|
135
|
-
end
|
136
|
-
end
|
137
|
-
b.ID (self.id ? self.id : 0)
|
138
|
-
b.TYPE self.type
|
139
|
-
b.BUYER_TIN self.buyer_tin
|
140
|
-
b.CHEK_BUYER_TIN (self.check_buyer_tin ? 1 : 0)
|
141
|
-
b.BUYER_NAME self.buyer_name
|
142
|
-
b.START_ADDRESS self.start_address
|
143
|
-
b.END_ADDRESS self.end_address
|
144
|
-
b.DRIVER_TIN self.driver_tin
|
145
|
-
b.CHEK_DRIVER_TIN (self.check_driver_tin ? 1 : 0)
|
146
|
-
b.DRIVER_NAME self.driver_name
|
147
|
-
b.TRANSPORT_COAST (self.transportation_cost ? self.transportation_cost : 0)
|
148
|
-
b.RECEPTION_INFO self.seller_info
|
149
|
-
b.RECEIVER_INFO self.buyer_info
|
150
|
-
b.DELIVERY_DATE (self.delivery_date ? self.delivery_date.strftime('%Y-%m-%dT%H:%M:%S') : '')
|
151
|
-
b.STATUS self.status
|
152
|
-
b.SELER_UN_ID self.seller_id
|
153
|
-
b.PAR_ID (self.parent_id ? self.parent_id : '')
|
154
|
-
b.CAR_NUMBER self.car_number
|
155
|
-
b.BEGIN_DATE (self.start_date ? self.start_date.strftime('%Y-%m-%dT%H:%M:%S') : '')
|
156
|
-
b.TRAN_COST_PAYER (self.transportation_cost_payer ? self.transportation_cost_payer : Waybill::TRANSPORTATION_PAID_BY_BUYER)
|
157
|
-
b.TRANS_ID self.transport_type_id
|
158
|
-
b.TRANS_TXT self.transport_type_name
|
159
|
-
b.COMMENT self.comment
|
160
|
-
end
|
161
|
-
end
|
162
|
-
|
163
|
-
def self.init_from_hash(hash)
|
164
|
-
waybill = Waybill.new
|
165
|
-
items_hash = hash[:goods_list][:goods]
|
166
|
-
items_hash = [items_hash] if items_hash.instance_of? Hash
|
167
|
-
waybill.items = []
|
168
|
-
items_hash.each do |item_hash|
|
169
|
-
waybill.items << WaybillItem.init_from_hash(item_hash)
|
170
|
-
end
|
171
|
-
waybill.id = hash[:id]
|
172
|
-
waybill.type = hash[:type].to_i
|
173
|
-
waybill.status = hash[:status].to_i
|
174
|
-
waybill.number = hash[:waybill_number]
|
175
|
-
waybill.seller_id = hash[:seler_un_id].to_i
|
176
|
-
waybill.buyer_tin = hash[:buyer_tin]
|
177
|
-
waybill.check_buyer_tin = hash[:chek_buyer_tin].to_i == 1
|
178
|
-
waybill.buyer_name = hash[:buyer_name]
|
179
|
-
waybill.seller_info = hash[:reception_info]
|
180
|
-
waybill.buyer_info = hash[:receiver_info]
|
181
|
-
waybill.driver_tin = hash[:driver_tin]
|
182
|
-
waybill.check_driver_tin = hash[:chek_driver_tin].to_i == 1
|
183
|
-
waybill.driver_name = hash[:driver_name]
|
184
|
-
waybill.start_address = hash[:start_address]
|
185
|
-
waybill.end_address = hash[:end_address]
|
186
|
-
waybill.transportation_cost = hash[:transport_coast].to_f
|
187
|
-
waybill.transportation_cost_payer = hash[:tran_cost_payer] ? hash[:tran_cost_payer].to_i : nil
|
188
|
-
waybill.transport_type_id = hash[:trans_id].to_i
|
189
|
-
waybill.transport_type_name = hash[:trans_txt]
|
190
|
-
waybill.car_number = hash[:car_number]
|
191
|
-
waybill.comment = hash[:comment]
|
192
|
-
waybill.create_date = hash[:create_date]
|
193
|
-
waybill.start_date = hash[:begin_date]
|
194
|
-
waybill.delivery_date = hash[:close_date]
|
195
|
-
waybill.activate_date = hash[:activate_date]
|
196
|
-
waybill
|
197
|
-
end
|
198
|
-
|
199
|
-
# ამოწმებს ამ კლასს შემდეგი შეცდომების არსებობაზე:
|
200
|
-
#
|
201
|
-
# # მყიდველის TIN
|
202
|
-
# # მყიდველის სახელი უნდა იყოს მითითებული თუ უცხოელია
|
203
|
-
# # თუ საავტომობილო გადაზიდვაა
|
204
|
-
# * ავტომობილის სახელმწიფო ნომერი უნდა იყოს მითითებული
|
205
|
-
# * მძღოლის TIN უნდა იყოს სწორი
|
206
|
-
# * მძღოლის სახელი უნდა იყოს მითითებული თუ უცხოელია
|
207
|
-
# # თუ ტრანსპორტირების სახეობაა "სხვა", უნდა იყოს მითითებული ტრანსპორტირების სახელწოდებაც
|
208
|
-
# # უნდა იყოს მითითებული საწყისი მისამართი
|
209
|
-
# # უნდა იყოს მითითებული საბოლოო მისამართი
|
210
|
-
# # ერთი საქონელი მაინც უნდა იყოს მითითებული
|
211
|
-
# # ცალკეულ საქონელზე: იხ. {WaybillItem#validate}
|
212
|
-
# # არ უნდა არსებობდეს საქონლის გამეორებული კოდები
|
213
|
-
#
|
214
|
-
# ოპციებში შეგვიძლია მიუთითოთ "ძლიერი" შემოწმების ოპცია, როდესაც
|
215
|
-
# დამატებით მოწმდება მძღოლის და მყიდველი სახელები მონაცემთა ბაზის
|
216
|
-
# მეშვეობით.
|
217
|
-
def validate(opts = {})
|
218
|
-
@validation_errors = {}
|
219
|
-
validate_buyer # 1, 2
|
220
|
-
validate_transport # 3, 4
|
221
|
-
validate_addresses # 5, 6
|
222
|
-
validate_items # 7, 8, 9
|
223
|
-
validate_remote(opts) if opts[:remote]
|
224
|
-
end
|
225
|
-
|
226
|
-
def validation_errors
|
227
|
-
@validation_errors
|
228
|
-
end
|
229
|
-
|
230
|
-
def valid?
|
231
|
-
#self.validate
|
232
|
-
return false unless @validation_errors.empty?
|
233
|
-
self.items.each do |item|
|
234
|
-
item.validate
|
235
|
-
return false unless item.validation_errors.empty?
|
236
|
-
end if self.items
|
237
|
-
return true
|
238
|
-
end
|
239
|
-
|
240
|
-
def items_valid?
|
241
|
-
@items_valid != false
|
242
|
-
end
|
243
|
-
|
244
|
-
private
|
245
|
-
|
246
|
-
# მყიდველის შემოწმება
|
247
|
-
def validate_buyer
|
248
|
-
if self.buyer_tin.nil? or self.buyer_tin.strip.empty?
|
249
|
-
RS.append_validation_error(@validation_errors, :buyer_tin, 'მყიდველის საიდენტიფიკაციო ნომერი განუსაზღვრელია')
|
250
|
-
else
|
251
|
-
if self.check_buyer_tin
|
252
|
-
if !RS.is_valid_personal_tin(self.buyer_tin) and !RS.is_valid_corporate_tin(self.buyer_tin)
|
253
|
-
RS.append_validation_error(@validation_errors, :buyer_tin, 'საიდენტიფიკაციო ნომერი უნდა შედგებოდეს 9 ან 11 ციფრისაგან')
|
254
|
-
end
|
255
|
-
else
|
256
|
-
if self.buyer_name.nil? or self.buyer_name.strip.empty?
|
257
|
-
RS.append_validation_error(@validation_errors, :buyer_name, 'განსაზღვრეთ მყიდველის სახელი')
|
258
|
-
end
|
259
|
-
end
|
260
|
-
end
|
261
|
-
end
|
262
|
-
|
263
|
-
# სატრანსპორტო საშუალების შემოწმება
|
264
|
-
def validate_transport
|
265
|
-
if self.transport_type_id == RS::TransportType::VEHICLE
|
266
|
-
if self.car_number.nil? or self.car_number.strip.empty?
|
267
|
-
RS.append_validation_error(@validation_errors, :car_number, 'მიუთითეთ სატრანსპორტო საშუალების სახელმწიფო ნომერი')
|
268
|
-
end
|
269
|
-
if self.driver_tin.nil? or self.driver_tin.strip.empty?
|
270
|
-
RS.append_validation_error(@validation_errors, :driver_tin, 'მძღოლის პირადი ნომერი უნდა იყოს მითითებული')
|
271
|
-
end
|
272
|
-
if self.check_driver_tin
|
273
|
-
unless RS.is_valid_personal_tin(self.driver_tin)
|
274
|
-
RS.append_validation_error(@validation_errors, :driver_tin, 'მძღოლის პირადი ნომერი არასწორია')
|
275
|
-
end
|
276
|
-
unless RS.valid_vehicle_number?(self.car_number)
|
277
|
-
RS.append_validation_error(@validation_errors, :car_number, 'არასწორი მანქანის ნომერი: ჩაწერეთ ABC123 ფორმატში!')
|
278
|
-
end
|
279
|
-
else
|
280
|
-
if self.driver_name.nil? or self.driver_name.strip.empty?
|
281
|
-
RS.append_validation_error(@validation_errors, :driver_name, 'ჩაწერეთ მძღოლის სახელი')
|
282
|
-
end
|
283
|
-
end
|
284
|
-
elsif self.transport_type_id == RS::TransportType::OTHERS
|
285
|
-
if self.transport_type_name.nil? or self.transport_type_name.strip.empty?
|
286
|
-
RS.append_validation_error(@validation_errors, :transport_type_name, 'მიუთითეთ სატრანსპორტო საშუალების დასახელება')
|
287
|
-
end
|
288
|
-
end
|
289
|
-
end
|
290
|
-
|
291
|
-
# ამოწმებს მისამართებს
|
292
|
-
def validate_addresses
|
293
|
-
if self.start_address.nil? or self.start_address.strip.empty?
|
294
|
-
RS.append_validation_error(@validation_errors, :start_address, 'საწყისი მისამართი განუსაზღვრელია')
|
295
|
-
end
|
296
|
-
if self.end_address.nil? or self.end_address.strip.empty?
|
297
|
-
RS.append_validation_error(@validation_errors, :end_address, 'საბოლოო მისამართი განუსაზღვრელია')
|
298
|
-
end
|
299
|
-
if not self.start_address.nil? and not self.end_address.nil? and
|
300
|
-
self.start_address.strip != self.end_address.strip and self.type == RS::WaybillType::WITHOUT_TRANSPORTATION
|
301
|
-
RS.append_validation_error(@validation_errors, :type, '"ტრანსპორტირების გარეშე" დაუშვებელია, როდესაც საწყისი მისამართი არ ემთხვევა საბოლოოს.')
|
302
|
-
end
|
303
|
-
end
|
304
|
-
|
305
|
-
# საქონლის პოზიციების შემოწმება
|
306
|
-
def validate_items
|
307
|
-
if self.items.nil? or self.items.empty?
|
308
|
-
RS.append_validation_error(@validation_errors, :items, 'ერთი საქონელი მაინც უნდა იყოს განსაზღვრული')
|
309
|
-
return
|
310
|
-
end
|
311
|
-
#bar_codes = []
|
312
|
-
#repeated_bar_codes = []
|
313
|
-
self.items.each do |item|
|
314
|
-
item.validate
|
315
|
-
@items_valid = false unless item.valid?
|
316
|
-
#if not item.bar_code.nil? and not item.bar_code.strip.empty?
|
317
|
-
# if bar_codes.include?(item.bar_code)
|
318
|
-
# repeated_bar_codes << item.bar_code unless repeated_bar_codes.include?(item.bar_code)
|
319
|
-
# else
|
320
|
-
# bar_codes << item.bar_code
|
321
|
-
# end
|
322
|
-
#end
|
323
|
-
end
|
324
|
-
#unless repeated_bar_codes.empty?
|
325
|
-
# RS.append_validation_error(@validation_errors, :items, "დუბლირებული შტრიხ-კოდები: #{repeated_bar_codes.join(', ')}")
|
326
|
-
#end
|
327
|
-
end
|
328
|
-
|
329
|
-
# ამოწმებს მყიდველის და მძღოლის შესაბამისობას მათ საიდენტიფიკაციო კოდებთან.
|
330
|
-
def validate_remote(opts)
|
331
|
-
# driver validation
|
332
|
-
if self.transport_type_id == RS::TransportType::VEHICLE and self.check_driver_tin
|
333
|
-
unless self.driver_tin.nil? or self.driver_tin.strip.empty?
|
334
|
-
driver_name = RS.get_name_from_tin('su' => opts['su'], 'sp' => opts['sp'], 'tin' => self.driver_tin)
|
335
|
-
RS.append_validation_error(@validation_errors, :driver_tin, "საიდ. ნომერი ვერ მოიძებნა: #{self.driver_tin}") if driver_name.nil?
|
336
|
-
RS.append_validation_error(@validation_errors, :driver_name, "მძღოლის სახელია: #{driver_name}") if driver_name and driver_name.split.join(' ') != self.driver_name.split.join(' ')
|
337
|
-
else
|
338
|
-
RS.append_validation_error(@validation_errors, :driver_tin, "მძღოლის პირადი ნომერი არაა მითითებული.")
|
339
|
-
end
|
340
|
-
end
|
341
|
-
# buyer validation
|
342
|
-
if self.check_buyer_tin
|
343
|
-
unless self.buyer_tin.nil? or self.buyer_tin.strip.empty?
|
344
|
-
buyer_name = RS.get_name_from_tin('su' => opts['su'], 'sp' => opts['sp'], 'tin' => self.buyer_tin)
|
345
|
-
RS.append_validation_error(@validation_errors, :buyer_tin, "საიდ. ნომერი ვერ მოიძებნა: #{self.buyer_tin}") if buyer_name.nil?
|
346
|
-
RS.append_validation_error(@validation_errors, :buyer_name, "მყიდველის სახელია: #{buyer_name}") if buyer_name and buyer_name.split.join(' ') != self.buyer_name.split.join(' ')
|
347
|
-
else
|
348
|
-
RS.append_validation_error(@validation_errors, :buyer_tin, "მყიდველის პირადი ნომერი არაა მითითებული.")
|
349
|
-
end
|
350
|
-
end
|
351
|
-
end
|
352
|
-
|
353
|
-
end
|
354
|
-
|
355
|
-
# ზედნადების შენახვის მეთოდი
|
356
|
-
#
|
357
|
-
# გადაეცემა:
|
358
|
-
# waybill -- ზედნადები
|
359
|
-
# params -- პარამეტრები
|
360
|
-
#
|
361
|
-
# პარამეტრების შემდეგი მნიშვნელობებია დასაშვები:
|
362
|
-
# su -- სერვისის მომხმარებლის სახელი
|
363
|
-
# sp -- სერვისის მომხმარებლის პაროლი
|
364
|
-
#
|
365
|
-
# ინახავს ამ ზედნადებს და განაახლებს მის მონაცემებს.
|
366
|
-
def self.save_waybill(waybill, params)
|
367
|
-
RS.validate_presence_of(params, 'su', 'sp')
|
368
|
-
client = RS.waybill_service
|
369
|
-
response = client.request 'save_waybill' do |soap|
|
370
|
-
soap.body do |xml|
|
371
|
-
xml.ins0 :su, params['su']
|
372
|
-
xml.ins0 :sp, params['sp']
|
373
|
-
xml.ins0 :waybill do |b|
|
374
|
-
waybill.to_xml b
|
375
|
-
end
|
376
|
-
end
|
377
|
-
end
|
378
|
-
hash_results = response.to_hash[:save_waybill_response][:save_waybill_result][:result]
|
379
|
-
if hash_results[:status].to_i == 0
|
380
|
-
waybill.id = hash_results[:id].to_i == 0 ? nil : hash_results[:id].to_i
|
381
|
-
waybill.error_code = 0
|
382
|
-
items_hash = hash_results[:goods_list][:goods]
|
383
|
-
items_hash = [items_hash] if items_hash.instance_of? Hash
|
384
|
-
(0..items_hash.size-1).each do |i|
|
385
|
-
waybill.items[i].id = items_hash[i][:id].to_i
|
386
|
-
#waybill.items[i].error_code = items_hash[i][:error].to_i
|
387
|
-
end
|
388
|
-
else
|
389
|
-
waybill.error_code = hash_results[:status].to_i
|
390
|
-
end
|
391
|
-
end
|
392
|
-
|
393
|
-
# ზედნადების გამოტანა.
|
394
|
-
#
|
395
|
-
# გადაცემა შემდეგი პარამეტრები:
|
396
|
-
# waybill_id -- ზედნადების ID
|
397
|
-
# su -- სერვისის მომხმარებელი
|
398
|
-
# sp -- სერვისის მომხმარებლის პაროლი
|
399
|
-
def self.get_waybill(params)
|
400
|
-
RS.validate_presence_of(params, 'waybill_id', 'su', 'sp')
|
401
|
-
client = RS.waybill_service
|
402
|
-
response = client.request 'get_waybill' do |soap|
|
403
|
-
soap.body = params.merge({:order => ['su', 'sp', 'waybill_id']})
|
404
|
-
end
|
405
|
-
#puts response.to_hash[:get_waybill_response][:get_waybill_result][:waybill]
|
406
|
-
Waybill.init_from_hash(response.to_hash[:get_waybill_response][:get_waybill_result][:waybill])
|
407
|
-
end
|
408
|
-
|
409
|
-
# ზედნადების აქტივაცია.
|
410
|
-
#
|
411
|
-
# გადაეცემა შემდეგი პარამეტრები:
|
412
|
-
# waybill_id -- ზედნადების ID
|
413
|
-
# su -- სერვისის მომხმარებელი
|
414
|
-
# sp -- სერვისის მომხმარებლის პაროლი
|
415
|
-
#
|
416
|
-
# აბრუნებს ამ ზედნადების ID-ს
|
417
|
-
def self.activate_waybill(params)
|
418
|
-
RS.validate_presence_of(params, 'waybill_id', 'su', 'sp')
|
419
|
-
client = RS.waybill_service
|
420
|
-
response = client.request 'send_waybill' do |soap|
|
421
|
-
soap.body = params.merge({:order => ['su', 'sp', 'waybill_id']})
|
422
|
-
end
|
423
|
-
#puts response.to_hash[:send_waybill_response][:send_waybill_result].to_i
|
424
|
-
response.to_hash[:send_waybill_response][:send_waybill_result].to_i
|
425
|
-
end
|
426
|
-
|
427
|
-
# ზედნადების დახურვა.
|
428
|
-
#
|
429
|
-
# გადაეცემა შემდეგი პარამეტრები:
|
430
|
-
# waybill_id -- ზედნადების ID
|
431
|
-
# su -- სერვისის მომხმარებელი
|
432
|
-
# sp -- სერვისის მომხმარებლის პაროლი
|
433
|
-
#
|
434
|
-
# აბრუნებს <code>true</code> თუ დაიხურა.
|
435
|
-
def self.close_waybill(params)
|
436
|
-
RS.validate_presence_of(params, 'waybill_id', 'su', 'sp')
|
437
|
-
client = RS.waybill_service
|
438
|
-
response = client.request 'close_waybill' do |soap|
|
439
|
-
soap.body = params.merge({:order => ['su', 'sp', 'waybill_id']})
|
440
|
-
end
|
441
|
-
#puts response.to_hash
|
442
|
-
response.to_hash[:close_waybill_response][:close_waybill_result].to_i == 1
|
443
|
-
end
|
444
|
-
|
445
|
-
# ზედნადების წაშლა.
|
446
|
-
# ეს მეთოდი არ გამოდგება აქტიური/დასრულებული ზედნადების წასაშლელად.
|
447
|
-
#
|
448
|
-
# გადაეცემა შემდეგი პარამეტრები:
|
449
|
-
# waybill_id -- ზედნადების ID
|
450
|
-
# su -- სერვისის მომხმარებელი
|
451
|
-
# sp -- სერვისის მომხმარებლის პაროლი
|
452
|
-
#
|
453
|
-
# აბრუნებს <code>true</code> თუ წაიშალა.
|
454
|
-
def self.delete_waybill(params)
|
455
|
-
RS.validate_presence_of(params, 'waybill_id', 'su', 'sp')
|
456
|
-
client = RS.waybill_service
|
457
|
-
response = client.request 'del_waybill' do |soap|
|
458
|
-
soap.body = params.merge({:order => ['su', 'sp', 'waybill_id']})
|
459
|
-
end
|
460
|
-
#puts response.to_hash
|
461
|
-
response.to_hash[:del_waybill_response][:del_waybill_result].to_i == 1
|
462
|
-
end
|
463
|
-
|
464
|
-
# აქტიური/დასრულებული ზედნადების გაუქმება.
|
465
|
-
# ეს მეთოდი არ გამოდგება შენახული ზედნადების გასაუქმებლად.
|
466
|
-
#
|
467
|
-
# გადაეცემა შემდეგი პარამეტრები:
|
468
|
-
# waybill_id -- ზედნადების ID
|
469
|
-
# su -- სერვისის მომხმარებელი
|
470
|
-
# sp -- სერვისის მომხმარებლის პაროლი
|
471
|
-
#
|
472
|
-
# აბრუნებს <code>true</code> თუ წაიშალა.
|
473
|
-
def self.deactivate_waybill(params)
|
474
|
-
RS.validate_presence_of(params, 'waybill_id', 'su', 'sp')
|
475
|
-
client = RS.waybill_service
|
476
|
-
response = client.request 'ref_waybill' do |soap|
|
477
|
-
soap.body = params.merge({:order => ['su', 'sp', 'waybill_id']})
|
478
|
-
end
|
479
|
-
#puts response.to_hash
|
480
|
-
response.to_hash[:ref_waybill_response][:ref_waybill_result].to_i == 1
|
481
|
-
end
|
482
|
-
|
483
|
-
end
|