cin7_api 1.0.5 → 1.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0553e1a9d4db6501e28ed87aa824a5e58ce79171917f04f7d3c9fb72cb35454e
4
- data.tar.gz: d71205d4103dc6eecaaf6fa6b4b1465e8ff14e3e4b017edfa0d9daa24e7452d6
3
+ metadata.gz: 056166ba00f5465bd7aa38f23e82a384f0690cb4edaddf990d6794cd30785736
4
+ data.tar.gz: 9cc3abe5f31a1c51a063dfd52e30a040dcab70078f1d54f26df6c71fa61e0cdb
5
5
  SHA512:
6
- metadata.gz: a19008caf61d33c068423f9aa656d5eba3348d2b262bdc044f7914a395385bf9465244a281b5173c0272170c556acb20ea287f24acd02bc48f2af6608424f476
7
- data.tar.gz: 69a986ad34adda010c8075166e031ef3e1a56411d7e904498f2c4bee318fb0250b4fd36b77773b4c4f0cf6bdc5bdff5a8297c3f3d1ee9b877fed6c9ad674d2ba
6
+ metadata.gz: b2d9165f321d846269107172ee3da875725e086cbf20246f2a9dc70de0ecbc51f3595d76829eca8ff285dc3c908ff3398ea643bf6575d0832dca0889202f8927
7
+ data.tar.gz: 1a14d8c4a9977f810609cdaec318edc69801cc2fba5b4825b57d878dd3c813e3c2f09d00ccd705cd3305ec4c5580d907ef2ec4996e3ddd7810bccdf978a83c54
data/Gemfile CHANGED
@@ -8,5 +8,3 @@ gemspec
8
8
  gem "rake", "~> 13.0"
9
9
 
10
10
  gem "rspec", "~> 3.0"
11
-
12
- gem "rubocop", "~> 1.21"
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cin7_api (1.0.5)
4
+ cin7_api (1.1.0)
5
5
  activesupport
6
6
  faraday (~> 2.5)
7
7
  zeitwerk
@@ -9,34 +9,35 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- activesupport (7.0.4)
12
+ activesupport (7.0.5)
13
13
  concurrent-ruby (~> 1.0, >= 1.0.2)
14
14
  i18n (>= 1.6, < 2)
15
15
  minitest (>= 5.1)
16
16
  tzinfo (~> 2.0)
17
17
  ast (2.4.2)
18
18
  coderay (1.1.3)
19
- concurrent-ruby (1.1.10)
19
+ concurrent-ruby (1.2.2)
20
20
  diff-lcs (1.5.0)
21
21
  dotenv (2.8.1)
22
- faraday (2.6.0)
22
+ faraday (2.7.5)
23
23
  faraday-net_http (>= 2.0, < 3.1)
24
24
  ruby2_keywords (>= 0.0.4)
25
- faraday-net_http (3.0.1)
26
- i18n (1.12.0)
25
+ faraday-net_http (3.0.2)
26
+ i18n (1.13.0)
27
27
  concurrent-ruby (~> 1.0)
28
- json (2.6.2)
28
+ json (2.6.3)
29
+ language_server-protocol (3.17.0.3)
29
30
  method_source (1.0.0)
30
- minitest (5.16.3)
31
+ minitest (5.18.0)
31
32
  parallel (1.22.1)
32
- parser (3.1.2.1)
33
+ parser (3.2.2.0)
33
34
  ast (~> 2.4.1)
34
35
  pry (0.14.1)
35
36
  coderay (~> 1.1)
36
37
  method_source (~> 1.0)
37
38
  rainbow (3.1.1)
38
39
  rake (13.0.6)
39
- regexp_parser (2.5.0)
40
+ regexp_parser (2.7.0)
40
41
  rexml (3.2.5)
41
42
  rspec (3.11.0)
42
43
  rspec-core (~> 3.11.0)
@@ -51,27 +52,35 @@ GEM
51
52
  diff-lcs (>= 1.2.0, < 2.0)
52
53
  rspec-support (~> 3.11.0)
53
54
  rspec-support (3.11.1)
54
- rubocop (1.36.0)
55
+ rubocop (1.48.1)
55
56
  json (~> 2.3)
56
57
  parallel (~> 1.10)
57
- parser (>= 3.1.2.1)
58
+ parser (>= 3.2.0.0)
58
59
  rainbow (>= 2.2.2, < 4.0)
59
60
  regexp_parser (>= 1.8, < 3.0)
60
61
  rexml (>= 3.2.5, < 4.0)
61
- rubocop-ast (>= 1.20.1, < 2.0)
62
+ rubocop-ast (>= 1.26.0, < 2.0)
62
63
  ruby-progressbar (~> 1.7)
63
- unicode-display_width (>= 1.4.0, < 3.0)
64
- rubocop-ast (1.21.0)
65
- parser (>= 3.1.1.0)
66
- ruby-progressbar (1.11.0)
64
+ unicode-display_width (>= 2.4.0, < 3.0)
65
+ rubocop-ast (1.28.0)
66
+ parser (>= 3.2.1.0)
67
+ rubocop-performance (1.16.0)
68
+ rubocop (>= 1.7.0, < 2.0)
69
+ rubocop-ast (>= 0.4.0)
70
+ ruby-progressbar (1.13.0)
67
71
  ruby2_keywords (0.0.5)
68
- tzinfo (2.0.5)
72
+ standard (1.25.5)
73
+ language_server-protocol (~> 3.17.0.2)
74
+ rubocop (~> 1.48.1)
75
+ rubocop-performance (~> 1.16.0)
76
+ tzinfo (2.0.6)
69
77
  concurrent-ruby (~> 1.0)
70
- unicode-display_width (2.3.0)
78
+ unicode-display_width (2.4.2)
71
79
  vcr (6.1.0)
72
- zeitwerk (2.6.1)
80
+ zeitwerk (2.6.8)
73
81
 
74
82
  PLATFORMS
83
+ arm64-darwin-22
75
84
  x86_64-darwin-21
76
85
  x86_64-linux
77
86
 
@@ -81,7 +90,7 @@ DEPENDENCIES
81
90
  pry
82
91
  rake (~> 13.0)
83
92
  rspec (~> 3.0)
84
- rubocop (~> 1.21)
93
+ standard (~> 1.25.0)
85
94
  vcr
86
95
 
87
96
  BUNDLED WITH
@@ -26,6 +26,10 @@ module Cin7API
26
26
  PaymentResource.new(self)
27
27
  end
28
28
 
29
+ def branch
30
+ BranchResource.new(self)
31
+ end
32
+
29
33
  def connection
30
34
  @connection ||= Faraday.new do |conn|
31
35
  conn.url_prefix = BASE_URL
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cin7API
4
+ class Branch < Object
5
+ end
6
+ end
@@ -35,13 +35,14 @@ module Cin7API
35
35
  when 404
36
36
  raise Error, "The resource you have specified cannot be found. #{error_message}"
37
37
  when 429
38
- raise RateLimitError, "The API rate limit for your application has been exceeded. #{error_message}"
38
+ raise RateLimitError,
39
+ "The API rate limit for your application has been exceeded. #{error_message}"
39
40
  when 500
40
41
  raise ServerError,
41
- "An unhandled error with the Cin7 API. Contact the Cin7 API team if problems persist. #{error_message}"
42
+ "An unhandled error with the Cin7 API. Contact the Cin7 API team if problems persist. #{error_message}"
42
43
  when 503
43
44
  raise Error,
44
- "API is currently unavailable – typically due to a scheduled outage – try again soon. #{error_message}"
45
+ "API is currently unavailable – typically due to a scheduled outage – try again soon. #{error_message}"
45
46
  end
46
47
 
47
48
  response
@@ -51,14 +52,15 @@ module Cin7API
51
52
 
52
53
  def parsed_params(params)
53
54
  # E.g: Need to convert to where: ["OrderId=2223", "SalesRefernce='CRN-2223'"]
54
- parsed_params = params.each_with_object([]) do |(key, value), array|
55
- # Cin7 requires string value filter to be wrapped in single-quote
56
- parsed_value = value.is_a?(String) ? %('#{value}') : value
57
- array << "#{key.to_s.camelcase}=#{parsed_value}"
58
- end
55
+ parsed_params =
56
+ params.each_with_object([]) do |(key, value), array|
57
+ # Cin7 requires string value filter to be wrapped in single-quote
58
+ parsed_value = value.is_a?(String) ? %('#{value}') : value
59
+ array << "#{key.to_s.camelcase}=#{parsed_value}"
60
+ end
59
61
 
60
62
  # Only handle for Cin7 where query for now
61
- { where: parsed_params }
63
+ {where: parsed_params}
62
64
  end
63
65
  end
64
66
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cin7API
4
+ class BranchResource < Resource
5
+ # Use 1 for active branches
6
+ # Use 0 for inactive branches
7
+ # @client.branch.where(active: 1)
8
+ def where(**params)
9
+ response_body = get_request("Branches", params: params).body
10
+ branches = response_body.map { |attributes| Branch.new(attributes) }
11
+ # Doing a filter here because Cin7 is doing a binary OR check for the filter params
12
+ branches.filter do |branch|
13
+ params.reduce(true) do |acc, (key, value)|
14
+ if key == :active
15
+ parsed_value = value == 1
16
+ branch["is_active"] == parsed_value
17
+ else
18
+ acc && branch[key] == value
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -35,5 +35,30 @@ module Cin7API
35
35
  responses = put_request("CreditNotes", body: attributes_array).body
36
36
  responses.map { |attributes| Response.new(attributes) }
37
37
  end
38
+
39
+ # attributes_array = [
40
+ # {
41
+ # branchId: 3,
42
+ # salesReference: "HBP1030",
43
+ # lineItems: [
44
+ # {
45
+ # code: "5-PAIRS-SOCKS",
46
+ # styleCode: "5-PAIRS-SOCKS",
47
+ # sizeCodes: nil,
48
+ # name: "5PAIRS SOCKS - ONE SIZE",
49
+ # option1: "ONE SIZE",
50
+ # option2: "",
51
+ # option3: nil,
52
+ # qty: 1,
53
+ # unitPrice: 0
54
+ # },
55
+ # ],
56
+ # }
57
+ # ]
58
+ # @client.credit_note.create(attributes_array)
59
+ def create(attributes_array)
60
+ responses = post_request("CreditNotes", body: attributes_array).body
61
+ responses.map { |attributes| Response.new(attributes) }
62
+ end
38
63
  end
39
64
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cin7API
4
- VERSION = "1.0.5"
4
+ VERSION = "1.1.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cin7_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wei Zhe Heng
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-10-27 00:00:00.000000000 Z
11
+ date: 2023-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: standard
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.25.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.25.0
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: faraday
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -115,11 +129,13 @@ files:
115
129
  - lib/cin7_api/client.rb
116
130
  - lib/cin7_api/errors.rb
117
131
  - lib/cin7_api/object.rb
132
+ - lib/cin7_api/objects/branch.rb
118
133
  - lib/cin7_api/objects/credit_note.rb
119
134
  - lib/cin7_api/objects/payment.rb
120
135
  - lib/cin7_api/objects/response.rb
121
136
  - lib/cin7_api/objects/sales_order.rb
122
137
  - lib/cin7_api/resource.rb
138
+ - lib/cin7_api/resources/branch_resource.rb
123
139
  - lib/cin7_api/resources/credit_note_resource.rb
124
140
  - lib/cin7_api/resources/payment_resource.rb
125
141
  - lib/cin7_api/resources/sales_order_resource.rb
@@ -149,7 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
165
  - !ruby/object:Gem::Version
150
166
  version: '0'
151
167
  requirements: []
152
- rubygems_version: 3.3.22
168
+ rubygems_version: 3.4.10
153
169
  signing_key:
154
170
  specification_version: 4
155
171
  summary: Cin7 API Wrapper