dear-inventory-ruby 0.2.2 → 0.2.5

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.
@@ -0,0 +1,615 @@
1
+ =begin
2
+ #DEAR Inventory API
3
+
4
+ #This specifing endpoints for DEAR Inventory API
5
+
6
+ The version of the OpenAPI document: 2.0.0
7
+ Contact: nnhansg@gmail.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.3.1
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module DearInventoryRuby
16
+ class Sale
17
+ # Unique DEAR Sale ID. Required for PUT
18
+ attr_accessor :id
19
+
20
+ # Customer name
21
+ attr_accessor :customer
22
+
23
+ # Customer identifier
24
+ attr_accessor :customer_id
25
+
26
+ # Customer Contact name
27
+ attr_accessor :contact
28
+
29
+ # Customer Contact phone
30
+ attr_accessor :phone
31
+
32
+ # Customer Contact email
33
+ attr_accessor :email
34
+
35
+ # Account code used by default for invoice lines when no revenue account is defined on Product. By default it is equal to Customer Sale account
36
+ attr_accessor :default_account
37
+
38
+ # True if there is no quote in the sale
39
+ attr_accessor :skip_quote
40
+
41
+ attr_accessor :billing_address
42
+
43
+ attr_accessor :shipping_address
44
+
45
+ # Shipping Notes
46
+ attr_accessor :shipping_notes
47
+
48
+ # 3 character currency code of Base Currency defined in General Settings on the moment when Sale was created.
49
+ attr_accessor :base_currency
50
+
51
+ # 3 character currency code of customer Currency defined in Customer card at the moment when customer is selected for the Sale.
52
+ attr_accessor :customer_currency
53
+
54
+ # Default Tax Rule name selected for Sale
55
+ attr_accessor :tax_rule
56
+
57
+ # Inclusive or Exclusive
58
+ attr_accessor :tax_calculation
59
+
60
+ # Payment terms name
61
+ attr_accessor :terms
62
+
63
+ # Price Tier name selected for Sale
64
+ attr_accessor :price_tier
65
+
66
+ # Date when shipment is due
67
+ attr_accessor :ship_by
68
+
69
+ # Default location to pick stock from
70
+ attr_accessor :location
71
+
72
+ # Date when task was created
73
+ attr_accessor :sale_order_date
74
+
75
+ # UTC Time
76
+ attr_accessor :last_modified_on
77
+
78
+ # Custom Sale note
79
+ attr_accessor :note
80
+
81
+ # Reference number used by customer to identify this sale. Could be a purchase order number generated by customer.
82
+ attr_accessor :customer_reference
83
+
84
+ # COGS amount in base currency
85
+ attr_accessor :cogs_amount
86
+
87
+ # Sale Status, see possible values
88
+ attr_accessor :status
89
+
90
+ # Pick status. Possible Values are VOIDED, NOT AVAILABLE, PICKED, PICKING , NOT PICKED , PARTIALLY PICKED
91
+ attr_accessor :combined_picking_status
92
+
93
+ # Pack status. Possible Values are VOIDED, NOT AVAILABLE, PACKED, PACKING, NOT PACKED, PARTIALLY PACKED
94
+ attr_accessor :combined_packing_status
95
+
96
+ # Ship status. Possible Values are VOIDED, NOT AVAILABLE, SHIPPED, SHIPPING , NOT SHIPPED , PARTIALLY SHIPPED
97
+ attr_accessor :combined_shipping_status
98
+
99
+ # Fulfilment status. Possible Values are FULFILLED, PARTIALLY FULFILLED, NOT AVAILABLE, NOT FULFILLED, VOIDED
100
+ attr_accessor :ful_filment_status
101
+
102
+ # Invoice status. Possible Values are INVOICED, INVOICED / CREDITED, NOT AVAILABLE, NOT INVOICED, PARTIALLY INVOICED, PARTIALLY INVOICED / CREDITED
103
+ attr_accessor :combined_invoice_status
104
+
105
+ # Payment status. Possible Values are NOT REFUNDED, PREPAID, PARTIALLY PAID, UNPAID, PAID, VOIDED
106
+ attr_accessor :combined_payment_status
107
+
108
+ # Tracking Numbers
109
+ attr_accessor :combined_tracking_numbers
110
+
111
+ # Name of Carrier/shipping method
112
+ attr_accessor :carrier
113
+
114
+ # Conversion Rate expressed as number of Base currency units for one Customer currency unit
115
+ attr_accessor :currency_rate
116
+
117
+ # Sales representative name
118
+ attr_accessor :sales_representative
119
+
120
+ # Type of sale Simple Sale or Advanced Sale, Service Sale
121
+ attr_accessor :type
122
+
123
+ # Source of the sale. read-only field
124
+ attr_accessor :source_channel
125
+
126
+ # Custom field that is only available in API and allows to set arbitrary value for the sale for later search and any custom logic
127
+ attr_accessor :external_id
128
+
129
+ # true when it is service-only sale
130
+ attr_accessor :service_only
131
+
132
+ attr_accessor :quote
133
+
134
+ attr_accessor :order
135
+
136
+ # Sale Invoices
137
+ attr_accessor :invoices
138
+
139
+ # Attribute mapping from ruby-style variable name to JSON key.
140
+ def self.attribute_map
141
+ {
142
+ :'id' => :'ID',
143
+ :'customer' => :'Customer',
144
+ :'customer_id' => :'CustomerID',
145
+ :'contact' => :'Contact',
146
+ :'phone' => :'Phone',
147
+ :'email' => :'Email',
148
+ :'default_account' => :'DefaultAccount',
149
+ :'skip_quote' => :'SkipQuote',
150
+ :'billing_address' => :'BillingAddress',
151
+ :'shipping_address' => :'ShippingAddress',
152
+ :'shipping_notes' => :'ShippingNotes',
153
+ :'base_currency' => :'BaseCurrency',
154
+ :'customer_currency' => :'CustomerCurrency',
155
+ :'tax_rule' => :'TaxRule',
156
+ :'tax_calculation' => :'TaxCalculation',
157
+ :'terms' => :'Terms',
158
+ :'price_tier' => :'PriceTier',
159
+ :'ship_by' => :'ShipBy',
160
+ :'location' => :'Location',
161
+ :'sale_order_date' => :'SaleOrderDate',
162
+ :'last_modified_on' => :'LastModifiedOn',
163
+ :'note' => :'Note',
164
+ :'customer_reference' => :'CustomerReference',
165
+ :'cogs_amount' => :'COGSAmount',
166
+ :'status' => :'Status',
167
+ :'combined_picking_status' => :'CombinedPickingStatus',
168
+ :'combined_packing_status' => :'CombinedPackingStatus',
169
+ :'combined_shipping_status' => :'CombinedShippingStatus',
170
+ :'ful_filment_status' => :'FulFilmentStatus',
171
+ :'combined_invoice_status' => :'CombinedInvoiceStatus',
172
+ :'combined_payment_status' => :'CombinedPaymentStatus',
173
+ :'combined_tracking_numbers' => :'CombinedTrackingNumbers',
174
+ :'carrier' => :'Carrier',
175
+ :'currency_rate' => :'CurrencyRate',
176
+ :'sales_representative' => :'SalesRepresentative',
177
+ :'type' => :'Type',
178
+ :'source_channel' => :'SourceChannel',
179
+ :'external_id' => :'ExternalID',
180
+ :'service_only' => :'ServiceOnly',
181
+ :'quote' => :'Quote',
182
+ :'order' => :'Order',
183
+ :'invoices' => :'Invoices'
184
+ }
185
+ end
186
+
187
+ # Attribute type mapping.
188
+ def self.openapi_types
189
+ {
190
+ :'id' => :'String',
191
+ :'customer' => :'String',
192
+ :'customer_id' => :'String',
193
+ :'contact' => :'String',
194
+ :'phone' => :'String',
195
+ :'email' => :'String',
196
+ :'default_account' => :'String',
197
+ :'skip_quote' => :'Boolean',
198
+ :'billing_address' => :'Address',
199
+ :'shipping_address' => :'ShippingAddress',
200
+ :'shipping_notes' => :'String',
201
+ :'base_currency' => :'String',
202
+ :'customer_currency' => :'String',
203
+ :'tax_rule' => :'String',
204
+ :'tax_calculation' => :'String',
205
+ :'terms' => :'String',
206
+ :'price_tier' => :'String',
207
+ :'ship_by' => :'Date',
208
+ :'location' => :'String',
209
+ :'sale_order_date' => :'Date',
210
+ :'last_modified_on' => :'Date',
211
+ :'note' => :'String',
212
+ :'customer_reference' => :'String',
213
+ :'cogs_amount' => :'Float',
214
+ :'status' => :'String',
215
+ :'combined_picking_status' => :'String',
216
+ :'combined_packing_status' => :'String',
217
+ :'combined_shipping_status' => :'String',
218
+ :'ful_filment_status' => :'String',
219
+ :'combined_invoice_status' => :'String',
220
+ :'combined_payment_status' => :'String',
221
+ :'combined_tracking_numbers' => :'String',
222
+ :'carrier' => :'String',
223
+ :'currency_rate' => :'Float',
224
+ :'sales_representative' => :'String',
225
+ :'type' => :'String',
226
+ :'source_channel' => :'String',
227
+ :'external_id' => :'String',
228
+ :'service_only' => :'String',
229
+ :'quote' => :'SaleQuote',
230
+ :'order' => :'SaleOrder',
231
+ :'invoices' => :'Array<SaleInvoice>'
232
+ }
233
+ end
234
+
235
+ # List of attributes with nullable: true
236
+ def self.openapi_nullable
237
+ Set.new([
238
+ ])
239
+ end
240
+
241
+ # Initializes the object
242
+ # @param [Hash] attributes Model attributes in the form of hash
243
+ def initialize(attributes = {})
244
+ if (!attributes.is_a?(Hash))
245
+ fail ArgumentError, "The input argument (attributes) must be a hash in `DearInventoryRuby::Sale` initialize method"
246
+ end
247
+
248
+ # check to see if the attribute exists and convert string to symbol for hash key
249
+ attributes = attributes.each_with_object({}) { |(k, v), h|
250
+ if (!self.class.attribute_map.key?(k.to_sym))
251
+ fail ArgumentError, "`#{k}` is not a valid attribute in `DearInventoryRuby::Sale`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
252
+ end
253
+ h[k.to_sym] = v
254
+ }
255
+
256
+ if attributes.key?(:'id')
257
+ self.id = attributes[:'id']
258
+ end
259
+
260
+ if attributes.key?(:'customer')
261
+ self.customer = attributes[:'customer']
262
+ end
263
+
264
+ if attributes.key?(:'customer_id')
265
+ self.customer_id = attributes[:'customer_id']
266
+ end
267
+
268
+ if attributes.key?(:'contact')
269
+ self.contact = attributes[:'contact']
270
+ end
271
+
272
+ if attributes.key?(:'phone')
273
+ self.phone = attributes[:'phone']
274
+ end
275
+
276
+ if attributes.key?(:'email')
277
+ self.email = attributes[:'email']
278
+ end
279
+
280
+ if attributes.key?(:'default_account')
281
+ self.default_account = attributes[:'default_account']
282
+ end
283
+
284
+ if attributes.key?(:'skip_quote')
285
+ self.skip_quote = attributes[:'skip_quote']
286
+ end
287
+
288
+ if attributes.key?(:'billing_address')
289
+ self.billing_address = attributes[:'billing_address']
290
+ end
291
+
292
+ if attributes.key?(:'shipping_address')
293
+ self.shipping_address = attributes[:'shipping_address']
294
+ end
295
+
296
+ if attributes.key?(:'shipping_notes')
297
+ self.shipping_notes = attributes[:'shipping_notes']
298
+ end
299
+
300
+ if attributes.key?(:'base_currency')
301
+ self.base_currency = attributes[:'base_currency']
302
+ end
303
+
304
+ if attributes.key?(:'customer_currency')
305
+ self.customer_currency = attributes[:'customer_currency']
306
+ end
307
+
308
+ if attributes.key?(:'tax_rule')
309
+ self.tax_rule = attributes[:'tax_rule']
310
+ end
311
+
312
+ if attributes.key?(:'tax_calculation')
313
+ self.tax_calculation = attributes[:'tax_calculation']
314
+ end
315
+
316
+ if attributes.key?(:'terms')
317
+ self.terms = attributes[:'terms']
318
+ end
319
+
320
+ if attributes.key?(:'price_tier')
321
+ self.price_tier = attributes[:'price_tier']
322
+ end
323
+
324
+ if attributes.key?(:'ship_by')
325
+ self.ship_by = attributes[:'ship_by']
326
+ end
327
+
328
+ if attributes.key?(:'location')
329
+ self.location = attributes[:'location']
330
+ end
331
+
332
+ if attributes.key?(:'sale_order_date')
333
+ self.sale_order_date = attributes[:'sale_order_date']
334
+ end
335
+
336
+ if attributes.key?(:'last_modified_on')
337
+ self.last_modified_on = attributes[:'last_modified_on']
338
+ end
339
+
340
+ if attributes.key?(:'note')
341
+ self.note = attributes[:'note']
342
+ end
343
+
344
+ if attributes.key?(:'customer_reference')
345
+ self.customer_reference = attributes[:'customer_reference']
346
+ end
347
+
348
+ if attributes.key?(:'cogs_amount')
349
+ self.cogs_amount = attributes[:'cogs_amount']
350
+ end
351
+
352
+ if attributes.key?(:'status')
353
+ self.status = attributes[:'status']
354
+ end
355
+
356
+ if attributes.key?(:'combined_picking_status')
357
+ self.combined_picking_status = attributes[:'combined_picking_status']
358
+ end
359
+
360
+ if attributes.key?(:'combined_packing_status')
361
+ self.combined_packing_status = attributes[:'combined_packing_status']
362
+ end
363
+
364
+ if attributes.key?(:'combined_shipping_status')
365
+ self.combined_shipping_status = attributes[:'combined_shipping_status']
366
+ end
367
+
368
+ if attributes.key?(:'ful_filment_status')
369
+ self.ful_filment_status = attributes[:'ful_filment_status']
370
+ end
371
+
372
+ if attributes.key?(:'combined_invoice_status')
373
+ self.combined_invoice_status = attributes[:'combined_invoice_status']
374
+ end
375
+
376
+ if attributes.key?(:'combined_payment_status')
377
+ self.combined_payment_status = attributes[:'combined_payment_status']
378
+ end
379
+
380
+ if attributes.key?(:'combined_tracking_numbers')
381
+ self.combined_tracking_numbers = attributes[:'combined_tracking_numbers']
382
+ end
383
+
384
+ if attributes.key?(:'carrier')
385
+ self.carrier = attributes[:'carrier']
386
+ end
387
+
388
+ if attributes.key?(:'currency_rate')
389
+ self.currency_rate = attributes[:'currency_rate']
390
+ end
391
+
392
+ if attributes.key?(:'sales_representative')
393
+ self.sales_representative = attributes[:'sales_representative']
394
+ end
395
+
396
+ if attributes.key?(:'type')
397
+ self.type = attributes[:'type']
398
+ end
399
+
400
+ if attributes.key?(:'source_channel')
401
+ self.source_channel = attributes[:'source_channel']
402
+ end
403
+
404
+ if attributes.key?(:'external_id')
405
+ self.external_id = attributes[:'external_id']
406
+ end
407
+
408
+ if attributes.key?(:'service_only')
409
+ self.service_only = attributes[:'service_only']
410
+ end
411
+
412
+ if attributes.key?(:'quote')
413
+ self.quote = attributes[:'quote']
414
+ end
415
+
416
+ if attributes.key?(:'order')
417
+ self.order = attributes[:'order']
418
+ end
419
+
420
+ if attributes.key?(:'invoices')
421
+ if (value = attributes[:'invoices']).is_a?(Array)
422
+ self.invoices = value
423
+ end
424
+ end
425
+ end
426
+
427
+ # Show invalid properties with the reasons. Usually used together with valid?
428
+ # @return Array for valid properties with the reasons
429
+ def list_invalid_properties
430
+ invalid_properties = Array.new
431
+ invalid_properties
432
+ end
433
+
434
+ # Check to see if the all the properties in the model are valid
435
+ # @return true if the model is valid
436
+ def valid?
437
+ true
438
+ end
439
+
440
+ # Checks equality by comparing each attribute.
441
+ # @param [Object] Object to be compared
442
+ def ==(o)
443
+ return true if self.equal?(o)
444
+ self.class == o.class &&
445
+ id == o.id &&
446
+ customer == o.customer &&
447
+ customer_id == o.customer_id &&
448
+ contact == o.contact &&
449
+ phone == o.phone &&
450
+ email == o.email &&
451
+ default_account == o.default_account &&
452
+ skip_quote == o.skip_quote &&
453
+ billing_address == o.billing_address &&
454
+ shipping_address == o.shipping_address &&
455
+ shipping_notes == o.shipping_notes &&
456
+ base_currency == o.base_currency &&
457
+ customer_currency == o.customer_currency &&
458
+ tax_rule == o.tax_rule &&
459
+ tax_calculation == o.tax_calculation &&
460
+ terms == o.terms &&
461
+ price_tier == o.price_tier &&
462
+ ship_by == o.ship_by &&
463
+ location == o.location &&
464
+ sale_order_date == o.sale_order_date &&
465
+ last_modified_on == o.last_modified_on &&
466
+ note == o.note &&
467
+ customer_reference == o.customer_reference &&
468
+ cogs_amount == o.cogs_amount &&
469
+ status == o.status &&
470
+ combined_picking_status == o.combined_picking_status &&
471
+ combined_packing_status == o.combined_packing_status &&
472
+ combined_shipping_status == o.combined_shipping_status &&
473
+ ful_filment_status == o.ful_filment_status &&
474
+ combined_invoice_status == o.combined_invoice_status &&
475
+ combined_payment_status == o.combined_payment_status &&
476
+ combined_tracking_numbers == o.combined_tracking_numbers &&
477
+ carrier == o.carrier &&
478
+ currency_rate == o.currency_rate &&
479
+ sales_representative == o.sales_representative &&
480
+ type == o.type &&
481
+ source_channel == o.source_channel &&
482
+ external_id == o.external_id &&
483
+ service_only == o.service_only &&
484
+ quote == o.quote &&
485
+ order == o.order &&
486
+ invoices == o.invoices
487
+ end
488
+
489
+ # @see the `==` method
490
+ # @param [Object] Object to be compared
491
+ def eql?(o)
492
+ self == o
493
+ end
494
+
495
+ # Calculates hash code according to all attributes.
496
+ # @return [Integer] Hash code
497
+ def hash
498
+ [id, customer, customer_id, contact, phone, email, default_account, skip_quote, billing_address, shipping_address, shipping_notes, base_currency, customer_currency, tax_rule, tax_calculation, terms, price_tier, ship_by, location, sale_order_date, last_modified_on, note, customer_reference, cogs_amount, status, combined_picking_status, combined_packing_status, combined_shipping_status, ful_filment_status, combined_invoice_status, combined_payment_status, combined_tracking_numbers, carrier, currency_rate, sales_representative, type, source_channel, external_id, service_only, quote, order, invoices].hash
499
+ end
500
+
501
+ # Builds the object from hash
502
+ # @param [Hash] attributes Model attributes in the form of hash
503
+ # @return [Object] Returns the model itself
504
+ def self.build_from_hash(attributes)
505
+ new.build_from_hash(attributes)
506
+ end
507
+
508
+ # Builds the object from hash
509
+ # @param [Hash] attributes Model attributes in the form of hash
510
+ # @return [Object] Returns the model itself
511
+ def build_from_hash(attributes)
512
+ return nil unless attributes.is_a?(Hash)
513
+ self.class.openapi_types.each_pair do |key, type|
514
+ if type =~ /\AArray<(.*)>/i
515
+ # check to ensure the input is an array given that the attribute
516
+ # is documented as an array but the input is not
517
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
518
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
519
+ end
520
+ elsif !attributes[self.class.attribute_map[key]].nil?
521
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
522
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
523
+ end
524
+
525
+ self
526
+ end
527
+
528
+ # Deserializes the data based on type
529
+ # @param string type Data type
530
+ # @param string value Value to be deserialized
531
+ # @return [Object] Deserialized data
532
+ def _deserialize(type, value)
533
+ case type.to_sym
534
+ when :DateTime
535
+ DateTime.parse(value)
536
+ when :Date
537
+ Date.parse(value)
538
+ when :String
539
+ value.to_s
540
+ when :Integer
541
+ value.to_i
542
+ when :Float
543
+ value.to_f
544
+ when :Boolean
545
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
546
+ true
547
+ else
548
+ false
549
+ end
550
+ when :Object
551
+ # generic object (usually a Hash), return directly
552
+ value
553
+ when /\AArray<(?<inner_type>.+)>\z/
554
+ inner_type = Regexp.last_match[:inner_type]
555
+ value.map { |v| _deserialize(inner_type, v) }
556
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
557
+ k_type = Regexp.last_match[:k_type]
558
+ v_type = Regexp.last_match[:v_type]
559
+ {}.tap do |hash|
560
+ value.each do |k, v|
561
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
562
+ end
563
+ end
564
+ else # model
565
+ DearInventoryRuby.const_get(type).build_from_hash(value)
566
+ end
567
+ end
568
+
569
+ # Returns the string representation of the object
570
+ # @return [String] String presentation of the object
571
+ def to_s
572
+ to_hash.to_s
573
+ end
574
+
575
+ # to_body is an alias to to_hash (backward compatibility)
576
+ # @return [Hash] Returns the object in the form of hash
577
+ def to_body
578
+ to_hash
579
+ end
580
+
581
+ # Returns the object in the form of hash
582
+ # @return [Hash] Returns the object in the form of hash
583
+ def to_hash
584
+ hash = {}
585
+ self.class.attribute_map.each_pair do |attr, param|
586
+ value = self.send(attr)
587
+ if value.nil?
588
+ is_nullable = self.class.openapi_nullable.include?(attr)
589
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
590
+ end
591
+
592
+ hash[param] = _to_hash(value)
593
+ end
594
+ hash
595
+ end
596
+
597
+ # Outputs non-array value in the form of hash
598
+ # For object, use to_hash. Otherwise, just return the value
599
+ # @param [Object] value Any valid value
600
+ # @return [Hash] Returns the value in the form of hash
601
+ def _to_hash(value)
602
+ if value.is_a?(Array)
603
+ value.compact.map { |v| _to_hash(v) }
604
+ elsif value.is_a?(Hash)
605
+ {}.tap do |hash|
606
+ value.each { |k, v| hash[k] = _to_hash(v) }
607
+ end
608
+ elsif value.respond_to? :to_hash
609
+ value.to_hash
610
+ else
611
+ value
612
+ end
613
+ end
614
+ end
615
+ end