storecove 1.0.9 → 1.0.10

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 (113) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +7 -0
  3. data/Gemfile.lock +69 -0
  4. data/lib/storecove.rb +20 -1
  5. data/lib/storecove/api/invoice_submissions_api.rb +9 -4
  6. data/lib/storecove/api/legal_entities_api.rb +248 -0
  7. data/lib/storecove/api/peppol_identifiers_api.rb +156 -0
  8. data/lib/storecove/api/purchase_invoices_api.rb +133 -0
  9. data/lib/storecove/api/shop_account_requests_api.rb +24 -11
  10. data/lib/storecove/api/shop_accounts_api.rb +25 -12
  11. data/lib/storecove/api/shops_api.rb +2 -1
  12. data/lib/storecove/api_client.rb +39 -26
  13. data/lib/storecove/api_error.rb +1 -0
  14. data/lib/storecove/configuration.rb +7 -0
  15. data/lib/storecove/models/accounting_cost_code.rb +2 -1
  16. data/lib/storecove/models/accounting_customer_party.rb +2 -1
  17. data/lib/storecove/models/accounting_details.rb +219 -0
  18. data/lib/storecove/models/accounting_details_1.rb +219 -0
  19. data/lib/storecove/models/address.rb +2 -1
  20. data/lib/storecove/models/contact.rb +2 -6
  21. data/lib/storecove/models/country.rb +10 -0
  22. data/lib/storecove/models/currency_code.rb +10 -0
  23. data/lib/storecove/models/error_model.rb +2 -1
  24. data/lib/storecove/models/invoice.rb +16 -3
  25. data/lib/storecove/models/invoice_line.rb +251 -6
  26. data/lib/storecove/models/invoice_recipient.rb +24 -11
  27. data/lib/storecove/models/invoice_recipient_preflight.rb +21 -19
  28. data/lib/storecove/models/invoice_submission.rb +20 -9
  29. data/lib/storecove/models/invoice_submission_result.rb +2 -1
  30. data/lib/storecove/models/legal_entity.rb +164 -25
  31. data/lib/storecove/models/legal_entity_create.rb +417 -0
  32. data/lib/storecove/models/legal_entity_identifier.rb +2 -1
  33. data/lib/storecove/models/legal_entity_shop.rb +253 -0
  34. data/lib/storecove/models/legal_entity_update.rb +380 -0
  35. data/lib/storecove/models/logos.rb +2 -1
  36. data/lib/storecove/models/party.rb +7 -1
  37. data/lib/storecove/models/payment_means.rb +199 -0
  38. data/lib/storecove/models/peppol_identifier.rb +284 -0
  39. data/lib/storecove/models/peppol_identifier_create.rb +308 -0
  40. data/lib/storecove/models/preflight_invoice_recipient_result.rb +2 -1
  41. data/lib/storecove/models/public_identifier.rb +3 -2
  42. data/lib/storecove/models/public_identifiers.rb +2 -1
  43. data/lib/storecove/models/purchase_invoice.rb +463 -0
  44. data/lib/storecove/models/purchase_invoice_invoice_line.rb +247 -0
  45. data/lib/storecove/models/purchase_invoice_sender.rb +280 -0
  46. data/lib/storecove/models/purchase_invoice_sender_billing_contact.rb +209 -0
  47. data/lib/storecove/models/purchase_invoice_ubl.rb +209 -0
  48. data/lib/storecove/models/shop.rb +3 -2
  49. data/lib/storecove/models/shop_account_input.rb +2 -1
  50. data/lib/storecove/models/shop_account_request_input.rb +2 -1
  51. data/lib/storecove/models/shop_account_request_result.rb +2 -1
  52. data/lib/storecove/models/shop_account_request_update.rb +2 -1
  53. data/lib/storecove/models/shop_account_result.rb +2 -1
  54. data/lib/storecove/models/shop_account_update.rb +2 -1
  55. data/lib/storecove/models/tax.rb +2 -1
  56. data/lib/storecove/models/vat_details.rb +209 -0
  57. data/lib/storecove/models/widget_identification.rb +228 -0
  58. data/lib/storecove/version.rb +2 -1
  59. data/spec/api/invoice_submissions_api_spec.rb +9 -20
  60. data/spec/api/legal_entities_api_spec.rb +84 -0
  61. data/spec/api/peppol_identifiers_api_spec.rb +63 -0
  62. data/spec/api/purchase_invoices_api_spec.rb +59 -0
  63. data/spec/api/shop_account_requests_api_spec.rb +30 -41
  64. data/spec/api/shop_accounts_api_spec.rb +34 -45
  65. data/spec/api/shops_api_spec.rb +6 -17
  66. data/spec/api_client_spec.rb +2 -13
  67. data/spec/configuration_spec.rb +2 -13
  68. data/spec/models/accounting_cost_code_spec.rb +3 -14
  69. data/spec/models/accounting_customer_party_spec.rb +3 -14
  70. data/spec/models/accounting_details_1_spec.rb +60 -0
  71. data/spec/models/accounting_details_spec.rb +60 -0
  72. data/spec/models/{party_address_spec.rb → address_spec.rb} +8 -19
  73. data/spec/models/{party_contact_spec.rb → contact_spec.rb} +8 -19
  74. data/spec/models/country_spec.rb +3 -14
  75. data/spec/models/currency_code_spec.rb +3 -14
  76. data/spec/models/error_model_spec.rb +3 -14
  77. data/spec/models/invoice_line_spec.rb +69 -14
  78. data/spec/models/invoice_recipient_preflight_spec.rb +10 -15
  79. data/spec/models/invoice_recipient_spec.rb +15 -14
  80. data/spec/models/{invoice_submission_invoice_spec.rb → invoice_spec.rb} +20 -19
  81. data/spec/models/invoice_submission_result_spec.rb +4 -15
  82. data/spec/models/invoice_submission_spec.rb +4 -15
  83. data/spec/models/legal_entity_create_spec.rb +78 -0
  84. data/spec/models/legal_entity_identifier_spec.rb +3 -14
  85. data/spec/models/legal_entity_shop_spec.rb +84 -0
  86. data/spec/models/legal_entity_spec.rb +7 -18
  87. data/spec/models/legal_entity_update_spec.rb +78 -0
  88. data/spec/models/logos_spec.rb +3 -14
  89. data/spec/models/party_spec.rb +3 -14
  90. data/spec/models/payment_means_spec.rb +48 -0
  91. data/spec/models/peppol_identifier_create_spec.rb +54 -0
  92. data/spec/models/peppol_identifier_spec.rb +54 -0
  93. data/spec/models/preflight_invoice_recipient_result_spec.rb +3 -14
  94. data/spec/models/public_identifier_spec.rb +3 -14
  95. data/spec/models/public_identifiers_spec.rb +3 -14
  96. data/spec/models/purchase_invoice_invoice_line_spec.rb +78 -0
  97. data/spec/models/purchase_invoice_sender_billing_contact_spec.rb +54 -0
  98. data/spec/models/purchase_invoice_sender_spec.rb +96 -0
  99. data/spec/models/purchase_invoice_spec.rb +188 -0
  100. data/spec/models/purchase_invoice_ubl_spec.rb +54 -0
  101. data/spec/models/shop_account_input_spec.rb +3 -14
  102. data/spec/models/shop_account_request_input_spec.rb +3 -14
  103. data/spec/models/{shop_account_request_spec.rb → shop_account_request_result_spec.rb} +8 -19
  104. data/spec/models/shop_account_request_update_spec.rb +3 -14
  105. data/spec/models/shop_account_result_spec.rb +3 -14
  106. data/spec/models/shop_account_update_spec.rb +3 -14
  107. data/spec/models/shop_spec.rb +3 -14
  108. data/spec/models/{invoice_line_tax_spec.rb → tax_spec.rb} +8 -19
  109. data/spec/models/vat_details_spec.rb +54 -0
  110. data/spec/models/widget_identification_spec.rb +48 -0
  111. data/spec/spec_helper.rb +2 -13
  112. data/storecove.gemspec +10 -19
  113. metadata +83 -28
@@ -6,6 +6,7 @@
6
6
  OpenAPI spec version: 2.0.1
7
7
  Contact: apisupport@storecove.nl
8
8
  Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.3.1
9
10
 
10
11
  =end
11
12
 
@@ -68,7 +69,7 @@ module StorecoveApi
68
69
  end
69
70
 
70
71
  # Show invalid properties with the reasons. Usually used together with valid?
71
- # @return Array for valid properies with the reasons
72
+ # @return Array for valid properties with the reasons
72
73
  def list_invalid_properties
73
74
  invalid_properties = Array.new
74
75
  return invalid_properties
@@ -6,6 +6,7 @@
6
6
  OpenAPI spec version: 2.0.1
7
7
  Contact: apisupport@storecove.nl
8
8
  Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.3.1
9
10
 
10
11
  =end
11
12
 
@@ -14,7 +15,7 @@ require 'date'
14
15
  module StorecoveApi
15
16
  # A public identifier for this customer.
16
17
  class PublicIdentifier
17
- # The scheme of the public identifier, e.g. chambre of commerce number (for The Netherlands: NL:KVK), VAT, IBAN, or NL:OIN (OIN is a Dutch government organizaton id). The full list can be found on https://joinup.ec.europa.eu/svn/peppol/TransportInfrastructure/PEPPOL_Policy%20for%20use%20of%20identifiers-300.pdf.
18
+ # The scheme of the identifier. See <<_company>> for a list.
18
19
  attr_accessor :scheme
19
20
 
20
21
  # The actual identifier.
@@ -56,7 +57,7 @@ module StorecoveApi
56
57
  end
57
58
 
58
59
  # Show invalid properties with the reasons. Usually used together with valid?
59
- # @return Array for valid properies with the reasons
60
+ # @return Array for valid properties with the reasons
60
61
  def list_invalid_properties
61
62
  invalid_properties = Array.new
62
63
  if @scheme.nil?
@@ -6,6 +6,7 @@
6
6
  OpenAPI spec version: 2.0.1
7
7
  Contact: apisupport@storecove.nl
8
8
  Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.3.1
9
10
 
10
11
  =end
11
12
 
@@ -38,7 +39,7 @@ module StorecoveApi
38
39
  end
39
40
 
40
41
  # Show invalid properties with the reasons. Usually used together with valid?
41
- # @return Array for valid properies with the reasons
42
+ # @return Array for valid properties with the reasons
42
43
  def list_invalid_properties
43
44
  invalid_properties = Array.new
44
45
  return invalid_properties
@@ -0,0 +1,463 @@
1
+ =begin
2
+ #Storecove API
3
+
4
+ #Storecove API
5
+
6
+ OpenAPI spec version: 2.0.1
7
+ Contact: apisupport@storecove.nl
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.3.1
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module StorecoveApi
16
+
17
+ class PurchaseInvoice
18
+ # The GUID of the invoice
19
+ attr_accessor :guid
20
+
21
+ # The id of the LegalEntity the invoice was received for.
22
+ attr_accessor :legal_entity_id
23
+
24
+ # The Base64 encoded PDF document associated with the invoice.
25
+ attr_accessor :document
26
+
27
+ # The invoicenumber.
28
+ attr_accessor :invoice_number
29
+
30
+ # The date the invoice was issued. Format \"YYYY-MM-DD\".
31
+ attr_accessor :issue_date
32
+
33
+ # The date the invoice was issued for tax purposes. In most countries MUST match the issue_date. Format \"YYYY-MM-DD\".
34
+ attr_accessor :tax_point_date
35
+
36
+ # The date the invoice must be payed by. Format \"YYYY-MM-DD\".
37
+ attr_accessor :due_date
38
+
39
+ # The ISO 4217 currency for the invoice.
40
+ attr_accessor :document_currency_code
41
+
42
+ # Whether or not the invoice is reverse charged.
43
+ attr_accessor :vat_reverse_charge
44
+
45
+ # The total invoice amount payable, including VAT. This is equal to the sum of the invoice_lines (amount_excluding_vat + vat.amount)
46
+ attr_accessor :amount_including_vat
47
+
48
+ # A correction on the amount to pay, for instance if the invoice has been prepaid, in which case it will be negative.
49
+ attr_accessor :allowance_charge
50
+
51
+ # The difference between the invoice total and the sum of the invoice lines.
52
+ attr_accessor :payable_rounding_amount
53
+
54
+ # The total invoice amount payable including VAT. This is equal to amount_including_vat + allowance_charge + payable_rounding_amount. This property is redundant and provided only to make invoice processing more easy. You can also choose to only store this property, instead of the underlying fields.
55
+ attr_accessor :payable_amount
56
+
57
+ # The source the invoice was received from.
58
+ attr_accessor :source
59
+
60
+ # The organzation that sent the invoice.
61
+ attr_accessor :sender
62
+
63
+ # The type of invoice.
64
+ attr_accessor :invoice_type
65
+
66
+ # The start date of the period this invoice relates to. Format \"YYYY-MM-DD\".
67
+ attr_accessor :period_start
68
+
69
+ # The end date of the period this invoice relates to. Format \"YYYY-MM-DD\".
70
+ attr_accessor :period_end
71
+
72
+ # The end date of the period this invoice relates to. Format \"YYYY-MM-DD\".
73
+ attr_accessor :buyer_reference
74
+
75
+ # The end date of the period this invoice relates to. Format \"YYYY-MM-DD\".
76
+ attr_accessor :billing_reference
77
+
78
+ # The end date of the period this invoice relates to. Format \"YYYY-MM-DD\".
79
+ attr_accessor :contract_document_reference
80
+
81
+ attr_accessor :invoice_lines
82
+
83
+ attr_accessor :accounting
84
+
85
+ attr_accessor :payment_means
86
+
87
+ class EnumAttributeValidator
88
+ attr_reader :datatype
89
+ attr_reader :allowable_values
90
+
91
+ def initialize(datatype, allowable_values)
92
+ @allowable_values = allowable_values.map do |value|
93
+ case datatype.to_s
94
+ when /Integer/i
95
+ value.to_i
96
+ when /Float/i
97
+ value.to_f
98
+ else
99
+ value
100
+ end
101
+ end
102
+ end
103
+
104
+ def valid?(value)
105
+ !value || allowable_values.include?(value)
106
+ end
107
+ end
108
+
109
+ # Attribute mapping from ruby-style variable name to JSON key.
110
+ def self.attribute_map
111
+ {
112
+ :'guid' => :'guid',
113
+ :'legal_entity_id' => :'legal_entity_id',
114
+ :'document' => :'document',
115
+ :'invoice_number' => :'invoice_number',
116
+ :'issue_date' => :'issue_date',
117
+ :'tax_point_date' => :'tax_point_date',
118
+ :'due_date' => :'due_date',
119
+ :'document_currency_code' => :'document_currency_code',
120
+ :'vat_reverse_charge' => :'vat_reverse_charge',
121
+ :'amount_including_vat' => :'amount_including_vat',
122
+ :'allowance_charge' => :'allowance_charge',
123
+ :'payable_rounding_amount' => :'payable_rounding_amount',
124
+ :'payable_amount' => :'payable_amount',
125
+ :'source' => :'source',
126
+ :'sender' => :'sender',
127
+ :'invoice_type' => :'invoice_type',
128
+ :'period_start' => :'period_start',
129
+ :'period_end' => :'period_end',
130
+ :'buyer_reference' => :'buyer_reference',
131
+ :'billing_reference' => :'billing_reference',
132
+ :'contract_document_reference' => :'contract_document_reference',
133
+ :'invoice_lines' => :'invoice_lines',
134
+ :'accounting' => :'accounting',
135
+ :'payment_means' => :'payment_means'
136
+ }
137
+ end
138
+
139
+ # Attribute type mapping.
140
+ def self.swagger_types
141
+ {
142
+ :'guid' => :'String',
143
+ :'legal_entity_id' => :'Integer',
144
+ :'document' => :'String',
145
+ :'invoice_number' => :'String',
146
+ :'issue_date' => :'String',
147
+ :'tax_point_date' => :'String',
148
+ :'due_date' => :'String',
149
+ :'document_currency_code' => :'String',
150
+ :'vat_reverse_charge' => :'BOOLEAN',
151
+ :'amount_including_vat' => :'Float',
152
+ :'allowance_charge' => :'Float',
153
+ :'payable_rounding_amount' => :'Float',
154
+ :'payable_amount' => :'Float',
155
+ :'source' => :'String',
156
+ :'sender' => :'PurchaseInvoiceSender',
157
+ :'invoice_type' => :'String',
158
+ :'period_start' => :'String',
159
+ :'period_end' => :'String',
160
+ :'buyer_reference' => :'String',
161
+ :'billing_reference' => :'String',
162
+ :'contract_document_reference' => :'String',
163
+ :'invoice_lines' => :'Array<PurchaseInvoiceInvoiceLine>',
164
+ :'accounting' => :'AccountingDetails',
165
+ :'payment_means' => :'PaymentMeans'
166
+ }
167
+ end
168
+
169
+ # Initializes the object
170
+ # @param [Hash] attributes Model attributes in the form of hash
171
+ def initialize(attributes = {})
172
+ return unless attributes.is_a?(Hash)
173
+
174
+ # convert string to symbol for hash key
175
+ attributes = attributes.each_with_object({}){|(k,v), h| h[k.to_sym] = v}
176
+
177
+ if attributes.has_key?(:'guid')
178
+ self.guid = attributes[:'guid']
179
+ end
180
+
181
+ if attributes.has_key?(:'legal_entity_id')
182
+ self.legal_entity_id = attributes[:'legal_entity_id']
183
+ end
184
+
185
+ if attributes.has_key?(:'document')
186
+ self.document = attributes[:'document']
187
+ end
188
+
189
+ if attributes.has_key?(:'invoice_number')
190
+ self.invoice_number = attributes[:'invoice_number']
191
+ end
192
+
193
+ if attributes.has_key?(:'issue_date')
194
+ self.issue_date = attributes[:'issue_date']
195
+ end
196
+
197
+ if attributes.has_key?(:'tax_point_date')
198
+ self.tax_point_date = attributes[:'tax_point_date']
199
+ end
200
+
201
+ if attributes.has_key?(:'due_date')
202
+ self.due_date = attributes[:'due_date']
203
+ end
204
+
205
+ if attributes.has_key?(:'document_currency_code')
206
+ self.document_currency_code = attributes[:'document_currency_code']
207
+ end
208
+
209
+ if attributes.has_key?(:'vat_reverse_charge')
210
+ self.vat_reverse_charge = attributes[:'vat_reverse_charge']
211
+ end
212
+
213
+ if attributes.has_key?(:'amount_including_vat')
214
+ self.amount_including_vat = attributes[:'amount_including_vat']
215
+ end
216
+
217
+ if attributes.has_key?(:'allowance_charge')
218
+ self.allowance_charge = attributes[:'allowance_charge']
219
+ end
220
+
221
+ if attributes.has_key?(:'payable_rounding_amount')
222
+ self.payable_rounding_amount = attributes[:'payable_rounding_amount']
223
+ end
224
+
225
+ if attributes.has_key?(:'payable_amount')
226
+ self.payable_amount = attributes[:'payable_amount']
227
+ end
228
+
229
+ if attributes.has_key?(:'source')
230
+ self.source = attributes[:'source']
231
+ end
232
+
233
+ if attributes.has_key?(:'sender')
234
+ self.sender = attributes[:'sender']
235
+ end
236
+
237
+ if attributes.has_key?(:'invoice_type')
238
+ self.invoice_type = attributes[:'invoice_type']
239
+ end
240
+
241
+ if attributes.has_key?(:'period_start')
242
+ self.period_start = attributes[:'period_start']
243
+ end
244
+
245
+ if attributes.has_key?(:'period_end')
246
+ self.period_end = attributes[:'period_end']
247
+ end
248
+
249
+ if attributes.has_key?(:'buyer_reference')
250
+ self.buyer_reference = attributes[:'buyer_reference']
251
+ end
252
+
253
+ if attributes.has_key?(:'billing_reference')
254
+ self.billing_reference = attributes[:'billing_reference']
255
+ end
256
+
257
+ if attributes.has_key?(:'contract_document_reference')
258
+ self.contract_document_reference = attributes[:'contract_document_reference']
259
+ end
260
+
261
+ if attributes.has_key?(:'invoice_lines')
262
+ if (value = attributes[:'invoice_lines']).is_a?(Array)
263
+ self.invoice_lines = value
264
+ end
265
+ end
266
+
267
+ if attributes.has_key?(:'accounting')
268
+ self.accounting = attributes[:'accounting']
269
+ end
270
+
271
+ if attributes.has_key?(:'payment_means')
272
+ self.payment_means = attributes[:'payment_means']
273
+ end
274
+
275
+ end
276
+
277
+ # Show invalid properties with the reasons. Usually used together with valid?
278
+ # @return Array for valid properties with the reasons
279
+ def list_invalid_properties
280
+ invalid_properties = Array.new
281
+ return invalid_properties
282
+ end
283
+
284
+ # Check to see if the all the properties in the model are valid
285
+ # @return true if the model is valid
286
+ def valid?
287
+ source_validator = EnumAttributeValidator.new('String', ["peppol", "script", "supplier", "email"])
288
+ return false unless source_validator.valid?(@source)
289
+ invoice_type_validator = EnumAttributeValidator.new('String', ["invoice", "creditnote", "correctioninvoice"])
290
+ return false unless invoice_type_validator.valid?(@invoice_type)
291
+ return true
292
+ end
293
+
294
+ # Custom attribute writer method checking allowed values (enum).
295
+ # @param [Object] source Object to be assigned
296
+ def source=(source)
297
+ validator = EnumAttributeValidator.new('String', ["peppol", "script", "supplier", "email"])
298
+ unless validator.valid?(source)
299
+ fail ArgumentError, "invalid value for 'source', must be one of #{validator.allowable_values}."
300
+ end
301
+ @source = source
302
+ end
303
+
304
+ # Custom attribute writer method checking allowed values (enum).
305
+ # @param [Object] invoice_type Object to be assigned
306
+ def invoice_type=(invoice_type)
307
+ validator = EnumAttributeValidator.new('String', ["invoice", "creditnote", "correctioninvoice"])
308
+ unless validator.valid?(invoice_type)
309
+ fail ArgumentError, "invalid value for 'invoice_type', must be one of #{validator.allowable_values}."
310
+ end
311
+ @invoice_type = invoice_type
312
+ end
313
+
314
+ # Checks equality by comparing each attribute.
315
+ # @param [Object] Object to be compared
316
+ def ==(o)
317
+ return true if self.equal?(o)
318
+ self.class == o.class &&
319
+ guid == o.guid &&
320
+ legal_entity_id == o.legal_entity_id &&
321
+ document == o.document &&
322
+ invoice_number == o.invoice_number &&
323
+ issue_date == o.issue_date &&
324
+ tax_point_date == o.tax_point_date &&
325
+ due_date == o.due_date &&
326
+ document_currency_code == o.document_currency_code &&
327
+ vat_reverse_charge == o.vat_reverse_charge &&
328
+ amount_including_vat == o.amount_including_vat &&
329
+ allowance_charge == o.allowance_charge &&
330
+ payable_rounding_amount == o.payable_rounding_amount &&
331
+ payable_amount == o.payable_amount &&
332
+ source == o.source &&
333
+ sender == o.sender &&
334
+ invoice_type == o.invoice_type &&
335
+ period_start == o.period_start &&
336
+ period_end == o.period_end &&
337
+ buyer_reference == o.buyer_reference &&
338
+ billing_reference == o.billing_reference &&
339
+ contract_document_reference == o.contract_document_reference &&
340
+ invoice_lines == o.invoice_lines &&
341
+ accounting == o.accounting &&
342
+ payment_means == o.payment_means
343
+ end
344
+
345
+ # @see the `==` method
346
+ # @param [Object] Object to be compared
347
+ def eql?(o)
348
+ self == o
349
+ end
350
+
351
+ # Calculates hash code according to all attributes.
352
+ # @return [Fixnum] Hash code
353
+ def hash
354
+ [guid, legal_entity_id, document, invoice_number, issue_date, tax_point_date, due_date, document_currency_code, vat_reverse_charge, amount_including_vat, allowance_charge, payable_rounding_amount, payable_amount, source, sender, invoice_type, period_start, period_end, buyer_reference, billing_reference, contract_document_reference, invoice_lines, accounting, payment_means].hash
355
+ end
356
+
357
+ # Builds the object from hash
358
+ # @param [Hash] attributes Model attributes in the form of hash
359
+ # @return [Object] Returns the model itself
360
+ def build_from_hash(attributes)
361
+ return nil unless attributes.is_a?(Hash)
362
+ self.class.swagger_types.each_pair do |key, type|
363
+ if type =~ /\AArray<(.*)>/i
364
+ # check to ensure the input is an array given that the the attribute
365
+ # is documented as an array but the input is not
366
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
367
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
368
+ end
369
+ elsif !attributes[self.class.attribute_map[key]].nil?
370
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
371
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
372
+ end
373
+
374
+ self
375
+ end
376
+
377
+ # Deserializes the data based on type
378
+ # @param string type Data type
379
+ # @param string value Value to be deserialized
380
+ # @return [Object] Deserialized data
381
+ def _deserialize(type, value)
382
+ case type.to_sym
383
+ when :DateTime
384
+ DateTime.parse(value)
385
+ when :Date
386
+ Date.parse(value)
387
+ when :String
388
+ value.to_s
389
+ when :Integer
390
+ value.to_i
391
+ when :Float
392
+ value.to_f
393
+ when :BOOLEAN
394
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
395
+ true
396
+ else
397
+ false
398
+ end
399
+ when :Object
400
+ # generic object (usually a Hash), return directly
401
+ value
402
+ when /\AArray<(?<inner_type>.+)>\z/
403
+ inner_type = Regexp.last_match[:inner_type]
404
+ value.map { |v| _deserialize(inner_type, v) }
405
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
406
+ k_type = Regexp.last_match[:k_type]
407
+ v_type = Regexp.last_match[:v_type]
408
+ {}.tap do |hash|
409
+ value.each do |k, v|
410
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
411
+ end
412
+ end
413
+ else # model
414
+ temp_model = StorecoveApi.const_get(type).new
415
+ temp_model.build_from_hash(value)
416
+ end
417
+ end
418
+
419
+ # Returns the string representation of the object
420
+ # @return [String] String presentation of the object
421
+ def to_s
422
+ to_hash.to_s
423
+ end
424
+
425
+ # to_body is an alias to to_hash (backward compatibility)
426
+ # @return [Hash] Returns the object in the form of hash
427
+ def to_body
428
+ to_hash
429
+ end
430
+
431
+ # Returns the object in the form of hash
432
+ # @return [Hash] Returns the object in the form of hash
433
+ def to_hash
434
+ hash = {}
435
+ self.class.attribute_map.each_pair do |attr, param|
436
+ value = self.send(attr)
437
+ next if value.nil?
438
+ hash[param] = _to_hash(value)
439
+ end
440
+ hash
441
+ end
442
+
443
+ # Outputs non-array value in the form of hash
444
+ # For object, use to_hash. Otherwise, just return the value
445
+ # @param [Object] value Any valid value
446
+ # @return [Hash] Returns the value in the form of hash
447
+ def _to_hash(value)
448
+ if value.is_a?(Array)
449
+ value.compact.map{ |v| _to_hash(v) }
450
+ elsif value.is_a?(Hash)
451
+ {}.tap do |hash|
452
+ value.each { |k, v| hash[k] = _to_hash(v) }
453
+ end
454
+ elsif value.respond_to? :to_hash
455
+ value.to_hash
456
+ else
457
+ value
458
+ end
459
+ end
460
+
461
+ end
462
+
463
+ end