dear_inventory 1.4.0 → 1.5.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 +4 -4
- data/.rubocop.yml +13 -4
- data/Gemfile +14 -0
- data/README.md +1 -10
- data/dear_inventory.gemspec +5 -15
- data/lib/dear_inventory/config.rb +12 -25
- data/lib/dear_inventory/environment.rb +1 -2
- data/lib/dear_inventory/error.rb +1 -6
- data/lib/dear_inventory/errors/api_limit.rb +0 -1
- data/lib/dear_inventory/errors/bad_request.rb +0 -1
- data/lib/dear_inventory/errors/no_more_pages.rb +0 -1
- data/lib/dear_inventory/errors/not_paginated.rb +0 -9
- data/lib/dear_inventory/errors/request.rb +1 -11
- data/lib/dear_inventory/errors/validation.rb +0 -1
- data/lib/dear_inventory/lib/date_time.rb +1 -6
- data/lib/dear_inventory/lib/endpoint_class.rb +4 -25
- data/lib/dear_inventory/lib/is_a_subclass.rb +1 -7
- data/lib/dear_inventory/lib/request.rb +10 -35
- data/lib/dear_inventory/lib/strings/urlize.rb +0 -4
- data/lib/dear_inventory/model.rb +26 -59
- data/lib/dear_inventory/models/additional_attributes.rb +0 -3
- data/lib/dear_inventory/models/address.rb +0 -3
- data/lib/dear_inventory/models/advanced_purchase.rb +0 -3
- data/lib/dear_inventory/models/attachment.rb +0 -3
- data/lib/dear_inventory/models/bill_of_materials_product.rb +0 -3
- data/lib/dear_inventory/models/bill_of_materials_service.rb +0 -3
- data/lib/dear_inventory/models/customer.rb +0 -3
- data/lib/dear_inventory/models/customers/address.rb +0 -3
- data/lib/dear_inventory/models/customers/contact.rb +0 -3
- data/lib/dear_inventory/models/customers.rb +0 -3
- data/lib/dear_inventory/models/inventory_movement.rb +0 -3
- data/lib/dear_inventory/models/product.rb +0 -3
- data/lib/dear_inventory/models/product_availability.rb +0 -3
- data/lib/dear_inventory/models/product_availability_results.rb +0 -3
- data/lib/dear_inventory/models/products/movement.rb +0 -3
- data/lib/dear_inventory/models/products.rb +0 -3
- data/lib/dear_inventory/models/purchase.rb +0 -3
- data/lib/dear_inventory/models/purchases/additional_charge.rb +0 -3
- data/lib/dear_inventory/models/purchases/advanced/credit_note.rb +0 -3
- data/lib/dear_inventory/models/purchases/advanced/invoice.rb +0 -3
- data/lib/dear_inventory/models/purchases/advanced/manual_journal.rb +0 -3
- data/lib/dear_inventory/models/purchases/advanced/put_away.rb +0 -3
- data/lib/dear_inventory/models/purchases/advanced/put_away_line.rb +0 -3
- data/lib/dear_inventory/models/purchases/advanced/stock.rb +0 -3
- data/lib/dear_inventory/models/purchases/advanced/stock_line.rb +0 -3
- data/lib/dear_inventory/models/purchases/credit_note.rb +0 -3
- data/lib/dear_inventory/models/purchases/inventory_movement.rb +0 -3
- data/lib/dear_inventory/models/purchases/invoice.rb +0 -3
- data/lib/dear_inventory/models/purchases/invoice_additional_charge.rb +0 -3
- data/lib/dear_inventory/models/purchases/invoice_line.rb +0 -3
- data/lib/dear_inventory/models/purchases/line.rb +0 -3
- data/lib/dear_inventory/models/purchases/manual_journal.rb +0 -3
- data/lib/dear_inventory/models/purchases/manual_journal_line.rb +0 -3
- data/lib/dear_inventory/models/purchases/order.rb +0 -3
- data/lib/dear_inventory/models/purchases/payment_line.rb +0 -3
- data/lib/dear_inventory/models/purchases/stock.rb +0 -3
- data/lib/dear_inventory/models/purchases/stock_line.rb +0 -3
- data/lib/dear_inventory/models/purchases/unstock_line.rb +0 -3
- data/lib/dear_inventory/models/purchases.rb +3 -8
- data/lib/dear_inventory/models/purchases_results.rb +0 -3
- data/lib/dear_inventory/models/reorder_level.rb +0 -3
- data/lib/dear_inventory/models/request.rb +5 -16
- data/lib/dear_inventory/models/sale.rb +0 -3
- data/lib/dear_inventory/models/sales/additional_charge.rb +0 -3
- data/lib/dear_inventory/models/sales/credit_note.rb +0 -3
- data/lib/dear_inventory/models/sales/fulfilment.rb +0 -3
- data/lib/dear_inventory/models/sales/fulfilments/pick_pack.rb +0 -3
- data/lib/dear_inventory/models/sales/fulfilments/pick_pack_line.rb +0 -3
- data/lib/dear_inventory/models/sales/fulfilments/ship.rb +0 -3
- data/lib/dear_inventory/models/sales/fulfilments/ship_line.rb +0 -3
- data/lib/dear_inventory/models/sales/invoice.rb +0 -3
- data/lib/dear_inventory/models/sales/invoice_additional_charge.rb +0 -3
- data/lib/dear_inventory/models/sales/invoice_line.rb +0 -3
- data/lib/dear_inventory/models/sales/line.rb +0 -3
- data/lib/dear_inventory/models/sales/manual_journal.rb +0 -3
- data/lib/dear_inventory/models/sales/manual_journal_line.rb +0 -3
- data/lib/dear_inventory/models/sales/order.rb +0 -3
- data/lib/dear_inventory/models/sales/payment_line.rb +0 -3
- data/lib/dear_inventory/models/sales/quote.rb +0 -3
- data/lib/dear_inventory/models/sales.rb +1 -6
- data/lib/dear_inventory/models/sales_results.rb +0 -3
- data/lib/dear_inventory/models/shipping_address.rb +0 -3
- data/lib/dear_inventory/models/supplier.rb +0 -3
- data/lib/dear_inventory/models/test_request.rb +5 -20
- data/lib/dear_inventory/models/transaction.rb +0 -3
- data/lib/dear_inventory/parameters/advanced_purchase/show.rb +0 -3
- data/lib/dear_inventory/parameters/customer/create.rb +170 -0
- data/lib/dear_inventory/parameters/customer/index.rb +0 -3
- data/lib/dear_inventory/parameters/customer/show.rb +170 -0
- data/lib/dear_inventory/parameters/customer/update.rb +175 -0
- data/lib/dear_inventory/parameters/product/index.rb +0 -3
- data/lib/dear_inventory/parameters/product_availability/index.rb +0 -3
- data/lib/dear_inventory/parameters/purchase/index.rb +0 -3
- data/lib/dear_inventory/parameters/purchase/show.rb +0 -3
- data/lib/dear_inventory/parameters/sale/delete.rb +0 -3
- data/lib/dear_inventory/parameters/sale/index.rb +0 -3
- data/lib/dear_inventory/parameters/sale/show.rb +0 -3
- data/lib/dear_inventory/parameters.rb +16 -97
- data/lib/dear_inventory/resource.rb +4 -15
- data/lib/dear_inventory/resources/advanced_purchase.rb +0 -7
- data/lib/dear_inventory/resources/customer.rb +17 -10
- data/lib/dear_inventory/resources/product.rb +0 -7
- data/lib/dear_inventory/resources/product_availability.rb +1 -9
- data/lib/dear_inventory/resources/purchase.rb +0 -12
- data/lib/dear_inventory/resources/sale.rb +3 -22
- data/lib/dear_inventory/response.rb +25 -73
- data/lib/dear_inventory/test_response.rb +9 -24
- data/lib/dear_inventory/validator.rb +10 -38
- data/lib/dear_inventory/validators/array.rb +15 -0
- data/lib/dear_inventory/validators/boolean.rb +0 -4
- data/lib/dear_inventory/validators/enum.rb +2 -6
- data/lib/dear_inventory/validators/guid.rb +4 -11
- data/lib/dear_inventory/validators/integer.rb +0 -4
- data/lib/dear_inventory/validators/required.rb +0 -4
- data/lib/dear_inventory/validators/string.rb +0 -4
- data/lib/dear_inventory/validators/time.rb +0 -4
- data/lib/dear_inventory/version.rb +1 -2
- data/lib/dear_inventory.rb +6 -12
- metadata +22 -219
- data/sorbet/config +0 -2
- data/sorbet/rbi/gems/addressable.rbi +0 -199
- data/sorbet/rbi/gems/ast.rbi +0 -48
- data/sorbet/rbi/gems/byebug.rbi +0 -1040
- data/sorbet/rbi/gems/coderay.rbi +0 -92
- data/sorbet/rbi/gems/crack.rbi +0 -48
- data/sorbet/rbi/gems/domain_name.rbi +0 -52
- data/sorbet/rbi/gems/dotenv.rbi +0 -68
- data/sorbet/rbi/gems/ffi-compiler.rbi +0 -27
- data/sorbet/rbi/gems/ffi.rbi +0 -560
- data/sorbet/rbi/gems/hashdiff.rbi +0 -66
- data/sorbet/rbi/gems/http-cookie.rbi +0 -93
- data/sorbet/rbi/gems/http-form_data.rbi +0 -76
- data/sorbet/rbi/gems/http-parser.rbi +0 -121
- data/sorbet/rbi/gems/http.rbi +0 -616
- data/sorbet/rbi/gems/jaro_winkler.rbi +0 -15
- data/sorbet/rbi/gems/method_source.rbi +0 -64
- data/sorbet/rbi/gems/parallel.rbi +0 -82
- data/sorbet/rbi/gems/parser.rbi +0 -857
- data/sorbet/rbi/gems/pry-byebug.rbi +0 -155
- data/sorbet/rbi/gems/pry.rbi +0 -1965
- data/sorbet/rbi/gems/public_suffix.rbi +0 -104
- data/sorbet/rbi/gems/rainbow.rbi +0 -118
- data/sorbet/rbi/gems/rake.rbi +0 -646
- data/sorbet/rbi/gems/rspec-core.rbi +0 -1732
- data/sorbet/rbi/gems/rspec-expectations.rbi +0 -388
- data/sorbet/rbi/gems/rspec-mocks.rbi +0 -820
- data/sorbet/rbi/gems/rspec-support.rbi +0 -269
- data/sorbet/rbi/gems/rspec.rbi +0 -15
- data/sorbet/rbi/gems/rubocop-performance.rbi +0 -277
- data/sorbet/rbi/gems/rubocop-rspec.rbi +0 -887
- data/sorbet/rbi/gems/rubocop.rbi +0 -6952
- data/sorbet/rbi/gems/ruby-progressbar.rbi +0 -305
- data/sorbet/rbi/gems/unf.rbi +0 -19
- data/sorbet/rbi/gems/unicode-display_width.rbi +0 -17
- data/sorbet/rbi/gems/vcr.rbi +0 -572
- data/sorbet/rbi/gems/webmock.rbi +0 -569
- data/sorbet/rbi/hidden-definitions/errors.txt +0 -11809
- data/sorbet/rbi/hidden-definitions/hidden.rbi +0 -20623
- data/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +0 -8684
- data/sorbet/rbi/sorbet-typed/lib/rainbow/all/rainbow.rbi +0 -276
- data/sorbet/rbi/sorbet-typed/lib/ruby/all/gem.rbi +0 -4222
- data/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +0 -111
- data/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +0 -543
- data/sorbet/rbi/todo.rbi +0 -11
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DearInventory
|
|
4
|
+
class Parameters
|
|
5
|
+
module Customer
|
|
6
|
+
class Update < DearInventory::Parameters
|
|
7
|
+
fields(
|
|
8
|
+
id: {
|
|
9
|
+
property: :ID,
|
|
10
|
+
type: :Guid,
|
|
11
|
+
required: true,
|
|
12
|
+
},
|
|
13
|
+
account_receivable: {
|
|
14
|
+
property: :AccountReceivable,
|
|
15
|
+
type: :String,
|
|
16
|
+
required: true,
|
|
17
|
+
},
|
|
18
|
+
additional_attribute1: {
|
|
19
|
+
property: :AdditionalAttribute1,
|
|
20
|
+
type: :String,
|
|
21
|
+
required: false,
|
|
22
|
+
},
|
|
23
|
+
additional_attribute10: {
|
|
24
|
+
property: :AdditionalAttribute10,
|
|
25
|
+
type: :String,
|
|
26
|
+
required: false,
|
|
27
|
+
},
|
|
28
|
+
additional_attribute2: {
|
|
29
|
+
property: :AdditionalAttribute2,
|
|
30
|
+
type: :String,
|
|
31
|
+
required: false,
|
|
32
|
+
},
|
|
33
|
+
additional_attribute3: {
|
|
34
|
+
property: :AdditionalAttribute3,
|
|
35
|
+
type: :String,
|
|
36
|
+
required: false,
|
|
37
|
+
},
|
|
38
|
+
additional_attribute4: {
|
|
39
|
+
property: :AdditionalAttribute4,
|
|
40
|
+
type: :String,
|
|
41
|
+
required: false,
|
|
42
|
+
},
|
|
43
|
+
additional_attribute5: {
|
|
44
|
+
property: :AdditionalAttribute5,
|
|
45
|
+
type: :String,
|
|
46
|
+
required: false,
|
|
47
|
+
},
|
|
48
|
+
additional_attribute6: {
|
|
49
|
+
property: :AdditionalAttribute6,
|
|
50
|
+
type: :String,
|
|
51
|
+
required: false,
|
|
52
|
+
},
|
|
53
|
+
additional_attribute7: {
|
|
54
|
+
property: :AdditionalAttribute7,
|
|
55
|
+
type: :String,
|
|
56
|
+
required: false,
|
|
57
|
+
},
|
|
58
|
+
additional_attribute8: {
|
|
59
|
+
property: :AdditionalAttribute8,
|
|
60
|
+
type: :String,
|
|
61
|
+
required: false,
|
|
62
|
+
},
|
|
63
|
+
additional_attribute9: {
|
|
64
|
+
property: :AdditionalAttribute9,
|
|
65
|
+
type: :String,
|
|
66
|
+
required: false,
|
|
67
|
+
},
|
|
68
|
+
addresses: {
|
|
69
|
+
property: :Addresses,
|
|
70
|
+
type: :Array,
|
|
71
|
+
model: DearInventory::Models::Customers::Address,
|
|
72
|
+
required: false,
|
|
73
|
+
},
|
|
74
|
+
attribute_set: {
|
|
75
|
+
property: :AttributeSet,
|
|
76
|
+
type: :String,
|
|
77
|
+
required: false,
|
|
78
|
+
},
|
|
79
|
+
contacts: {
|
|
80
|
+
property: :Contacts,
|
|
81
|
+
type: :Array,
|
|
82
|
+
model: DearInventory::Models::Customers::Contact,
|
|
83
|
+
required: false,
|
|
84
|
+
},
|
|
85
|
+
carrier: {
|
|
86
|
+
property: :Carrier,
|
|
87
|
+
type: :String,
|
|
88
|
+
required: false,
|
|
89
|
+
},
|
|
90
|
+
comments: {
|
|
91
|
+
property: :Comments,
|
|
92
|
+
type: :String,
|
|
93
|
+
required: false,
|
|
94
|
+
},
|
|
95
|
+
credit_limit: {
|
|
96
|
+
property: :CreditLimit,
|
|
97
|
+
type: :Integer,
|
|
98
|
+
required: false,
|
|
99
|
+
},
|
|
100
|
+
currency: {
|
|
101
|
+
property: :Currency,
|
|
102
|
+
type: :String,
|
|
103
|
+
required: true,
|
|
104
|
+
},
|
|
105
|
+
discount: {
|
|
106
|
+
property: :Discount,
|
|
107
|
+
type: :Integer,
|
|
108
|
+
required: false,
|
|
109
|
+
},
|
|
110
|
+
display_name: {
|
|
111
|
+
property: :DisplayName,
|
|
112
|
+
type: :String,
|
|
113
|
+
required: false,
|
|
114
|
+
},
|
|
115
|
+
is_on_credit_hold: {
|
|
116
|
+
property: :IsOnCreditHold,
|
|
117
|
+
type: :Boolean,
|
|
118
|
+
required: false,
|
|
119
|
+
},
|
|
120
|
+
location: {
|
|
121
|
+
property: :Location,
|
|
122
|
+
type: :String,
|
|
123
|
+
required: false,
|
|
124
|
+
},
|
|
125
|
+
name: {
|
|
126
|
+
property: :Name,
|
|
127
|
+
type: :String,
|
|
128
|
+
required: true,
|
|
129
|
+
},
|
|
130
|
+
payment_term: {
|
|
131
|
+
property: :PaymentTerm,
|
|
132
|
+
type: :String,
|
|
133
|
+
required: true,
|
|
134
|
+
},
|
|
135
|
+
price_tier: {
|
|
136
|
+
property: :PriceTier,
|
|
137
|
+
type: :String,
|
|
138
|
+
required: false,
|
|
139
|
+
},
|
|
140
|
+
revenue_account: {
|
|
141
|
+
property: :RevenueAccount,
|
|
142
|
+
type: :String,
|
|
143
|
+
required: true,
|
|
144
|
+
},
|
|
145
|
+
sales_representative: {
|
|
146
|
+
property: :SalesRepresentative,
|
|
147
|
+
type: :String,
|
|
148
|
+
required: false,
|
|
149
|
+
},
|
|
150
|
+
status: {
|
|
151
|
+
property: :Status,
|
|
152
|
+
type: :Enum,
|
|
153
|
+
values: %w[Active Deprecated],
|
|
154
|
+
required: true,
|
|
155
|
+
},
|
|
156
|
+
tags: {
|
|
157
|
+
property: :Tags,
|
|
158
|
+
type: :String,
|
|
159
|
+
required: false,
|
|
160
|
+
},
|
|
161
|
+
tax_number: {
|
|
162
|
+
property: :TaxNumber,
|
|
163
|
+
type: :Integer,
|
|
164
|
+
required: false,
|
|
165
|
+
},
|
|
166
|
+
tax_rule: {
|
|
167
|
+
property: :TaxRule,
|
|
168
|
+
type: :String,
|
|
169
|
+
required: true,
|
|
170
|
+
}
|
|
171
|
+
)
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
end
|
|
@@ -1,27 +1,15 @@
|
|
|
1
|
-
# typed: strict
|
|
2
1
|
# frozen_string_literal: true
|
|
3
2
|
|
|
4
3
|
module DearInventory
|
|
5
4
|
class Parameters
|
|
6
|
-
extend T::Sig
|
|
7
5
|
extend DearInventory::IsASubclass
|
|
8
6
|
|
|
9
|
-
sig { params(params: T::Hash[Symbol, T.untyped]).void }
|
|
10
7
|
def initialize(params)
|
|
11
|
-
@values =
|
|
8
|
+
@values = {}
|
|
12
9
|
assign_params(params)
|
|
13
10
|
end
|
|
14
11
|
|
|
15
12
|
class << self
|
|
16
|
-
extend T::Sig
|
|
17
|
-
|
|
18
|
-
sig do
|
|
19
|
-
params(
|
|
20
|
-
fields: T::Hash[
|
|
21
|
-
Symbol, T::Hash[Symbol, T.any(Symbol, T::Array[String], T::Boolean)]
|
|
22
|
-
]
|
|
23
|
-
).void
|
|
24
|
-
end
|
|
25
13
|
def fields(fields)
|
|
26
14
|
const_set(:FIELDS, fields.freeze)
|
|
27
15
|
|
|
@@ -30,13 +18,6 @@ module DearInventory
|
|
|
30
18
|
end
|
|
31
19
|
end
|
|
32
20
|
|
|
33
|
-
sig do
|
|
34
|
-
params(
|
|
35
|
-
resource_class: T.class_of(DearInventory::Resource),
|
|
36
|
-
endpoint: T.nilable(String),
|
|
37
|
-
params: T::Hash[Symbol, T.untyped]
|
|
38
|
-
).returns(T.untyped)
|
|
39
|
-
end
|
|
40
21
|
def convert(resource_class, endpoint, params)
|
|
41
22
|
params_class = endpoint_class(resource_class, endpoint)
|
|
42
23
|
|
|
@@ -48,56 +29,25 @@ module DearInventory
|
|
|
48
29
|
|
|
49
30
|
private
|
|
50
31
|
|
|
51
|
-
sig do
|
|
52
|
-
params(
|
|
53
|
-
resource_class: T.class_of(DearInventory::Resource),
|
|
54
|
-
endpoint: T.nilable(String)
|
|
55
|
-
).returns(T.class_of(DearInventory::Parameters))
|
|
56
|
-
end
|
|
57
32
|
def endpoint_class(resource_class, endpoint)
|
|
58
|
-
|
|
33
|
+
DearInventory::EndpointClass.(
|
|
59
34
|
class_type: "Parameters",
|
|
60
35
|
resource_class: resource_class,
|
|
61
36
|
endpoint: endpoint
|
|
62
37
|
)
|
|
63
|
-
T.cast(params_class, T.class_of(DearInventory::Parameters))
|
|
64
38
|
end
|
|
65
39
|
|
|
66
|
-
# rubocop:disable Metrics/MethodLength
|
|
67
|
-
sig do
|
|
68
|
-
params(
|
|
69
|
-
name: Symbol,
|
|
70
|
-
specifications: T::Hash[
|
|
71
|
-
Symbol, T.any(Symbol, T::Array[String], T::Boolean)
|
|
72
|
-
]
|
|
73
|
-
).void
|
|
74
|
-
end
|
|
75
40
|
def define_method_for_validator(name, specifications)
|
|
76
41
|
case specifications[:type]
|
|
77
42
|
when :Enum
|
|
78
43
|
define_enum_method(name, specifications)
|
|
79
44
|
when :String
|
|
80
|
-
define_string_method(
|
|
81
|
-
name,
|
|
82
|
-
T.cast(specifications, T::Hash[Symbol, T.any(Symbol, T::Boolean)])
|
|
83
|
-
)
|
|
45
|
+
define_string_method(name, specifications)
|
|
84
46
|
else
|
|
85
|
-
define_method_without_options(
|
|
86
|
-
name,
|
|
87
|
-
T.cast(specifications, T::Hash[Symbol, T.any(Symbol, T::Boolean)])
|
|
88
|
-
)
|
|
47
|
+
define_method_without_options(name, specifications)
|
|
89
48
|
end
|
|
90
49
|
end
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
sig do
|
|
94
|
-
params(
|
|
95
|
-
name: Symbol,
|
|
96
|
-
specifications: T::Hash[
|
|
97
|
-
Symbol, T.any(Symbol, T::Array[String], T::Boolean)
|
|
98
|
-
]
|
|
99
|
-
).void
|
|
100
|
-
end
|
|
50
|
+
|
|
101
51
|
def define_enum_method(name, specifications)
|
|
102
52
|
validator = DearInventory::Validators::Enum
|
|
103
53
|
options = {
|
|
@@ -106,12 +56,6 @@ module DearInventory
|
|
|
106
56
|
define_method_with_options(name, validator, options)
|
|
107
57
|
end
|
|
108
58
|
|
|
109
|
-
sig do
|
|
110
|
-
params(
|
|
111
|
-
name: Symbol,
|
|
112
|
-
specifications: T::Hash[Symbol, T.any(Symbol, T::Boolean)]
|
|
113
|
-
).void
|
|
114
|
-
end
|
|
115
59
|
def define_string_method(name, specifications)
|
|
116
60
|
validator = DearInventory::Validators::String
|
|
117
61
|
options = {
|
|
@@ -120,15 +64,6 @@ module DearInventory
|
|
|
120
64
|
define_method_with_options(name, validator, options)
|
|
121
65
|
end
|
|
122
66
|
|
|
123
|
-
sig do
|
|
124
|
-
params(
|
|
125
|
-
name: Symbol,
|
|
126
|
-
validator: T.class_of(DearInventory::Validator),
|
|
127
|
-
options: T::Hash[
|
|
128
|
-
Symbol, T.nilable(T.any(Symbol, T::Array[String], T::Boolean))
|
|
129
|
-
]
|
|
130
|
-
).void
|
|
131
|
-
end
|
|
132
67
|
def define_method_with_options(name, validator, options)
|
|
133
68
|
define_method("#{name}=") do |value|
|
|
134
69
|
validator.(
|
|
@@ -137,46 +72,30 @@ module DearInventory
|
|
|
137
72
|
options: options
|
|
138
73
|
)
|
|
139
74
|
|
|
140
|
-
|
|
75
|
+
instance_variable_get(:@values)[name] = value
|
|
141
76
|
end
|
|
142
77
|
end
|
|
143
78
|
|
|
144
|
-
sig do
|
|
145
|
-
params(
|
|
146
|
-
name: Symbol,
|
|
147
|
-
specifications: T::Hash[Symbol, T.any(Symbol, T::Boolean)]
|
|
148
|
-
).void
|
|
149
|
-
end
|
|
150
79
|
def define_method_without_options(name, specifications)
|
|
151
80
|
validator = Object.const_get(
|
|
152
81
|
"DearInventory::Validators::#{specifications[:type]}"
|
|
153
82
|
)
|
|
154
83
|
define_method("#{name}=") do |value|
|
|
155
84
|
validator.(name, value)
|
|
156
|
-
|
|
85
|
+
instance_variable_get(:@values)[name] = value
|
|
157
86
|
end
|
|
158
87
|
end
|
|
159
88
|
|
|
160
|
-
sig do
|
|
161
|
-
params(
|
|
162
|
-
params_class: T.nilable(T.class_of(DearInventory::Parameters)),
|
|
163
|
-
resource_class: T.class_of(DearInventory::Resource),
|
|
164
|
-
endpoint: T.nilable(String),
|
|
165
|
-
params: T::Hash[Symbol, T.untyped]
|
|
166
|
-
).returns(T.nilable(DearInventory::Parameters))
|
|
167
|
-
end
|
|
168
89
|
def convert_with_params_class(
|
|
169
90
|
params_class:, resource_class:, endpoint:, params:
|
|
170
91
|
)
|
|
171
92
|
return params_class.new(params) unless params_class.nil?
|
|
172
93
|
|
|
173
94
|
message = "No parameters class can be found for resource, " \
|
|
174
|
-
|
|
95
|
+
"#{resource_class}, with endpoint #{endpoint}"
|
|
175
96
|
raise ArgumentError, message
|
|
176
97
|
end
|
|
177
98
|
end
|
|
178
|
-
|
|
179
|
-
sig { returns(T::Hash[Symbol, T.untyped]) }
|
|
180
99
|
def to_h
|
|
181
100
|
self.class.
|
|
182
101
|
const_get(:FIELDS).
|
|
@@ -190,12 +109,6 @@ module DearInventory
|
|
|
190
109
|
|
|
191
110
|
private
|
|
192
111
|
|
|
193
|
-
sig do
|
|
194
|
-
params(
|
|
195
|
-
field_name: Symbol,
|
|
196
|
-
specifications: T::Hash[Symbol, T.untyped]
|
|
197
|
-
).returns(T.nilable(T.any(String, Numeric, T::Boolean)))
|
|
198
|
-
end
|
|
199
112
|
def parameter_value(field_name, specifications)
|
|
200
113
|
value = @values[field_name]
|
|
201
114
|
Validators::Required.(field_name, value) if specifications[:required]
|
|
@@ -207,10 +120,16 @@ module DearInventory
|
|
|
207
120
|
end
|
|
208
121
|
end
|
|
209
122
|
|
|
210
|
-
sig { params(params: T::Hash[Symbol, T.untyped]).void }
|
|
211
123
|
def assign_params(params)
|
|
212
124
|
params.each do |name, value|
|
|
213
|
-
|
|
125
|
+
formatted_value =
|
|
126
|
+
if value.is_a?(Array)
|
|
127
|
+
value.map { |record| record.transform_keys { |key| key.to_s.titleize.delete(" ") } }
|
|
128
|
+
else
|
|
129
|
+
value
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
public_send(:"#{name}=", formatted_value)
|
|
214
133
|
end
|
|
215
134
|
end
|
|
216
135
|
end
|
|
@@ -1,19 +1,9 @@
|
|
|
1
|
-
# typed: strict
|
|
2
1
|
# frozen_string_literal: true
|
|
3
2
|
|
|
4
3
|
module DearInventory
|
|
5
4
|
class Resource
|
|
6
|
-
extend T::Sig
|
|
7
5
|
extend DearInventory::IsASubclass
|
|
8
6
|
|
|
9
|
-
sig do
|
|
10
|
-
params(
|
|
11
|
-
action: Symbol,
|
|
12
|
-
model: T.class_of(DearInventory::Model),
|
|
13
|
-
endpoint: T.nilable(String),
|
|
14
|
-
params: T::Hash[Symbol, T.untyped]
|
|
15
|
-
).returns(DearInventory::Response)
|
|
16
|
-
end
|
|
17
7
|
def request(action, model:, endpoint: nil, params: {})
|
|
18
8
|
request = DearInventory::Models::Request.new(
|
|
19
9
|
action: action,
|
|
@@ -26,12 +16,11 @@ module DearInventory
|
|
|
26
16
|
|
|
27
17
|
private
|
|
28
18
|
|
|
29
|
-
URI_BASE =
|
|
30
|
-
|
|
31
|
-
sig { params(_endpoint: T.nilable(String)).returns(String) }
|
|
19
|
+
URI_BASE = "https://inventory.dearsystems.com/ExternalApi/v2"
|
|
20
|
+
private_constant :URI_BASE
|
|
32
21
|
def resource_uri(_endpoint)
|
|
33
|
-
resource =
|
|
34
|
-
camel_case = Strings::Urlize.(
|
|
22
|
+
resource = self.class.name.split("::").last
|
|
23
|
+
camel_case = Strings::Urlize.(resource)
|
|
35
24
|
|
|
36
25
|
"#{URI_BASE}/#{camel_case}"
|
|
37
26
|
end
|
|
@@ -1,19 +1,12 @@
|
|
|
1
|
-
# typed: strict
|
|
2
1
|
# frozen_string_literal: true
|
|
3
2
|
|
|
4
3
|
module DearInventory
|
|
5
4
|
class AdvancedPurchase < Resource
|
|
6
5
|
class << self
|
|
7
|
-
extend T::Sig
|
|
8
|
-
|
|
9
6
|
# Advanced Purchase
|
|
10
7
|
#
|
|
11
8
|
# @param params [Hash] URL query string parameters that conform to
|
|
12
9
|
# DearInventory::Parameters::AdvancedPurchase::Show
|
|
13
|
-
sig do
|
|
14
|
-
params(params: T::Hash[Symbol, T.untyped]).
|
|
15
|
-
returns(DearInventory::Response)
|
|
16
|
-
end
|
|
17
10
|
def show(params = {})
|
|
18
11
|
new.request(
|
|
19
12
|
:get,
|
|
@@ -1,26 +1,33 @@
|
|
|
1
|
-
# typed: strict
|
|
2
1
|
# frozen_string_literal: true
|
|
3
2
|
|
|
4
3
|
module DearInventory
|
|
5
4
|
class Customer < Resource
|
|
6
5
|
class << self
|
|
7
|
-
extend T::Sig
|
|
8
|
-
|
|
9
6
|
# Customer
|
|
10
7
|
#
|
|
11
8
|
# @param params [Hash] URL query string parameters that conform to
|
|
12
9
|
# DearInventory::Parameters::Customer::Index
|
|
13
|
-
sig do
|
|
14
|
-
params(params: T::Hash[Symbol, T.untyped]).
|
|
15
|
-
returns(DearInventory::Response)
|
|
16
|
-
end
|
|
17
10
|
def index(params = {})
|
|
18
|
-
new.request(
|
|
19
|
-
:get, params: params, model: DearInventory::Models::Customers
|
|
20
|
-
)
|
|
11
|
+
new.request(:get, params:, model:)
|
|
21
12
|
end
|
|
22
13
|
|
|
23
14
|
alias call index
|
|
15
|
+
|
|
16
|
+
def show(params = {})
|
|
17
|
+
new.request(:get, endpoint: "show", model:, params:)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def create(params = {})
|
|
21
|
+
new.request(:post, endpoint: "create", model:, params:)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def update(params = {})
|
|
25
|
+
new.request(:put, endpoint: "update", model:, params:)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
def model = DearInventory::Models::Customers
|
|
24
31
|
end
|
|
25
32
|
end
|
|
26
33
|
end
|
|
@@ -1,19 +1,12 @@
|
|
|
1
|
-
# typed: strict
|
|
2
1
|
# frozen_string_literal: true
|
|
3
2
|
|
|
4
3
|
module DearInventory
|
|
5
4
|
class Product < Resource
|
|
6
5
|
class << self
|
|
7
|
-
extend T::Sig
|
|
8
|
-
|
|
9
6
|
# Product
|
|
10
7
|
#
|
|
11
8
|
# @param params [Hash] URL query string parameters that conform to
|
|
12
9
|
# DearInventory::Parameters::Product::Index
|
|
13
|
-
sig do
|
|
14
|
-
params(params: T::Hash[Symbol, T.untyped]).
|
|
15
|
-
returns(DearInventory::Response)
|
|
16
|
-
end
|
|
17
10
|
def index(params = {})
|
|
18
11
|
new.request(
|
|
19
12
|
:get, params: params, model: DearInventory::Models::Products
|
|
@@ -1,19 +1,12 @@
|
|
|
1
|
-
# typed: strict
|
|
2
1
|
# frozen_string_literal: true
|
|
3
2
|
|
|
4
3
|
module DearInventory
|
|
5
4
|
class ProductAvailability < Resource
|
|
6
5
|
class << self
|
|
7
|
-
extend T::Sig
|
|
8
|
-
|
|
9
6
|
# ProductAvailability
|
|
10
7
|
#
|
|
11
8
|
# @param params [Hash] URL query string parameters that conform to
|
|
12
9
|
# DearInventory::Parameters::ProductAvailability::Index
|
|
13
|
-
sig do
|
|
14
|
-
params(params: T::Hash[Symbol, T.untyped]).
|
|
15
|
-
returns(DearInventory::Response)
|
|
16
|
-
end
|
|
17
10
|
def index(params = {})
|
|
18
11
|
new.request(
|
|
19
12
|
:get,
|
|
@@ -27,9 +20,8 @@ module DearInventory
|
|
|
27
20
|
|
|
28
21
|
private
|
|
29
22
|
|
|
30
|
-
sig { params(_endpoint: T.nilable(String)).returns(String) }
|
|
31
23
|
def resource_uri(_endpoint)
|
|
32
|
-
self.class.const_get(:URI_BASE)
|
|
24
|
+
"#{self.class.const_get(:URI_BASE)}/ref/productavailability"
|
|
33
25
|
end
|
|
34
26
|
end
|
|
35
27
|
end
|
|
@@ -1,19 +1,12 @@
|
|
|
1
|
-
# typed: strict
|
|
2
1
|
# frozen_string_literal: true
|
|
3
2
|
|
|
4
3
|
module DearInventory
|
|
5
4
|
class Purchase < Resource
|
|
6
5
|
class << self
|
|
7
|
-
extend T::Sig
|
|
8
|
-
|
|
9
6
|
# Purchases
|
|
10
7
|
#
|
|
11
8
|
# @param params [Hash] URL query string parameters that conform to
|
|
12
9
|
# DearInventory::Parameters::Purchase::Index
|
|
13
|
-
sig do
|
|
14
|
-
params(params: T::Hash[Symbol, T.untyped]).
|
|
15
|
-
returns(DearInventory::Response)
|
|
16
|
-
end
|
|
17
10
|
def index(params = {})
|
|
18
11
|
new.request(
|
|
19
12
|
:get,
|
|
@@ -29,10 +22,6 @@ module DearInventory
|
|
|
29
22
|
#
|
|
30
23
|
# @param params [Hash] URL query string parameters that conform to
|
|
31
24
|
# DearInventory::Parameters::Purchase::Show
|
|
32
|
-
sig do
|
|
33
|
-
params(params: T::Hash[Symbol, T.untyped]).
|
|
34
|
-
returns(DearInventory::Response)
|
|
35
|
-
end
|
|
36
25
|
def show(params = {})
|
|
37
26
|
new.request(
|
|
38
27
|
:get,
|
|
@@ -45,7 +34,6 @@ module DearInventory
|
|
|
45
34
|
|
|
46
35
|
private
|
|
47
36
|
|
|
48
|
-
sig { params(endpoint: T.nilable(String)).returns(String) }
|
|
49
37
|
def resource_uri(endpoint)
|
|
50
38
|
suffix =
|
|
51
39
|
case endpoint
|