erp_integration 0.5.5 → 0.6.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
  SHA256:
3
- metadata.gz: 6ba635456dc688941f6d3a1d52b48f9a24ef6a6ccfd8ebb5f522749b6054546b
4
- data.tar.gz: 802f67bc96c101f8945a27c8925b2690d4d7513f2435457c69fee91f9fad2de0
3
+ metadata.gz: 346594300ff75a2d7f21a9e226287fe43b8b4765105d80d73840e4ff8fd9c355
4
+ data.tar.gz: 67b680a54fec9cb91866b6d9658dc7eeb4a63168f76826a7bba421148c0a77a5
5
5
  SHA512:
6
- metadata.gz: acd6cb73c26c593d2c01e78ca994274a84c4bbaea429542f21b524411fef9ab3e1e4e1b3bbf84bdf17cb8c2e66efef4969bed6531bcbd165acde0dbd87195952
7
- data.tar.gz: '0680d849ab5f42043ec2a8903c1f139e7c180e295737218cb83511c83122ecf3e3f038e0bc2943aed51da85f8b24dade4ee858e4eb1a158d39dbd4109ab815a8'
6
+ metadata.gz: 5e36d2c2d1b0c5f231cef0477a5154fe4a101f262d9171f20cbb3fc051df8feff4655dcd9f5265634f241056a35a8562ca2caa580488b49d6c4c865fa4456aa1
7
+ data.tar.gz: b6dcd7aa6843c5e8686a2489ea88ba80c3a2ba543b941d00f652ef0621b0a6feaebc93c4ae9dcbab78f199e139fa7900060b46c7b812a96cffa0022821f3f36f
@@ -17,6 +17,12 @@ module ErpIntegration
17
17
  end
18
18
  end
19
19
 
20
+ class ResourceNotFound < Error
21
+ def initialize
22
+ super "[ERP Integration] Couldn't find the requested resource."
23
+ end
24
+ end
25
+
20
26
  class HttpError < Faraday::Error
21
27
  class BadRequest < HttpError; end
22
28
  class AuthorizationRequired < HttpError; end
@@ -1,11 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'finder_methods'
3
4
  require_relative 'query_methods'
4
5
 
5
6
  module ErpIntegration
6
7
  module Fulfil
7
8
  class ApiResource
8
9
  include Enumerable
10
+ include FinderMethods
9
11
  include QueryMethods
10
12
 
11
13
  attr_accessor :resource_klass
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ErpIntegration
4
+ module Fulfil
5
+ # The `FinderMethods` add various, simplistic lookup methods to find API resources.
6
+ # These methods should be the last method in the chain as it will invoke the HTTP
7
+ # request to Fulfil immediately.
8
+ #
9
+ # If you need more attributes than the default ID attribute for an ApiResource
10
+ # to be returned, add the `select` method before the finder method is being called
11
+ # in your application code.
12
+ #
13
+ # @example
14
+ # $ ErpIntegration::SalesOrder.select(:id, :product).find(100)
15
+ # => <ErpIntegration::SalesOrder @id=100 @product=10 />
16
+ module FinderMethods
17
+ # Looks up an individual resource based on resource's ID.
18
+ #
19
+ # @example
20
+ # $ ErpIntegration::SalesOrder.find(100)
21
+ # => <ErpIntegration::SalesOrder @id=100 />
22
+ #
23
+ # @param id [Integer] The ID of the API resource.
24
+ # @return [ApiResource] The found resource in Fulfil.
25
+ def find(id)
26
+ find_by!(id: id) || raise(ResourceNotFound)
27
+ end
28
+
29
+ # Looks up an individual resource based on the given attributes.
30
+ #
31
+ # @example
32
+ # $ ErpIntegration::SalesOrder.find_by(product: 10)
33
+ # => <ErpIntegration::SalesOrder @id=100 />
34
+ #
35
+ # @return [ApiResource|nil] The found resource in Fulfil.
36
+ def find_by(args)
37
+ where(args).first
38
+ end
39
+
40
+ # Looks up an individual resource based on the given attributes and raises
41
+ # an `ErpIntegration::ResourceNotFound` when the resource doesn't exist.
42
+ #
43
+ # @example
44
+ # $ ErpIntegration::SalesOrder.find_by!(product: 10)
45
+ # => ErpIntegration::ResourceNotFound
46
+ #
47
+ # @return [ApiResource|nil] The found resource in Fulfil.
48
+ def find_by!(args)
49
+ find_by(args) || raise(ResourceNotFound)
50
+ end
51
+ end
52
+ end
53
+ end
@@ -12,7 +12,7 @@ module ErpIntegration
12
12
  # @param sku [String] The product's SKU.
13
13
  # @return [Boolean] Whether it's a BOM or not.
14
14
  def bom?(sku)
15
- select(:boms).where(code: sku).first.boms.any?
15
+ select(:boms).find_by!(code: sku).boms.any?
16
16
  end
17
17
  alias billing_of_materials? bom?
18
18
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ErpIntegration
4
- VERSION = '0.5.5'
4
+ VERSION = '0.6.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: erp_integration
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Vermaas
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-02 00:00:00.000000000 Z
11
+ date: 2021-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -266,6 +266,7 @@ files:
266
266
  - lib/erp_integration/errors.rb
267
267
  - lib/erp_integration/fulfil/api_resource.rb
268
268
  - lib/erp_integration/fulfil/client.rb
269
+ - lib/erp_integration/fulfil/finder_methods.rb
269
270
  - lib/erp_integration/fulfil/query.rb
270
271
  - lib/erp_integration/fulfil/query_methods.rb
271
272
  - lib/erp_integration/fulfil/resources/bill_of_material.rb