QNE 0.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.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +13 -0
  4. data/CHANGELOG.md +5 -0
  5. data/CODE_OF_CONDUCT.md +84 -0
  6. data/Gemfile +13 -0
  7. data/Gemfile.lock +95 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +411 -0
  10. data/Rakefile +12 -0
  11. data/lib/QNE/agent/all.rb +22 -0
  12. data/lib/QNE/customer/all.rb +22 -0
  13. data/lib/QNE/customer/create.rb +21 -0
  14. data/lib/QNE/customer/find.rb +18 -0
  15. data/lib/QNE/customer/find_by.rb +20 -0
  16. data/lib/QNE/customer/show.rb +18 -0
  17. data/lib/QNE/customer/update.rb +21 -0
  18. data/lib/QNE/customer_category/all.rb +22 -0
  19. data/lib/QNE/sales_invoice/all.rb +22 -0
  20. data/lib/QNE/sales_invoice/create.rb +21 -0
  21. data/lib/QNE/sales_invoice/download.rb +26 -0
  22. data/lib/QNE/sales_invoice/find_by.rb +20 -0
  23. data/lib/QNE/sales_invoice/show.rb +18 -0
  24. data/lib/QNE/sales_invoice/update.rb +21 -0
  25. data/lib/QNE/sales_order/all.rb +22 -0
  26. data/lib/QNE/sales_order/create.rb +21 -0
  27. data/lib/QNE/sales_order/show.rb +18 -0
  28. data/lib/QNE/stock/all.rb +22 -0
  29. data/lib/QNE/stock/find.rb +18 -0
  30. data/lib/QNE/stock/uoms.rb +18 -0
  31. data/lib/QNE/stock_location/all.rb +17 -0
  32. data/lib/QNE/tax_code/all.rb +22 -0
  33. data/lib/QNE/tax_code/input_tax_codes.rb +22 -0
  34. data/lib/QNE/tax_code/output_tax_codes.rb +22 -0
  35. data/lib/QNE/term/all.rb +22 -0
  36. data/lib/QNE/term/show.rb +18 -0
  37. data/lib/QNE/uom/all.rb +22 -0
  38. data/lib/QNE/user/login.rb +21 -0
  39. data/lib/QNE/version.rb +5 -0
  40. data/lib/QNE.rb +13 -0
  41. data/lib/agents.rb +17 -0
  42. data/lib/base.rb +23 -0
  43. data/lib/connection.rb +139 -0
  44. data/lib/customer_categories.rb +17 -0
  45. data/lib/customers.rb +71 -0
  46. data/lib/default_tax_code.rb +15 -0
  47. data/lib/query_builder.rb +65 -0
  48. data/lib/sales_invoices.rb +64 -0
  49. data/lib/sales_orders.rb +35 -0
  50. data/lib/stock_locations.rb +15 -0
  51. data/lib/stocks.rb +45 -0
  52. data/lib/system_version.rb +13 -0
  53. data/lib/tax_codes.rb +35 -0
  54. data/lib/terms.rb +26 -0
  55. data/lib/uoms.rb +17 -0
  56. data/lib/users.rb +19 -0
  57. data/sig/QNE.rbs +4 -0
  58. metadata +151 -0
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module Customer
5
+ class All
6
+ PATH = '/api/Customers'.freeze
7
+
8
+ def initialize(conn, params: {})
9
+ @conn = conn
10
+ @params = params
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH) do |req|
15
+ @params.each do |key, val|
16
+ req.params[key] = val
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module Customer
5
+ class Create
6
+ PATH = '/api/Customers'.freeze
7
+
8
+ def initialize(conn, request_body:)
9
+ @conn = conn
10
+ @request_body = request_body
11
+ end
12
+
13
+ def call
14
+ @conn.post(PATH) do |req|
15
+ req.headers['Content-Type'] = 'application/json'
16
+ req.body = @request_body.to_json
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module Customer
5
+ class Find
6
+ PATH = '/api/Customers/:id'.freeze
7
+
8
+ def initialize(conn, id:)
9
+ @conn = conn
10
+ @id = id
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH.gsub(':id', @id))
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module Customer
5
+ class FindBy
6
+ PATH = '/api/Customers'.freeze
7
+
8
+ def initialize(conn, params:)
9
+ @conn = conn
10
+ @params = params
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH) do |req|
15
+ req.params['$filter'] = @params
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module Customer
5
+ class Show
6
+ PATH = '/api/Customer/:id'.freeze
7
+
8
+ def initialize(conn, id:)
9
+ @conn = conn
10
+ @id = id
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH.gsub(':id', @id))
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module Customer
5
+ class Update
6
+ PATH = '/api/Customers'.freeze
7
+
8
+ def initialize(conn, request_body:)
9
+ @conn = conn
10
+ @request_body = request_body
11
+ end
12
+
13
+ def call
14
+ @conn.put(PATH) do |req|
15
+ req.headers['Content-Type'] = 'application/json'
16
+ req.body = @request_body.to_json
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module CustomerCategory
5
+ class All
6
+ PATH = '/api/CustomerCategories'
7
+
8
+ def initialize(conn, params: {})
9
+ @conn = conn
10
+ @params = params
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH) do |req|
15
+ @params.each do |key, val|
16
+ req.params[key] = val
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module SalesInvoice
5
+ class All
6
+ PATH = '/api/SalesInvoices'.freeze
7
+
8
+ def initialize(conn, params: {})
9
+ @conn = conn
10
+ @params = params
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH) do |req|
15
+ @params.each do |key, val|
16
+ req.params[key] = val
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module SalesInvoice
5
+ class Create
6
+ PATH = '/api/SalesInvoices'.freeze
7
+
8
+ def initialize(conn, request_body:)
9
+ @conn = conn
10
+ @request_body = request_body
11
+ end
12
+
13
+ def call
14
+ @conn.post(PATH) do |req|
15
+ req.headers['Content-Type'] = 'application/json'
16
+ req.body = @request_body.to_json
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module SalesInvoice
5
+ class Download
6
+ DOWNLOAD_TYPES = {
7
+ sales_invoice: {
8
+ path: '/api/Reports/SalesInvoices/:id/url'
9
+ },
10
+ tax_invoice: {
11
+ path: '/api/Reports/Invoices/:id/url'
12
+ }
13
+ }.freeze
14
+
15
+ def initialize(conn, id:, type:)
16
+ @conn = conn
17
+ @id = id
18
+ @type = type.to_s.to_sym
19
+ end
20
+
21
+ def call
22
+ @conn.get(DOWNLOAD_TYPES[@type][:path].gsub(':id', @id))
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module SalesInvoice
5
+ class FindBy
6
+ PATH = '/api/SalesInvoices'.freeze
7
+
8
+ def initialize(conn, params:)
9
+ @conn = conn
10
+ @params = params
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH) do |req|
15
+ req.params['$filter'] = @params
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module SalesInvoice
5
+ class Show
6
+ PATH = '/api/SalesInvoices/:id'.freeze
7
+
8
+ def initialize(conn, id:)
9
+ @conn = conn
10
+ @id = id
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH.gsub(':id', @id))
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module SalesInvoice
5
+ class Update
6
+ PATH = '/api/SalesInvoices'.freeze
7
+
8
+ def initialize(conn, request_body:)
9
+ @conn = conn
10
+ @request_body = request_body
11
+ end
12
+
13
+ def call
14
+ @conn.put(PATH) do |req|
15
+ req.headers['Content-Type'] = 'application/json'
16
+ req.body = @request_body.to_json
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module SalesOrder
5
+ class All
6
+ PATH = '/api/SalesOrders'.freeze
7
+
8
+ def initialize(conn, params: {})
9
+ @conn = conn
10
+ @params = params
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH) do |req|
15
+ @params.each do |key, val|
16
+ req.params[key] = val
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module SalesOrder
5
+ class Create
6
+ PATH = '/api/SalesOrders'.freeze
7
+
8
+ def initialize(conn, request_body:)
9
+ @conn = conn
10
+ @request_body = request_body
11
+ end
12
+
13
+ def call
14
+ @conn.post(PATH) do |req|
15
+ req.headers['Content-Type'] = 'application/json'
16
+ req.body = @request_body.to_json
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module SalesOrder
5
+ class Show
6
+ PATH = '/api/SalesOrders/:id'.freeze
7
+
8
+ def initialize(conn, id:)
9
+ @conn = conn
10
+ @id = id
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH.gsub(':id', @id))
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module Stock
5
+ class All
6
+ PATH = '/api/Stocks'.freeze
7
+
8
+ def initialize(conn, params: {})
9
+ @conn = conn
10
+ @params = params
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH) do |req|
15
+ @params.each do |key, val|
16
+ req.params[key] = val
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module Stock
5
+ class Find
6
+ PATH = '/api/Stocks/:id'.freeze
7
+
8
+ def initialize(conn, id:)
9
+ @conn = conn
10
+ @id = id
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH.gsub(':id', @id))
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module Stock
5
+ class UOMs
6
+ PATH = '/api/Stocks/:id/UOMS'.freeze
7
+
8
+ def initialize(conn, id:)
9
+ @conn = conn
10
+ @id = id
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH.gsub(':id', @id))
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module StockLocation
5
+ class All
6
+ PATH = '/api/StockLocation'.freeze
7
+
8
+ def initialize(conn)
9
+ @conn = conn
10
+ end
11
+
12
+ def call
13
+ @conn.get(PATH)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module TaxCode
5
+ class All
6
+ PATH = '/api/TaxCodes'.freeze
7
+
8
+ def initialize(conn, params: {})
9
+ @conn = conn
10
+ @params = params
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH) do |req|
15
+ @params.each do |key, val|
16
+ req.params[key] = val
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module TaxCode
5
+ class InputTaxCodes
6
+ PATH = '/api/TaxCodes/InputTaxCodes'.freeze
7
+
8
+ def initialize(conn, params: {})
9
+ @conn = conn
10
+ @params = params
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH) do |req|
15
+ @params.each do |key, val|
16
+ req.params[key] = val
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module TaxCode
5
+ class OutputTaxCodes
6
+ PATH = '/api/TaxCodes/OutputTaxCodes'.freeze
7
+
8
+ def initialize(conn, params: {})
9
+ @conn = conn
10
+ @params = params
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH) do |req|
15
+ @params.each do |key, val|
16
+ req.params[key] = val
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module Term
5
+ class All
6
+ PATH = '/api/Terms'.freeze
7
+
8
+ def initialize(conn, params: {})
9
+ @conn = conn
10
+ @params = params
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH) do |req|
15
+ @params.each do |key, val|
16
+ req.params[key] = val
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module Term
5
+ class Show
6
+ PATH = '/api/Terms/:id'.freeze
7
+
8
+ def initialize(conn, id:)
9
+ @conn = conn
10
+ @id = id
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH.gsub(':id', @id))
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module UOM
5
+ class All
6
+ PATH = '/api/UOMs'.freeze
7
+
8
+ def initialize(conn, params: {})
9
+ @conn = conn
10
+ @params = params
11
+ end
12
+
13
+ def call
14
+ @conn.get(PATH) do |req|
15
+ @params.each do |key, val|
16
+ req.params[key] = val
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ module User
5
+ class Login
6
+ PATH = '/api/Users/Login'.freeze
7
+
8
+ def initialize(conn, params: {})
9
+ @conn = conn
10
+ @params = params
11
+ end
12
+
13
+ def call
14
+ @conn.post(PATH) do |req|
15
+ req.headers['Content-Type'] = 'application/json'
16
+ req.body = @params.to_json
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QNE
4
+ VERSION = "0.1.0"
5
+ end
data/lib/QNE.rb ADDED
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'faraday/retry'
4
+ require 'faraday/net_http_persistent'
5
+ require_relative 'QNE/version'
6
+ require_relative 'query_builder'
7
+ require_relative 'base'
8
+ require_relative 'connection'
9
+
10
+ module QNE
11
+ class Error < StandardError; end
12
+ class UnathorizedError < Error; end
13
+ end
data/lib/agents.rb ADDED
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'QNE/agent/all'
4
+
5
+ module QNE
6
+ class Agents < Base
7
+ include ::QNE::QueryBuilder
8
+
9
+ def all(params = {})
10
+ @response = QNE::Agent::All.new(
11
+ conn, params: uri_query(params)
12
+ ).call
13
+
14
+ parse_to_json(@response.body)
15
+ end
16
+ end
17
+ end
data/lib/base.rb ADDED
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module QNE
6
+ class Base
7
+ attr_reader :response, :conn
8
+
9
+ def initialize(conn)
10
+ @conn = conn
11
+ end
12
+
13
+ def parse_to_json(respose_body)
14
+ JSON.parse(respose_body)
15
+ end
16
+
17
+ def success?
18
+ return false unless response
19
+
20
+ response.success?
21
+ end
22
+ end
23
+ end