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 CHANGED
@@ -1,76 +1,10 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  require 'savon'
3
3
  require 'rs/version'
4
- require 'rs/sys'
5
- require 'rs/dict'
6
- require 'rs/waybill'
7
- require 'rs/print'
8
- require 'rs/invoice'
9
- require 'rs/car'
10
4
 
11
- module RS
12
- # ელქტრონული ზედნადების ფორმის WSDL მისამართი
13
- WAYBILL_SERVICE_URL = 'http://services.rs.ge/WayBillService/WayBillService.asmx?WSDL'
5
+ # models
6
+ require 'rs/models/waybill_unit'
14
7
 
15
- # ელექტრონული ა/ფ WSDL მისამართი
16
- INVOICE_SERVICE_URL = 'https://www.revenue.mof.ge/ntosservice/ntosservice.asmx?WSDL'
17
-
18
- # მომხმარებელი, რომელიც შეგიძლიათ გამოიყენოთ ღია სერვისებში.
19
- OPEN_SU = 'dimitri1979'
20
-
21
- # პაროლის ღია მომხმარებლისთვის.
22
- OPEN_SP = '123456'
23
-
24
- # შეცდომის კლასი
25
- class Error < RuntimeError
26
- end
27
-
28
- protected
29
-
30
- # ელექტრონული ზედნადების SOAP კლიენტის მიღება
31
- def self.waybill_service
32
- Savon::Client.new do
33
- wsdl.document = WAYBILL_SERVICE_URL
34
- end
35
- end
36
-
37
- # ანგარიშ-ფაქტურის SOAP კლიენტის მიღება
38
- def self.invoice_service
39
- Savon::Client.new do
40
- wsdl.document = INVOICE_SERVICE_URL
41
- end
42
- end
43
-
44
- # ამოწმებს პარამეტრების მნიშვნელობას su და sp
45
- # და თუ ისინი არაა განსაზღვრული, მიანიჭებს ღია
46
- # მომხმარებლის პარამეტრებს.
47
- # ეს სასარგებლოა ისეთი მონაცემების მისაღებად,
48
- # რომელიც არაა უშუალოდ დაკავშირებული ორგანიზაციის
49
- # საქმიანობოსთან.
50
- def self.ensure_open_user(params)
51
- unless params['su']
52
- params['su'] = OPEN_SU
53
- params['sp'] = OPEN_SP
54
- end
55
- end
56
-
57
- # ამოწმებს, რომ მოცემულ პარამეტრებში ყველას მნიშვნელობა განსხვავდებოდეს <code>nil</code>-სგან.
58
- def self.validate_presence_of(params, *options)
59
- options.each do |opt|
60
- val = params[opt.to_s]
61
- raise RS::Error.new("#{opt.to_s} required") if val.nil? or (val.instance_of? String and val.strip.empty?)
62
- end if options
63
- end
64
-
65
- # უზრუნველყოფს <code>nil</code> მნიშვნელობების სწორად ჩაწერას.
66
- def self.prepare_params(params)
67
- attributes = {}
68
- params.each do |k, v|
69
- if v.nil?
70
- params.delete k
71
- attributes[k] = {'xsi:nil' => true}
72
- end
73
- end
74
- params['attributes!'] = attributes unless attributes.empty?
75
- end
76
- end
8
+ # requests
9
+ require 'rs/requests/base_request'
10
+ require 'rs/requests/waybill_unit_request'
@@ -0,0 +1,21 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ # WaybillUnit is a unit which is used to describe production quantities in waybill.
4
+ #
5
+ # The Revenue Service of Georgia provides us with standard set of units,
6
+ # which can be obtained using RS.waybill_units method call.
7
+ #
8
+ # One special unit, is the unit which describes all units which were not included
9
+ # in the Revenue Service list. Identification number for this special unit is
10
+ # stored in contant RS::WaybillUnit::OTHERS.
11
+ class RS::WaybillUnit
12
+ # Unit ID.
13
+ attr_accessor :id
14
+
15
+ # Unit name,
16
+ attr_accessor :name
17
+
18
+ # Identification number for the unit, which were not included in
19
+ # the Revenue Service list of units.
20
+ OTHERS = 99
21
+ end
@@ -0,0 +1,20 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'savon'
3
+
4
+ # This class is the base for other request classes.
5
+ #
6
+ class RS::BaseRequest
7
+ # Waybill service WSDL location.
8
+ WAYBILL_SERVICE_URL = 'http://services.rs.ge/WayBillService/WayBillService.asmx?WSDL'
9
+
10
+ # Getting Savon client.
11
+ def waybill_client
12
+ Savon::Client.new { wsdl.document = WAYBILL_SERVICE_URL }
13
+ end
14
+
15
+ # Validates presence of specified keys in the #{params} hash.
16
+ def validate_presence_of(params, *keys)
17
+ diff = keys - params.keys
18
+ raise ArgumentError, "The following parameter(s) not specified: #{diff.to_s[1..-2]}" unless diff.empty?
19
+ end
20
+ end
@@ -0,0 +1,44 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'singleton'
3
+
4
+ module RS
5
+ # Request object, used for processing waybill units.
6
+ #
7
+ # Use RS.unit or RS.units call to access instance of this class.
8
+ class WaybillUnitRequest < BaseRequest
9
+ include Singleton
10
+
11
+ # Returns all units.
12
+ def all(opts = {})
13
+ validate_presence_of(opts, :su, :sp)
14
+ response = waybill_client.request 'get_waybill_units' do
15
+ soap.body = { 'su' => opts[:su], 'sp' => opts[:sp] }
16
+ end
17
+ extract_units_from_response(response)
18
+ end
19
+
20
+ private
21
+
22
+ def extract_units_from_response(response)
23
+ units = []
24
+ units_hash = response.to_hash[:get_waybill_units_response][:get_waybill_units_result][:waybill_units][:waybill_unit]
25
+ units_hash.each do |hash|
26
+ unit = WaybillUnit.new
27
+ unit.id = hash[:id].to_i
28
+ unit.name = hash[:name]
29
+ units << unit
30
+ end
31
+ units
32
+ end
33
+
34
+ end
35
+
36
+ # Returns the instance of WaybillUnitRequest class.
37
+ def self.units
38
+ RS::WaybillUnitRequest.instance
39
+ end
40
+
41
+ class << self
42
+ alias_method :unit, :units
43
+ end
44
+ end
@@ -1,5 +1,4 @@
1
1
  # -*- encoding : utf-8 -*-
2
-
3
2
  module RS
4
- VERSION = '0.0.17'
3
+ VERSION = '0.1.0.beta1'
5
4
  end
data/rs.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $:.push File.expand_path("../lib", __FILE__)
3
- require "rs/version"
3
+ require 'rs/version'
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "rs.ge"
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
9
9
  s.email = ["dimitri@c12.ge"]
10
10
  s.homepage = "http://c12.ge"
11
11
  s.summary = %q{rs.ge web services}
12
- s.description = %q{ruby client for rs.ge web services}
12
+ s.description = %q{Ruby client for rs.ge web services}
13
13
 
14
14
  s.rubyforge_project = "rs"
15
15
 
@@ -19,10 +19,8 @@ Gem::Specification.new do |s|
19
19
  s.require_paths = ["lib"]
20
20
 
21
21
  s.add_development_dependency 'rspec', '~> 2'
22
- s.add_development_dependency 'simplecov'
23
-
24
22
  s.add_runtime_dependency 'savon'
25
23
  s.add_runtime_dependency 'httpi'
26
24
  s.add_runtime_dependency 'prawn', '~>0.12'
27
25
  s.add_runtime_dependency 'c12-commons', '~> 0.0.5'
28
- end
26
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe 'getting waybill units' do
5
+ before(:all) do
6
+ @units = RS.units.all(SU_PARAMS)
7
+ end
8
+ subject { @units }
9
+ it { should_not be_nil }
10
+ it { should_not be_empty }
11
+ context 'first unit' do
12
+ subject { @units.first }
13
+ it { should be_instance_of RS::WaybillUnit }
14
+ its(:id) { should_not be_nil }
15
+ its(:name) { should_not be_nil }
16
+ end
17
+ context 'last unit' do
18
+ subject { @units.last }
19
+ it { should be_instance_of RS::WaybillUnit }
20
+ its(:id) { should_not be_nil }
21
+ its(:id) { should == RS::WaybillUnit::OTHERS }
22
+ its(:name) { should_not be_nil }
23
+ end
24
+ end
@@ -7,97 +7,15 @@ require 'savon'
7
7
  HTTPI.log = false
8
8
  Savon.log = false
9
9
 
10
- # SimpleCov
11
-
12
- require 'simplecov'
13
-
14
- SimpleCov.start do
15
- add_filter '/spec/'
16
- end
17
-
18
10
  # RSpec
19
11
 
20
- require 'rspec'
21
12
  require 'rs'
13
+ require 'rspec'
22
14
 
23
15
  RSpec.configure do |config|
24
16
  config.include(RSpec::Matchers)
25
17
  end
26
18
 
27
- # Test organizations provided by RS.GE service
19
+ # Test user parameters.
28
20
 
29
- module RS
30
- unless defined?(TEST_ORG1) and defined?(TEST_ORG2)
31
- TEST_ORG1 = { :user => 'tbilisi', :password => '123456', :taxid => '206322102'}
32
- TEST_ORG2 = { :user => 'satesto2', :password => '123456', :taxid => '12345678910'}
33
- end
34
- unless defined?(SU_NAME) and defined?(SU_PSWD)
35
- SU_NAME = 'dimitri1979'
36
- SU_PSWD = '123456'
37
- end
38
- def self.su_params
39
- {'su' => SU_NAME, 'sp' => SU_PSWD}
40
- end
41
- def self.auth_params(org = 1)
42
- u = org == 1 ? TEST_ORG1[:user] : TEST_ORG2[:user]
43
- p = org == 2 ? TEST_ORG1[:password] : TEST_ORG2[:password]
44
- {'user_name' => u, 'user_password' => p}
45
- end
46
- end
47
-
48
- def waybill_skeleton(params = {})
49
- waybill = RS::Waybill.new
50
- waybill.id = params[:id]
51
- waybill.type = params[:type] || RS::WaybillType::TRANSPORTATION
52
- waybill.status = params[:status] || RS::Waybill::STATUS_SAVED
53
- waybill.seller_id = params[:seller_id] || 731937
54
- waybill.buyer_tin = params[:buyer_tin] || '12345678910'
55
- waybill.check_buyer_tin = params[:check_buyer_tin] ? params[:check_buyer_tin] : true
56
- waybill.buyer_name = params[:buyer_name] || 'სატესტო სატესტო'
57
- waybill.start_address = params[:start_address] || 'თბილისი'
58
- waybill.end_address = params[:end_address] || 'სოხუმი'
59
- waybill.transport_type_id = params[:transport_type_id] || RS::TransportType::VEHICLE
60
- waybill.start_date = params[:start_date] || Time.now
61
- waybill.comment = params[:comment] #|| 'comment'
62
- if waybill.transport_type_id == RS::TransportType::VEHICLE
63
- waybill.car_number = params[:car_number] || 'WDW842'
64
- waybill.driver_name = params[:driver_name] || 'დიმიტრი ყურაშვილი'
65
- waybill.driver_tin = params[:driver_tin] || '02001000490'
66
- waybill.check_driver_tin = params[:check_driver_tin].nil? ? false : params[:check_driver_tin]
67
- else
68
- waybill.car_number = params[:car_number]
69
- waybill.driver_name = params[:driver_name]
70
- waybill.driver_tin = params[:driver_tin]
71
- waybill.check_driver_tin = params[:check_driver_tin]
72
- end
73
- waybill.transportation_cost = params[:transportation_cost] || 0
74
- waybill.transportation_cost_payer =params[:transportation_cost_payer] || RS::Waybill::TRANSPORTATION_PAID_BY_BUYER
75
-
76
- if params[:items]
77
- items = []
78
- params[:items].each do |it|
79
- item = RS::WaybillItem.new
80
- item.prod_name = it[:name]
81
- item.unit_id = it[:unit_id]
82
- item.unit_name = it[:unit_name]
83
- item.quantity = it[:quantity]
84
- item.price = it[:price]
85
- item.bar_code = it[:code]
86
- item.vat_type = it[:vat_type]
87
- items << item
88
- end
89
- else
90
- item = RS::WaybillItem.new
91
- item.prod_name = 'ბალი ალუბალი წითელი'
92
- item.unit_id = 99
93
- item.unit_name = 'კილოგრამი'
94
- item.quantity = 10
95
- item.price = 3
96
- item.bar_code = '001'
97
- item.vat_type = RS::Waybill::VAT_COMMON
98
- items = [item]
99
- end
100
- waybill.items = items
101
-
102
- waybill
103
- end
21
+ SU_PARAMS = {:su => 'dimitri1979', :sp => '123456'}
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rs.ge
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.17
5
- prerelease:
4
+ version: 0.1.0.beta1
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Dimitri Kurashvili
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-02 00:00:00.000000000 Z
12
+ date: 2012-04-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -27,22 +27,6 @@ dependencies:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
29
  version: '2'
30
- - !ruby/object:Gem::Dependency
31
- name: simplecov
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
38
- type: :development
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
30
  - !ruby/object:Gem::Dependency
47
31
  name: savon
48
32
  requirement: !ruby/object:Gem::Requirement
@@ -107,7 +91,7 @@ dependencies:
107
91
  - - ~>
108
92
  - !ruby/object:Gem::Version
109
93
  version: 0.0.5
110
- description: ruby client for rs.ge web services
94
+ description: Ruby client for rs.ge web services
111
95
  email:
112
96
  - dimitri@c12.ge
113
97
  executables: []
@@ -121,26 +105,13 @@ files:
121
105
  - README.md
122
106
  - Rakefile
123
107
  - lib/rs.rb
124
- - lib/rs/car.rb
125
- - lib/rs/dict.rb
126
- - lib/rs/invoice.rb
127
- - lib/rs/print.rb
128
- - lib/rs/sys.rb
108
+ - lib/rs/models/waybill_unit.rb
109
+ - lib/rs/requests/base_request.rb
110
+ - lib/rs/requests/waybill_unit_request.rb
129
111
  - lib/rs/version.rb
130
- - lib/rs/waybill.rb
131
- - problems.md
132
112
  - rs.gemspec
133
- - spec/rs/car_spec.rb
134
- - spec/rs/dict_spec.rb
135
- - spec/rs/open_user.rb
136
- - spec/rs/pdf_spec.rb
137
- - spec/rs/sys_spec.rb
138
- - spec/rs/waybill_delete_spec.rb
139
- - spec/rs/waybill_invoice_spec.rb
140
- - spec/rs/waybill_spec.rb
141
- - spec/rs/waybill_validation_spec.rb
113
+ - spec/requests/waybill_units_spec.rb
142
114
  - spec/spec_helper.rb
143
- - tmp/waybill.pdf
144
115
  homepage: http://c12.ge
145
116
  licenses: []
146
117
  post_install_message:
@@ -156,14 +127,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
156
127
  required_rubygems_version: !ruby/object:Gem::Requirement
157
128
  none: false
158
129
  requirements:
159
- - - ! '>='
130
+ - - ! '>'
160
131
  - !ruby/object:Gem::Version
161
- version: '0'
132
+ version: 1.3.1
162
133
  requirements: []
163
134
  rubyforge_project: rs
164
- rubygems_version: 1.8.19
135
+ rubygems_version: 1.8.23
165
136
  signing_key:
166
137
  specification_version: 3
167
138
  summary: rs.ge web services
168
- test_files: []
169
- has_rdoc:
139
+ test_files:
140
+ - spec/requests/waybill_units_spec.rb
141
+ - spec/spec_helper.rb
@@ -1,6 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- module RS
3
- def self.valid_vehicle_number?(num)
4
- not not (num =~ /^[a-zA-Z]{3}[0-9]{3}$/)
5
- end
6
- end
@@ -1,259 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- module RS
4
-
5
- # ეს არის აქციზის კოდის აღმწერი კლასი.
6
- class ExciseCode
7
- # name -- აქციზის დასახელება
8
- # measure -- ზომის ერთეული
9
- # code -- აქციზის კოდი
10
- # value -- აქციზის განაკვეთი
11
- attr_accessor :id, :name, :measure, :code, :value
12
- end
13
-
14
- # ეს არის ზედნადების ტიპის კლასი.
15
- class WaybillType
16
- INNER = 1
17
- TRANSPORTATION = 2
18
- WITHOUT_TRANSPORTATION = 3
19
- DISTRIBUTION = 4
20
- RETURN = 5
21
- SUB_WAYBILL = 6
22
- NAMES = {
23
- INNER => 'შიდა გადაზიდვა', TRANSPORTATION => 'ტრანსპორტირებით', WITHOUT_TRANSPORTATION => 'ტრანსპორტირების გარეშე',
24
- DISTRIBUTION => 'დისტრიბუცია', RETURN => 'უკან დაბრუნება', SUB_WAYBILL => 'ქვე-ზედნადები'
25
- }
26
- attr_accessor :id, :name
27
- def self.create_from_id(id)
28
- type = WaybillType.new
29
- type.id = id
30
- type.name = NAMES[id]
31
- type
32
- end
33
- def self.all_types
34
- []
35
- end
36
- end
37
-
38
- # ზედნადების ერთეულების განსაზღვრა.
39
- class WaybillUnit
40
- attr_accessor :id, :name
41
-
42
- # ეს კოდი შეესაბამება ზომის ერთეულს 'სხვა'.
43
- OTHERS = 99
44
- end
45
-
46
- # ტრანსპორტირების ტიპი
47
- class TransportType
48
- VEHICLE = 1
49
- RAILWAY = 2
50
- AIR = 3
51
- TRAILER = 5
52
- OTHERS = 4
53
- NAMES = { VEHICLE => 'საავტომობილო', RAILWAY => 'სარკინიგზო', AIR => 'საავიაციო', TRAILER => 'მისაბმელი', OTHERS => 'სხვა' }
54
-
55
- attr_accessor :id, :name
56
-
57
- def self.create_from_id(id)
58
- type = TransportType.new
59
- type.id = id
60
- type.name = NAMES[id]
61
- type
62
- end
63
- end
64
-
65
- # შტრიხკოდის აღმწერი კლასი
66
- class BarCode
67
- attr_accessor :code, :name, :unit_id, :unit_name, :excise_id
68
- end
69
-
70
- protected
71
-
72
- def self.normalize_excise_name(name)
73
- index = name =~ /\([0-9]*\)/
74
- index ? name[0..index-1].strip : name
75
- end
76
-
77
- public
78
-
79
- # აქციზის კოდების სიის მიღება.
80
- #
81
- # უნდა გადაეცეს შემდეგი პარამეტრები:
82
- #
83
- # su -- სერვისის მომხმარებლის სახელი
84
- # sp -- სერვისის მომხმარებლის პაროლი
85
- # normilize -- კი/არა, გამოიყენოს თუ არა სახელების ნორმალიზებული მნიშვნელობები (საწყისად ნორმალიზებულია)
86
- def self.get_excise_codes(params)
87
- RS.ensure_open_user(params)
88
- RS.validate_presence_of(params, 'su', 'sp')
89
- client = RS.waybill_service
90
- response = client.request 'get_akciz_codes' do
91
- soap.body = params
92
- end
93
- normalize = params['normilize'] || true
94
- codes_hash = response.to_hash[:get_akciz_codes_response][:get_akciz_codes_result][:akciz_codes][:akciz_code]
95
- codes = []
96
- codes_hash.each do |hash|
97
- code = ExciseCode.new
98
- code.id = hash[:id]
99
- code.name = normalize ? normalize_excise_name(hash[:title]) : hash([:title])
100
- code.measure = hash[:measurement]
101
- code.code = hash[:sakon_kodi]
102
- code.value = hash[:akcis_ganakv].to_f
103
- codes << code
104
- end
105
- codes
106
- end
107
-
108
- # ზედნადების ტიპების მიღება.
109
- #
110
- # უნდა გადაეცეს შემდეგი პარამეტრები:
111
- #
112
- # su -- სერვისის მომხმარებლის სახელი
113
- # sp -- სერვისის მომხმარებლის პაროლი
114
- def self.get_waybill_types(params)
115
- RS.ensure_open_user(params)
116
- RS.validate_presence_of(params, 'su', 'sp')
117
- client = RS.waybill_service
118
- response = client.request 'get_waybill_types' do
119
- soap.body = params
120
- end
121
- types_hash = response.to_hash[:get_waybill_types_response][:get_waybill_types_result][:waybill_types][:waybill_type]
122
- types = []
123
- types_hash.each do |hash|
124
- type = WaybillType.new
125
- type.id = hash[:id]
126
- type.name = hash[:name]
127
- #puts "#{type.id}: #{type.name}"
128
- types << type
129
- end
130
- types
131
- end
132
-
133
- # ზედნადების ზომის ერთეულების მიღება.
134
- #
135
- # უნდა გადაეცეს შემდეგი პარამეტრები:
136
- #
137
- # su -- სერვისის მომხმარებლის სახელი
138
- # sp -- სერვისის მომხმარებლის პაროლი
139
- def self.get_waybill_units(params)
140
- RS.ensure_open_user(params)
141
- RS.validate_presence_of(params, 'su', 'sp')
142
- client = RS.waybill_service
143
- response = client.request 'get_waybill_units' do
144
- soap.body = params
145
- end
146
- units_hash = response.to_hash[:get_waybill_units_response][:get_waybill_units_result][:waybill_units][:waybill_unit]
147
- units = []
148
- units_hash.each do |hash|
149
- unit = WaybillUnit.new
150
- unit.id = hash[:id]
151
- unit.name = hash[:name]
152
- #puts "#{unit.id}: #{unit.name}"
153
- units << unit
154
- end
155
- units
156
- end
157
-
158
- # ტრანსპორტის სახეობების მიღება.
159
- #
160
- # უნდა გადაეცეს შემდეგი პარამეტრები:
161
- #
162
- # su -- სერვისის მომხმარებლის სახელი
163
- # sp -- სერვისის მომხმარებლის პაროლი
164
- def self.get_transport_types(params)
165
- RS.ensure_open_user(params)
166
- RS.validate_presence_of(params, 'su', 'sp')
167
- client = RS.waybill_service
168
- response = client.request 'get_trans_types' do
169
- soap.body = params
170
- end
171
- types_hash = response.to_hash[:get_trans_types_response][:get_trans_types_result][:transport_types][:transport_type]
172
- types = []
173
- types_hash.each do |hash|
174
- type = TransportType.new
175
- type.id = hash[:id]
176
- type.name = hash[:name]
177
- #puts "#{type.id}: #{type.name}"
178
- types << type
179
- end
180
- types
181
- end
182
-
183
- # შტრიხკოდის შენახვის მეთოდი.
184
- #
185
- # უნდა გადაეცეს შემდეგი პარამეტრები:
186
- #
187
- # su -- სერვისის მომხმარებლის სახელი
188
- # sp -- სერვისის მომხმარებლის პაროლი
189
- # bar_code -- შტრიხკოდის მნიშვნელობა
190
- # prod_name -- საქონლის დასახელება (შეესაბამება <code>goods_name</code> RS-ის სპეციფიკაციაში)
191
- # unit_id -- ზომის ერთეულის კოდი
192
- # unit_name -- ზომის ერთეულის დასახელება, როდესაც #{unit_id} ტოლია #{WaybillUnit::OTHERS},
193
- # სხვა მნიშვნელობისთვის ეს პარამეტრი არ უნდა გადმოეცეს
194
- # (შეესანამება <code>unit_txt</code> პარამეტრს RS-ის სპეციფიკაციაში)
195
- # excise_id -- აქციზის კოდი. ან <code>nil</code>, თუ აქციზის კოდი არ უყენდება ამ საქონელს
196
- # (შეესაბამება <code>a_id</code> პარამეტრს RS-ის სპეციფიკაციაში)
197
- def self.save_bar_code(params)
198
- RS.validate_presence_of(params, 'su', 'sp', 'bar_code', 'prod_name', 'unit_id')
199
- params2 = {'su' => params['su'], 'sp' => params['sp'], 'bar_code' => params['bar_code'],
200
- 'goods_name' => params['prod_name'], 'unit_id' => params['unit_id'],
201
- 'unit_txt' => params['unit_name'], 'a_id' => params['excise_id']}
202
- prepare_params(params2)
203
- params2['order!'] = ['su', 'sp', 'bar_code', 'goods_name', 'unit_id', 'unit_txt', 'a_id']
204
- client = RS.waybill_service
205
- response = client.request 'save_bar_code' do
206
- soap.body = params2
207
- end
208
- resp = response.to_hash[:save_bar_code_response][:save_bar_code_result]
209
- resp.to_i == 1 # success!
210
- end
211
-
212
- # შტრიხკოდის წაშლის მეთოდი.
213
- #
214
- # უნდა გადაეცეს შემდეგი პარამეტრები:
215
- #
216
- # su -- სერვისის მომხმარებლის სახელი
217
- # sp -- სერვისის მომხმარებლის პაროლი
218
- # bar_code -- შტრიხკოდის მნიშვნელობა
219
- def self.delete_bar_code(params)
220
- RS.validate_presence_of(params, 'su', 'sp', 'bar_code')
221
- params['order!'] = ['su', 'sp', 'bar_code']
222
- client = RS.waybill_service
223
- response = client.request 'delete_bar_code' do
224
- soap.body = params
225
- end
226
- resp = response.to_hash[:delete_bar_code_response][:delete_bar_code_result]
227
- resp.to_i == 1 # success!
228
- end
229
-
230
- # შტრიხკოდების მიღების მეთოდი.
231
- #
232
- # უნდა გადაეცეს შემდეგი პარამეტრები:
233
- #
234
- # su -- სერვისის მომხმარებლის სახელი
235
- # sp -- სერვისის მომხმარებლის პაროლი
236
- # bar_code -- შტრიხკოდის მნიშვნელობა, რომლის მსგავსის ამოღებაც გვინდა
237
- def self.get_bar_codes(params)
238
- RS.validate_presence_of(params, 'su', 'sp', 'bar_code')
239
- params['order!']= ['su', 'sp', 'bar_code']
240
- client = RS.waybill_service
241
- response = client.request 'get_bar_codes' do
242
- soap.body = params
243
- end
244
- codes_hash = response.to_hash[:get_bar_codes_response][:bar_codes][:bar_codes][:bar_code]
245
- codes_hash = [codes_hash] if codes_hash.instance_of? Hash
246
- codes = []
247
- codes_hash.each do |hash|
248
- code = BarCode.new
249
- code.code = hash[:code]
250
- code.name = hash[:name]
251
- code.unit_id = hash[:unit_id].to_i
252
- code.unit_name = hash[:unit_txt]
253
- code.excise_id = hash[:a_id].to_i == 0 ? nil : hash[:a_id].to_i
254
- codes << code
255
- end
256
- codes
257
- end
258
-
259
- end