xero-ruby 0.1.1

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 (349) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +9 -0
  3. data/Gemfile.lock +79 -0
  4. data/README.md +454 -0
  5. data/Rakefile +10 -0
  6. data/docs/Account.md +53 -0
  7. data/docs/AccountType.md +16 -0
  8. data/docs/AccountingApi.md +11269 -0
  9. data/docs/Accounts.md +17 -0
  10. data/docs/AccountsPayable.md +19 -0
  11. data/docs/AccountsReceivable.md +19 -0
  12. data/docs/Address.md +35 -0
  13. data/docs/Allocation.md +21 -0
  14. data/docs/Allocations.md +17 -0
  15. data/docs/Attachment.md +27 -0
  16. data/docs/Attachments.md +17 -0
  17. data/docs/Balances.md +19 -0
  18. data/docs/BankTransaction.md +59 -0
  19. data/docs/BankTransactions.md +17 -0
  20. data/docs/BankTransfer.md +37 -0
  21. data/docs/BankTransfers.md +17 -0
  22. data/docs/BatchPayment.md +47 -0
  23. data/docs/BatchPaymentDetails.md +25 -0
  24. data/docs/BatchPayments.md +17 -0
  25. data/docs/Bill.md +19 -0
  26. data/docs/BrandingTheme.md +23 -0
  27. data/docs/BrandingThemes.md +17 -0
  28. data/docs/CISOrgSetting.md +21 -0
  29. data/docs/CISSetting.md +19 -0
  30. data/docs/CISSettings.md +17 -0
  31. data/docs/Contact.md +91 -0
  32. data/docs/ContactGroup.md +23 -0
  33. data/docs/ContactGroups.md +17 -0
  34. data/docs/ContactPerson.md +23 -0
  35. data/docs/Contacts.md +17 -0
  36. data/docs/CountryCode.md +16 -0
  37. data/docs/CreditNote.md +61 -0
  38. data/docs/CreditNotes.md +17 -0
  39. data/docs/Currencies.md +17 -0
  40. data/docs/Currency.md +19 -0
  41. data/docs/CurrencyCode.md +16 -0
  42. data/docs/Element.md +17 -0
  43. data/docs/Employee.md +27 -0
  44. data/docs/Employees.md +17 -0
  45. data/docs/Error.md +23 -0
  46. data/docs/ExpenseClaim.md +39 -0
  47. data/docs/ExpenseClaims.md +17 -0
  48. data/docs/ExternalLink.md +21 -0
  49. data/docs/HistoryRecord.md +23 -0
  50. data/docs/HistoryRecords.md +17 -0
  51. data/docs/Invoice.md +89 -0
  52. data/docs/InvoiceReminder.md +17 -0
  53. data/docs/InvoiceReminders.md +17 -0
  54. data/docs/Invoices.md +17 -0
  55. data/docs/Item.md +45 -0
  56. data/docs/Items.md +17 -0
  57. data/docs/Journal.md +31 -0
  58. data/docs/JournalLine.md +39 -0
  59. data/docs/Journals.md +17 -0
  60. data/docs/LineAmountTypes.md +16 -0
  61. data/docs/LineItem.md +41 -0
  62. data/docs/LineItemTracking.md +21 -0
  63. data/docs/LinkedTransaction.md +37 -0
  64. data/docs/LinkedTransactions.md +17 -0
  65. data/docs/ManualJournal.md +41 -0
  66. data/docs/ManualJournalLine.md +29 -0
  67. data/docs/ManualJournals.md +17 -0
  68. data/docs/OnlineInvoice.md +17 -0
  69. data/docs/OnlineInvoices.md +17 -0
  70. data/docs/Organisation.md +79 -0
  71. data/docs/Organisations.md +17 -0
  72. data/docs/Overpayment.md +51 -0
  73. data/docs/Overpayments.md +17 -0
  74. data/docs/Payment.md +61 -0
  75. data/docs/PaymentService.md +27 -0
  76. data/docs/PaymentServices.md +17 -0
  77. data/docs/PaymentTerm.md +19 -0
  78. data/docs/PaymentTermType.md +16 -0
  79. data/docs/Payments.md +17 -0
  80. data/docs/Phone.md +23 -0
  81. data/docs/Prepayment.md +49 -0
  82. data/docs/Prepayments.md +17 -0
  83. data/docs/Purchase.md +23 -0
  84. data/docs/PurchaseOrder.md +71 -0
  85. data/docs/PurchaseOrders.md +17 -0
  86. data/docs/Receipt.md +49 -0
  87. data/docs/Receipts.md +17 -0
  88. data/docs/RepeatingInvoice.md +47 -0
  89. data/docs/RepeatingInvoices.md +17 -0
  90. data/docs/Report.md +29 -0
  91. data/docs/ReportAttribute.md +19 -0
  92. data/docs/ReportCell.md +19 -0
  93. data/docs/ReportFields.md +21 -0
  94. data/docs/ReportRow.md +21 -0
  95. data/docs/ReportRows.md +23 -0
  96. data/docs/ReportWithRow.md +33 -0
  97. data/docs/ReportWithRows.md +17 -0
  98. data/docs/Reports.md +17 -0
  99. data/docs/RequestEmpty.md +17 -0
  100. data/docs/RowType.md +16 -0
  101. data/docs/SalesTrackingCategory.md +19 -0
  102. data/docs/Schedule.md +29 -0
  103. data/docs/TaxComponent.md +23 -0
  104. data/docs/TaxRate.md +39 -0
  105. data/docs/TaxRates.md +17 -0
  106. data/docs/TaxType.md +16 -0
  107. data/docs/TenNinteyNineContact.md +59 -0
  108. data/docs/TimeZone.md +16 -0
  109. data/docs/TrackingCategories.md +17 -0
  110. data/docs/TrackingCategory.md +27 -0
  111. data/docs/TrackingOption.md +23 -0
  112. data/docs/TrackingOptions.md +17 -0
  113. data/docs/User.md +29 -0
  114. data/docs/Users.md +17 -0
  115. data/docs/ValidationError.md +17 -0
  116. data/git_push.sh +55 -0
  117. data/lib/.DS_Store +0 -0
  118. data/lib/xero-ruby.rb +149 -0
  119. data/lib/xero-ruby/api/accounting_api.rb +14686 -0
  120. data/lib/xero-ruby/api_client.rb +386 -0
  121. data/lib/xero-ruby/api_error.rb +57 -0
  122. data/lib/xero-ruby/configuration.rb +252 -0
  123. data/lib/xero-ruby/models/account.rb +484 -0
  124. data/lib/xero-ruby/models/account_type.rb +57 -0
  125. data/lib/xero-ruby/models/accounts.rb +205 -0
  126. data/lib/xero-ruby/models/accounts_payable.rb +212 -0
  127. data/lib/xero-ruby/models/accounts_receivable.rb +212 -0
  128. data/lib/xero-ruby/models/address.rb +463 -0
  129. data/lib/xero-ruby/models/allocation.rb +238 -0
  130. data/lib/xero-ruby/models/allocations.rb +205 -0
  131. data/lib/xero-ruby/models/attachment.rb +254 -0
  132. data/lib/xero-ruby/models/attachments.rb +205 -0
  133. data/lib/xero-ruby/models/balances.rb +213 -0
  134. data/lib/xero-ruby/models/bank_transaction.rb +480 -0
  135. data/lib/xero-ruby/models/bank_transactions.rb +205 -0
  136. data/lib/xero-ruby/models/bank_transfer.rb +319 -0
  137. data/lib/xero-ruby/models/bank_transfers.rb +205 -0
  138. data/lib/xero-ruby/models/batch_payment.rb +429 -0
  139. data/lib/xero-ruby/models/batch_payment_details.rb +290 -0
  140. data/lib/xero-ruby/models/batch_payments.rb +205 -0
  141. data/lib/xero-ruby/models/bill.rb +213 -0
  142. data/lib/xero-ruby/models/branding_theme.rb +234 -0
  143. data/lib/xero-ruby/models/branding_themes.rb +205 -0
  144. data/lib/xero-ruby/models/cis_org_setting.rb +224 -0
  145. data/lib/xero-ruby/models/cis_setting.rb +214 -0
  146. data/lib/xero-ruby/models/cis_settings.rb +205 -0
  147. data/lib/xero-ruby/models/contact.rb +724 -0
  148. data/lib/xero-ruby/models/contact_group.rb +270 -0
  149. data/lib/xero-ruby/models/contact_groups.rb +205 -0
  150. data/lib/xero-ruby/models/contact_person.rb +234 -0
  151. data/lib/xero-ruby/models/contacts.rb +205 -0
  152. data/lib/xero-ruby/models/country_code.rb +275 -0
  153. data/lib/xero-ruby/models/credit_note.rb +475 -0
  154. data/lib/xero-ruby/models/credit_notes.rb +205 -0
  155. data/lib/xero-ruby/models/currencies.rb +205 -0
  156. data/lib/xero-ruby/models/currency.rb +213 -0
  157. data/lib/xero-ruby/models/currency_code.rb +197 -0
  158. data/lib/xero-ruby/models/element.rb +206 -0
  159. data/lib/xero-ruby/models/employee.rb +316 -0
  160. data/lib/xero-ruby/models/employees.rb +205 -0
  161. data/lib/xero-ruby/models/error.rb +236 -0
  162. data/lib/xero-ruby/models/expense_claim.rb +350 -0
  163. data/lib/xero-ruby/models/expense_claims.rb +205 -0
  164. data/lib/xero-ruby/models/external_link.rb +257 -0
  165. data/lib/xero-ruby/models/history_record.rb +234 -0
  166. data/lib/xero-ruby/models/history_records.rb +205 -0
  167. data/lib/xero-ruby/models/invoice.rb +666 -0
  168. data/lib/xero-ruby/models/invoice_reminder.rb +204 -0
  169. data/lib/xero-ruby/models/invoice_reminders.rb +205 -0
  170. data/lib/xero-ruby/models/invoices.rb +205 -0
  171. data/lib/xero-ruby/models/item.rb +418 -0
  172. data/lib/xero-ruby/models/items.rb +205 -0
  173. data/lib/xero-ruby/models/journal.rb +310 -0
  174. data/lib/xero-ruby/models/journal_line.rb +315 -0
  175. data/lib/xero-ruby/models/journals.rb +205 -0
  176. data/lib/xero-ruby/models/line_amount_types.rb +38 -0
  177. data/lib/xero-ruby/models/line_item.rb +326 -0
  178. data/lib/xero-ruby/models/line_item_tracking.rb +239 -0
  179. data/lib/xero-ruby/models/linked_transaction.rb +369 -0
  180. data/lib/xero-ruby/models/linked_transactions.rb +205 -0
  181. data/lib/xero-ruby/models/manual_journal.rb +375 -0
  182. data/lib/xero-ruby/models/manual_journal_line.rb +266 -0
  183. data/lib/xero-ruby/models/manual_journals.rb +205 -0
  184. data/lib/xero-ruby/models/online_invoice.rb +204 -0
  185. data/lib/xero-ruby/models/online_invoices.rb +205 -0
  186. data/lib/xero-ruby/models/organisation.rb +622 -0
  187. data/lib/xero-ruby/models/organisations.rb +205 -0
  188. data/lib/xero-ruby/models/overpayment.rb +425 -0
  189. data/lib/xero-ruby/models/overpayments.rb +205 -0
  190. data/lib/xero-ruby/models/payment.rb +467 -0
  191. data/lib/xero-ruby/models/payment_service.rb +256 -0
  192. data/lib/xero-ruby/models/payment_services.rb +205 -0
  193. data/lib/xero-ruby/models/payment_term.rb +212 -0
  194. data/lib/xero-ruby/models/payment_term_type.rb +39 -0
  195. data/lib/xero-ruby/models/payments.rb +205 -0
  196. data/lib/xero-ruby/models/phone.rb +312 -0
  197. data/lib/xero-ruby/models/prepayment.rb +413 -0
  198. data/lib/xero-ruby/models/prepayments.rb +205 -0
  199. data/lib/xero-ruby/models/purchase.rb +234 -0
  200. data/lib/xero-ruby/models/purchase_order.rb +523 -0
  201. data/lib/xero-ruby/models/purchase_orders.rb +205 -0
  202. data/lib/xero-ruby/models/receipt.rb +420 -0
  203. data/lib/xero-ruby/models/receipts.rb +205 -0
  204. data/lib/xero-ruby/models/repeating_invoice.rb +400 -0
  205. data/lib/xero-ruby/models/repeating_invoices.rb +205 -0
  206. data/lib/xero-ruby/models/report.rb +299 -0
  207. data/lib/xero-ruby/models/report_attribute.rb +212 -0
  208. data/lib/xero-ruby/models/report_cell.rb +214 -0
  209. data/lib/xero-ruby/models/report_fields.rb +221 -0
  210. data/lib/xero-ruby/models/report_row.rb +223 -0
  211. data/lib/xero-ruby/models/report_rows.rb +234 -0
  212. data/lib/xero-ruby/models/report_with_row.rb +288 -0
  213. data/lib/xero-ruby/models/report_with_rows.rb +205 -0
  214. data/lib/xero-ruby/models/reports.rb +205 -0
  215. data/lib/xero-ruby/models/request_empty.rb +204 -0
  216. data/lib/xero-ruby/models/row_type.rb +39 -0
  217. data/lib/xero-ruby/models/sales_tracking_category.rb +214 -0
  218. data/lib/xero-ruby/models/schedule.rb +310 -0
  219. data/lib/xero-ruby/models/tax_component.rb +234 -0
  220. data/lib/xero-ruby/models/tax_rate.rb +367 -0
  221. data/lib/xero-ruby/models/tax_rates.rb +205 -0
  222. data/lib/xero-ruby/models/tax_type.rb +87 -0
  223. data/lib/xero-ruby/models/ten_nintey_nine_contact.rb +414 -0
  224. data/lib/xero-ruby/models/time_zone.rb +142 -0
  225. data/lib/xero-ruby/models/tracking_categories.rb +205 -0
  226. data/lib/xero-ruby/models/tracking_category.rb +320 -0
  227. data/lib/xero-ruby/models/tracking_option.rb +283 -0
  228. data/lib/xero-ruby/models/tracking_options.rb +205 -0
  229. data/lib/xero-ruby/models/user.rb +298 -0
  230. data/lib/xero-ruby/models/users.rb +205 -0
  231. data/lib/xero-ruby/models/validation_error.rb +204 -0
  232. data/lib/xero-ruby/version.rb +15 -0
  233. data/pkg/xero-ruby-0.1.0.gem +0 -0
  234. data/pkg/xero-ruby-1.0.0.gem +0 -0
  235. data/spec/api/accounting_api_spec.rb +2322 -0
  236. data/spec/api_client_spec.rb +226 -0
  237. data/spec/configuration_spec.rb +42 -0
  238. data/spec/models/account_spec.rb +165 -0
  239. data/spec/models/account_type_spec.rb +35 -0
  240. data/spec/models/accounts_payable_spec.rb +47 -0
  241. data/spec/models/accounts_receivable_spec.rb +47 -0
  242. data/spec/models/accounts_spec.rb +41 -0
  243. data/spec/models/address_spec.rb +99 -0
  244. data/spec/models/allocation_spec.rb +53 -0
  245. data/spec/models/allocations_spec.rb +41 -0
  246. data/spec/models/attachment_spec.rb +71 -0
  247. data/spec/models/attachments_spec.rb +41 -0
  248. data/spec/models/balances_spec.rb +47 -0
  249. data/spec/models/bank_transaction_spec.rb +175 -0
  250. data/spec/models/bank_transactions_spec.rb +41 -0
  251. data/spec/models/bank_transfer_spec.rb +101 -0
  252. data/spec/models/bank_transfers_spec.rb +41 -0
  253. data/spec/models/batch_payment_details_spec.rb +65 -0
  254. data/spec/models/batch_payment_spec.rb +131 -0
  255. data/spec/models/batch_payments_spec.rb +41 -0
  256. data/spec/models/bill_spec.rb +47 -0
  257. data/spec/models/branding_theme_spec.rb +59 -0
  258. data/spec/models/branding_themes_spec.rb +41 -0
  259. data/spec/models/cis_org_setting_spec.rb +53 -0
  260. data/spec/models/cis_setting_spec.rb +47 -0
  261. data/spec/models/cis_settings_spec.rb +41 -0
  262. data/spec/models/contact_group_spec.rb +63 -0
  263. data/spec/models/contact_groups_spec.rb +41 -0
  264. data/spec/models/contact_person_spec.rb +59 -0
  265. data/spec/models/contact_spec.rb +267 -0
  266. data/spec/models/contacts_spec.rb +41 -0
  267. data/spec/models/country_code_spec.rb +35 -0
  268. data/spec/models/credit_note_spec.rb +181 -0
  269. data/spec/models/credit_notes_spec.rb +41 -0
  270. data/spec/models/currencies_spec.rb +41 -0
  271. data/spec/models/currency_code_spec.rb +35 -0
  272. data/spec/models/currency_spec.rb +47 -0
  273. data/spec/models/element_spec.rb +41 -0
  274. data/spec/models/employee_spec.rb +75 -0
  275. data/spec/models/employees_spec.rb +41 -0
  276. data/spec/models/error_spec.rb +59 -0
  277. data/spec/models/expense_claim_spec.rb +111 -0
  278. data/spec/models/expense_claims_spec.rb +41 -0
  279. data/spec/models/external_link_spec.rb +57 -0
  280. data/spec/models/history_record_spec.rb +59 -0
  281. data/spec/models/history_records_spec.rb +41 -0
  282. data/spec/models/invoice_reminder_spec.rb +41 -0
  283. data/spec/models/invoice_reminders_spec.rb +41 -0
  284. data/spec/models/invoice_spec.rb +259 -0
  285. data/spec/models/invoices_spec.rb +41 -0
  286. data/spec/models/item_spec.rb +125 -0
  287. data/spec/models/items_spec.rb +41 -0
  288. data/spec/models/journal_line_spec.rb +107 -0
  289. data/spec/models/journal_spec.rb +87 -0
  290. data/spec/models/journals_spec.rb +41 -0
  291. data/spec/models/line_amount_types_spec.rb +35 -0
  292. data/spec/models/line_item_spec.rb +107 -0
  293. data/spec/models/line_item_tracking_spec.rb +53 -0
  294. data/spec/models/linked_transaction_spec.rb +113 -0
  295. data/spec/models/linked_transactions_spec.rb +41 -0
  296. data/spec/models/manual_journal_line_spec.rb +77 -0
  297. data/spec/models/manual_journal_spec.rb +117 -0
  298. data/spec/models/manual_journals_spec.rb +41 -0
  299. data/spec/models/online_invoice_spec.rb +41 -0
  300. data/spec/models/online_invoices_spec.rb +41 -0
  301. data/spec/models/organisation_spec.rb +255 -0
  302. data/spec/models/organisations_spec.rb +41 -0
  303. data/spec/models/overpayment_spec.rb +151 -0
  304. data/spec/models/overpayments_spec.rb +41 -0
  305. data/spec/models/payment_service_spec.rb +71 -0
  306. data/spec/models/payment_services_spec.rb +41 -0
  307. data/spec/models/payment_spec.rb +181 -0
  308. data/spec/models/payment_term_spec.rb +47 -0
  309. data/spec/models/payment_term_type_spec.rb +35 -0
  310. data/spec/models/payments_spec.rb +41 -0
  311. data/spec/models/phone_spec.rb +63 -0
  312. data/spec/models/prepayment_spec.rb +145 -0
  313. data/spec/models/prepayments_spec.rb +41 -0
  314. data/spec/models/purchase_order_spec.rb +207 -0
  315. data/spec/models/purchase_orders_spec.rb +41 -0
  316. data/spec/models/purchase_spec.rb +59 -0
  317. data/spec/models/receipt_spec.rb +141 -0
  318. data/spec/models/receipts_spec.rb +41 -0
  319. data/spec/models/repeating_invoice_spec.rb +139 -0
  320. data/spec/models/repeating_invoices_spec.rb +41 -0
  321. data/spec/models/report_attribute_spec.rb +47 -0
  322. data/spec/models/report_cell_spec.rb +47 -0
  323. data/spec/models/report_fields_spec.rb +53 -0
  324. data/spec/models/report_row_spec.rb +53 -0
  325. data/spec/models/report_rows_spec.rb +59 -0
  326. data/spec/models/report_spec.rb +81 -0
  327. data/spec/models/report_with_row_spec.rb +89 -0
  328. data/spec/models/report_with_rows_spec.rb +41 -0
  329. data/spec/models/reports_spec.rb +41 -0
  330. data/spec/models/request_empty_spec.rb +41 -0
  331. data/spec/models/row_type_spec.rb +35 -0
  332. data/spec/models/sales_tracking_category_spec.rb +47 -0
  333. data/spec/models/schedule_spec.rb +85 -0
  334. data/spec/models/tax_component_spec.rb +59 -0
  335. data/spec/models/tax_rate_spec.rb +115 -0
  336. data/spec/models/tax_rates_spec.rb +41 -0
  337. data/spec/models/tax_type_spec.rb +35 -0
  338. data/spec/models/ten_nintey_nine_contact_spec.rb +167 -0
  339. data/spec/models/time_zone_spec.rb +35 -0
  340. data/spec/models/tracking_categories_spec.rb +41 -0
  341. data/spec/models/tracking_category_spec.rb +75 -0
  342. data/spec/models/tracking_option_spec.rb +63 -0
  343. data/spec/models/tracking_options_spec.rb +41 -0
  344. data/spec/models/user_spec.rb +81 -0
  345. data/spec/models/users_spec.rb +41 -0
  346. data/spec/models/validation_error_spec.rb +41 -0
  347. data/spec/spec_helper.rb +111 -0
  348. data/xero-ruby.gemspec +39 -0
  349. metadata +563 -0
@@ -0,0 +1,312 @@
1
+ =begin
2
+ #Accounting API
3
+
4
+ #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5
+
6
+ The version of the OpenAPI document: 2.0.0
7
+ Contact: api@xero.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.0.3
10
+
11
+ =end
12
+
13
+ require 'time'
14
+ require 'date'
15
+
16
+ module XeroRuby
17
+ class Phone
18
+ attr_accessor :phone_type
19
+
20
+ # max length = 50
21
+ attr_accessor :phone_number
22
+
23
+ # max length = 10
24
+ attr_accessor :phone_area_code
25
+
26
+ # max length = 20
27
+ attr_accessor :phone_country_code
28
+
29
+ class EnumAttributeValidator
30
+ attr_reader :datatype
31
+ attr_reader :allowable_values
32
+
33
+ def initialize(datatype, allowable_values)
34
+ @allowable_values = allowable_values.map do |value|
35
+ case datatype.to_s
36
+ when /Integer/i
37
+ value.to_i
38
+ when /Float/i
39
+ value.to_f
40
+ else
41
+ value
42
+ end
43
+ end
44
+ end
45
+
46
+ def valid?(value)
47
+ !value || allowable_values.include?(value)
48
+ end
49
+ end
50
+
51
+ # Attribute mapping from ruby-style variable name to JSON key.
52
+ def self.attribute_map
53
+ {
54
+ :'phone_type' => :'PhoneType',
55
+ :'phone_number' => :'PhoneNumber',
56
+ :'phone_area_code' => :'PhoneAreaCode',
57
+ :'phone_country_code' => :'PhoneCountryCode'
58
+ }
59
+ end
60
+
61
+ # Attribute type mapping.
62
+ def self.openapi_types
63
+ {
64
+ :'phone_type' => :'String',
65
+ :'phone_number' => :'String',
66
+ :'phone_area_code' => :'String',
67
+ :'phone_country_code' => :'String'
68
+ }
69
+ end
70
+
71
+ # Initializes the object
72
+ # @param [Hash] attributes Model attributes in the form of hash
73
+ def initialize(attributes = {})
74
+ if (!attributes.is_a?(Hash))
75
+ fail ArgumentError, "The input argument (attributes) must be a hash in `XeroRuby::Phone` initialize method"
76
+ end
77
+
78
+ # check to see if the attribute exists and convert string to symbol for hash key
79
+ attributes = attributes.each_with_object({}) { |(k, v), h|
80
+ if (!self.class.attribute_map.key?(k.to_sym))
81
+ fail ArgumentError, "`#{k}` is not a valid attribute in `XeroRuby::Phone`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
82
+ end
83
+ h[k.to_sym] = v
84
+ }
85
+
86
+ if attributes.key?(:'phone_type')
87
+ self.phone_type = attributes[:'phone_type']
88
+ end
89
+
90
+ if attributes.key?(:'phone_number')
91
+ self.phone_number = attributes[:'phone_number']
92
+ end
93
+
94
+ if attributes.key?(:'phone_area_code')
95
+ self.phone_area_code = attributes[:'phone_area_code']
96
+ end
97
+
98
+ if attributes.key?(:'phone_country_code')
99
+ self.phone_country_code = attributes[:'phone_country_code']
100
+ end
101
+ end
102
+
103
+ # Show invalid properties with the reasons. Usually used together with valid?
104
+ # @return Array for valid properties with the reasons
105
+ def list_invalid_properties
106
+ invalid_properties = Array.new
107
+ if !@phone_number.nil? && @phone_number.to_s.length > 50
108
+ invalid_properties.push('invalid value for "phone_number", the character length must be smaller than or equal to 50.')
109
+ end
110
+
111
+ if !@phone_area_code.nil? && @phone_area_code.to_s.length > 10
112
+ invalid_properties.push('invalid value for "phone_area_code", the character length must be smaller than or equal to 10.')
113
+ end
114
+
115
+ if !@phone_country_code.nil? && @phone_country_code.to_s.length > 20
116
+ invalid_properties.push('invalid value for "phone_country_code", the character length must be smaller than or equal to 20.')
117
+ end
118
+
119
+ invalid_properties
120
+ end
121
+
122
+ # Check to see if the all the properties in the model are valid
123
+ # @return true if the model is valid
124
+ def valid?
125
+ phone_type_validator = EnumAttributeValidator.new('String', ["DEFAULT", "DDI", "MOBILE", "FAX", "OFFICE"])
126
+ return false unless phone_type_validator.valid?(@phone_type)
127
+ return false if !@phone_number.nil? && @phone_number.to_s.length > 50
128
+ return false if !@phone_area_code.nil? && @phone_area_code.to_s.length > 10
129
+ return false if !@phone_country_code.nil? && @phone_country_code.to_s.length > 20
130
+ true
131
+ end
132
+
133
+ # Custom attribute writer method checking allowed values (enum).
134
+ # @param [Object] phone_type Object to be assigned
135
+ def phone_type=(phone_type)
136
+ validator = EnumAttributeValidator.new('String', ["DEFAULT", "DDI", "MOBILE", "FAX", "OFFICE"])
137
+ unless validator.valid?(phone_type)
138
+ fail ArgumentError, "invalid value for \"phone_type\", must be one of #{validator.allowable_values}."
139
+ end
140
+ @phone_type = phone_type
141
+ end
142
+
143
+ # Custom attribute writer method with validation
144
+ # @param [Object] phone_number Value to be assigned
145
+ def phone_number=(phone_number)
146
+ if !phone_number.nil? && phone_number.to_s.length > 50
147
+ fail ArgumentError, 'invalid value for "phone_number", the character length must be smaller than or equal to 50.'
148
+ end
149
+
150
+ @phone_number = phone_number
151
+ end
152
+
153
+ # Custom attribute writer method with validation
154
+ # @param [Object] phone_area_code Value to be assigned
155
+ def phone_area_code=(phone_area_code)
156
+ if !phone_area_code.nil? && phone_area_code.to_s.length > 10
157
+ fail ArgumentError, 'invalid value for "phone_area_code", the character length must be smaller than or equal to 10.'
158
+ end
159
+
160
+ @phone_area_code = phone_area_code
161
+ end
162
+
163
+ # Custom attribute writer method with validation
164
+ # @param [Object] phone_country_code Value to be assigned
165
+ def phone_country_code=(phone_country_code)
166
+ if !phone_country_code.nil? && phone_country_code.to_s.length > 20
167
+ fail ArgumentError, 'invalid value for "phone_country_code", the character length must be smaller than or equal to 20.'
168
+ end
169
+
170
+ @phone_country_code = phone_country_code
171
+ end
172
+
173
+ # Checks equality by comparing each attribute.
174
+ # @param [Object] Object to be compared
175
+ def ==(o)
176
+ return true if self.equal?(o)
177
+ self.class == o.class &&
178
+ phone_type == o.phone_type &&
179
+ phone_number == o.phone_number &&
180
+ phone_area_code == o.phone_area_code &&
181
+ phone_country_code == o.phone_country_code
182
+ end
183
+
184
+ # @see the `==` method
185
+ # @param [Object] Object to be compared
186
+ def eql?(o)
187
+ self == o
188
+ end
189
+
190
+ # Calculates hash code according to all attributes.
191
+ # @return [Integer] Hash code
192
+ def hash
193
+ [phone_type, phone_number, phone_area_code, phone_country_code].hash
194
+ end
195
+
196
+ # Builds the object from hash
197
+ # @param [Hash] attributes Model attributes in the form of hash
198
+ # @return [Object] Returns the model itself
199
+ def self.build_from_hash(attributes)
200
+ new.build_from_hash(attributes)
201
+ end
202
+
203
+ # Builds the object from hash
204
+ # @param [Hash] attributes Model attributes in the form of hash
205
+ # @return [Object] Returns the model itself
206
+ def build_from_hash(attributes)
207
+ return nil unless attributes.is_a?(Hash)
208
+ self.class.openapi_types.each_pair do |key, type|
209
+ if type =~ /\AArray<(.*)>/i
210
+ # check to ensure the input is an array given that the attribute
211
+ # is documented as an array but the input is not
212
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
213
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
214
+ end
215
+ elsif !attributes[self.class.attribute_map[key]].nil?
216
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
217
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
218
+ end
219
+
220
+ self
221
+ end
222
+
223
+ # Deserializes the data based on type
224
+ # @param string type Data type
225
+ # @param string value Value to be deserialized
226
+ # @return [Object] Deserialized data
227
+ def _deserialize(type, value)
228
+ case type.to_sym
229
+ when :DateTime
230
+ DateTime.parse(parse_date(value))
231
+ when :Date
232
+ Date._iso8601(parse_date(value))
233
+ when :String
234
+ value.to_s
235
+ when :Integer
236
+ value.to_i
237
+ when :Float
238
+ value.to_f
239
+ when :Boolean
240
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
241
+ true
242
+ else
243
+ false
244
+ end
245
+ when :Object
246
+ # generic object (usually a Hash), return directly
247
+ value
248
+ when /\AArray<(?<inner_type>.+)>\z/
249
+ inner_type = Regexp.last_match[:inner_type]
250
+ value.map { |v| _deserialize(inner_type, v) }
251
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
252
+ k_type = Regexp.last_match[:k_type]
253
+ v_type = Regexp.last_match[:v_type]
254
+ {}.tap do |hash|
255
+ value.each do |k, v|
256
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
257
+ end
258
+ end
259
+ else # model
260
+ XeroRuby.const_get(type).build_from_hash(value)
261
+ end
262
+ end
263
+
264
+ # Returns the string representation of the object
265
+ # @return [String] String presentation of the object
266
+ def to_s
267
+ to_hash.to_s
268
+ end
269
+
270
+ # to_body is an alias to to_hash (backward compatibility)
271
+ # @return [Hash] Returns the object in the form of hash
272
+ def to_body
273
+ to_hash
274
+ end
275
+
276
+ # Returns the object in the form of hash
277
+ # @return [Hash] Returns the object in the form of hash
278
+ def to_hash
279
+ hash = {}
280
+ self.class.attribute_map.each_pair do |attr, param|
281
+ value = self.send(attr)
282
+ next if value.nil?
283
+ hash[param] = _to_hash(value)
284
+ end
285
+ hash
286
+ end
287
+
288
+ # Outputs non-array value in the form of hash
289
+ # For object, use to_hash. Otherwise, just return the value
290
+ # @param [Object] value Any valid value
291
+ # @return [Hash] Returns the value in the form of hash
292
+ def _to_hash(value)
293
+ if value.is_a?(Array)
294
+ value.compact.map { |v| _to_hash(v) }
295
+ elsif value.is_a?(Hash)
296
+ {}.tap do |hash|
297
+ value.each { |k, v| hash[k] = _to_hash(v) }
298
+ end
299
+ elsif value.respond_to? :to_hash
300
+ value.to_hash
301
+ else
302
+ value
303
+ end
304
+ end
305
+
306
+ # customized data_parser
307
+ def parse_date(datestring)
308
+ seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
309
+ return Time.at(seconds_since_epoch).to_s
310
+ end
311
+ end
312
+ end
@@ -0,0 +1,413 @@
1
+ =begin
2
+ #Accounting API
3
+
4
+ #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5
+
6
+ The version of the OpenAPI document: 2.0.0
7
+ Contact: api@xero.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.0.3
10
+
11
+ =end
12
+
13
+ require 'time'
14
+ require 'date'
15
+
16
+ module XeroRuby
17
+ class Prepayment
18
+ # See Prepayment Types
19
+ attr_accessor :type
20
+
21
+ attr_accessor :contact
22
+
23
+ # The date the prepayment is created YYYY-MM-DD
24
+ attr_accessor :date
25
+
26
+ # See Prepayment Status Codes
27
+ attr_accessor :status
28
+
29
+ attr_accessor :line_amount_types
30
+
31
+ # See Prepayment Line Items
32
+ attr_accessor :line_items
33
+
34
+ # The subtotal of the prepayment excluding taxes
35
+ attr_accessor :sub_total
36
+
37
+ # The total tax on the prepayment
38
+ attr_accessor :total_tax
39
+
40
+ # The total of the prepayment(subtotal + total tax)
41
+ attr_accessor :total
42
+
43
+ # UTC timestamp of last update to the prepayment
44
+ attr_accessor :updated_date_utc
45
+
46
+ attr_accessor :currency_code
47
+
48
+ # Xero generated unique identifier
49
+ attr_accessor :prepayment_id
50
+
51
+ # The currency rate for a multicurrency prepayment. If no rate is specified, the XE.com day rate is used
52
+ attr_accessor :currency_rate
53
+
54
+ # The remaining credit balance on the prepayment
55
+ attr_accessor :remaining_credit
56
+
57
+ # See Allocations
58
+ attr_accessor :allocations
59
+
60
+ # boolean to indicate if a prepayment has an attachment
61
+ attr_accessor :has_attachments
62
+
63
+ # See Attachments
64
+ attr_accessor :attachments
65
+
66
+ class EnumAttributeValidator
67
+ attr_reader :datatype
68
+ attr_reader :allowable_values
69
+
70
+ def initialize(datatype, allowable_values)
71
+ @allowable_values = allowable_values.map do |value|
72
+ case datatype.to_s
73
+ when /Integer/i
74
+ value.to_i
75
+ when /Float/i
76
+ value.to_f
77
+ else
78
+ value
79
+ end
80
+ end
81
+ end
82
+
83
+ def valid?(value)
84
+ !value || allowable_values.include?(value)
85
+ end
86
+ end
87
+
88
+ # Attribute mapping from ruby-style variable name to JSON key.
89
+ def self.attribute_map
90
+ {
91
+ :'type' => :'Type',
92
+ :'contact' => :'Contact',
93
+ :'date' => :'Date',
94
+ :'status' => :'Status',
95
+ :'line_amount_types' => :'LineAmountTypes',
96
+ :'line_items' => :'LineItems',
97
+ :'sub_total' => :'SubTotal',
98
+ :'total_tax' => :'TotalTax',
99
+ :'total' => :'Total',
100
+ :'updated_date_utc' => :'UpdatedDateUTC',
101
+ :'currency_code' => :'CurrencyCode',
102
+ :'prepayment_id' => :'PrepaymentID',
103
+ :'currency_rate' => :'CurrencyRate',
104
+ :'remaining_credit' => :'RemainingCredit',
105
+ :'allocations' => :'Allocations',
106
+ :'has_attachments' => :'HasAttachments',
107
+ :'attachments' => :'Attachments'
108
+ }
109
+ end
110
+
111
+ # Attribute type mapping.
112
+ def self.openapi_types
113
+ {
114
+ :'type' => :'String',
115
+ :'contact' => :'Contact',
116
+ :'date' => :'Date',
117
+ :'status' => :'String',
118
+ :'line_amount_types' => :'LineAmountTypes',
119
+ :'line_items' => :'Array<LineItem>',
120
+ :'sub_total' => :'Float',
121
+ :'total_tax' => :'Float',
122
+ :'total' => :'Float',
123
+ :'updated_date_utc' => :'DateTime',
124
+ :'currency_code' => :'CurrencyCode',
125
+ :'prepayment_id' => :'String',
126
+ :'currency_rate' => :'Float',
127
+ :'remaining_credit' => :'Float',
128
+ :'allocations' => :'Array<Allocation>',
129
+ :'has_attachments' => :'Boolean',
130
+ :'attachments' => :'Array<Attachment>'
131
+ }
132
+ end
133
+
134
+ # Initializes the object
135
+ # @param [Hash] attributes Model attributes in the form of hash
136
+ def initialize(attributes = {})
137
+ if (!attributes.is_a?(Hash))
138
+ fail ArgumentError, "The input argument (attributes) must be a hash in `XeroRuby::Prepayment` initialize method"
139
+ end
140
+
141
+ # check to see if the attribute exists and convert string to symbol for hash key
142
+ attributes = attributes.each_with_object({}) { |(k, v), h|
143
+ if (!self.class.attribute_map.key?(k.to_sym))
144
+ fail ArgumentError, "`#{k}` is not a valid attribute in `XeroRuby::Prepayment`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
145
+ end
146
+ h[k.to_sym] = v
147
+ }
148
+
149
+ if attributes.key?(:'type')
150
+ self.type = attributes[:'type']
151
+ end
152
+
153
+ if attributes.key?(:'contact')
154
+ self.contact = attributes[:'contact']
155
+ end
156
+
157
+ if attributes.key?(:'date')
158
+ self.date = attributes[:'date']
159
+ end
160
+
161
+ if attributes.key?(:'status')
162
+ self.status = attributes[:'status']
163
+ end
164
+
165
+ if attributes.key?(:'line_amount_types')
166
+ self.line_amount_types = attributes[:'line_amount_types']
167
+ end
168
+
169
+ if attributes.key?(:'line_items')
170
+ if (value = attributes[:'line_items']).is_a?(Array)
171
+ self.line_items = value
172
+ end
173
+ end
174
+
175
+ if attributes.key?(:'sub_total')
176
+ self.sub_total = attributes[:'sub_total']
177
+ end
178
+
179
+ if attributes.key?(:'total_tax')
180
+ self.total_tax = attributes[:'total_tax']
181
+ end
182
+
183
+ if attributes.key?(:'total')
184
+ self.total = attributes[:'total']
185
+ end
186
+
187
+ if attributes.key?(:'updated_date_utc')
188
+ self.updated_date_utc = attributes[:'updated_date_utc']
189
+ end
190
+
191
+ if attributes.key?(:'currency_code')
192
+ self.currency_code = attributes[:'currency_code']
193
+ end
194
+
195
+ if attributes.key?(:'prepayment_id')
196
+ self.prepayment_id = attributes[:'prepayment_id']
197
+ end
198
+
199
+ if attributes.key?(:'currency_rate')
200
+ self.currency_rate = attributes[:'currency_rate']
201
+ end
202
+
203
+ if attributes.key?(:'remaining_credit')
204
+ self.remaining_credit = attributes[:'remaining_credit']
205
+ end
206
+
207
+ if attributes.key?(:'allocations')
208
+ if (value = attributes[:'allocations']).is_a?(Array)
209
+ self.allocations = value
210
+ end
211
+ end
212
+
213
+ if attributes.key?(:'has_attachments')
214
+ self.has_attachments = attributes[:'has_attachments']
215
+ end
216
+
217
+ if attributes.key?(:'attachments')
218
+ if (value = attributes[:'attachments']).is_a?(Array)
219
+ self.attachments = value
220
+ end
221
+ end
222
+ end
223
+
224
+ # Show invalid properties with the reasons. Usually used together with valid?
225
+ # @return Array for valid properties with the reasons
226
+ def list_invalid_properties
227
+ invalid_properties = Array.new
228
+ invalid_properties
229
+ end
230
+
231
+ # Check to see if the all the properties in the model are valid
232
+ # @return true if the model is valid
233
+ def valid?
234
+ type_validator = EnumAttributeValidator.new('String', ["RECEIVE-PREPAYMENT", "SPEND-PREPAYMENT", "ARPREPAYMENT", "APPREPAYMENT"])
235
+ return false unless type_validator.valid?(@type)
236
+ status_validator = EnumAttributeValidator.new('String', ["AUTHORISED", "PAID", "VOIDED"])
237
+ return false unless status_validator.valid?(@status)
238
+ true
239
+ end
240
+
241
+ # Custom attribute writer method checking allowed values (enum).
242
+ # @param [Object] type Object to be assigned
243
+ def type=(type)
244
+ validator = EnumAttributeValidator.new('String', ["RECEIVE-PREPAYMENT", "SPEND-PREPAYMENT", "ARPREPAYMENT", "APPREPAYMENT"])
245
+ unless validator.valid?(type)
246
+ fail ArgumentError, "invalid value for \"type\", must be one of #{validator.allowable_values}."
247
+ end
248
+ @type = type
249
+ end
250
+
251
+ # Custom attribute writer method checking allowed values (enum).
252
+ # @param [Object] status Object to be assigned
253
+ def status=(status)
254
+ validator = EnumAttributeValidator.new('String', ["AUTHORISED", "PAID", "VOIDED"])
255
+ unless validator.valid?(status)
256
+ fail ArgumentError, "invalid value for \"status\", must be one of #{validator.allowable_values}."
257
+ end
258
+ @status = status
259
+ end
260
+
261
+ # Checks equality by comparing each attribute.
262
+ # @param [Object] Object to be compared
263
+ def ==(o)
264
+ return true if self.equal?(o)
265
+ self.class == o.class &&
266
+ type == o.type &&
267
+ contact == o.contact &&
268
+ date == o.date &&
269
+ status == o.status &&
270
+ line_amount_types == o.line_amount_types &&
271
+ line_items == o.line_items &&
272
+ sub_total == o.sub_total &&
273
+ total_tax == o.total_tax &&
274
+ total == o.total &&
275
+ updated_date_utc == o.updated_date_utc &&
276
+ currency_code == o.currency_code &&
277
+ prepayment_id == o.prepayment_id &&
278
+ currency_rate == o.currency_rate &&
279
+ remaining_credit == o.remaining_credit &&
280
+ allocations == o.allocations &&
281
+ has_attachments == o.has_attachments &&
282
+ attachments == o.attachments
283
+ end
284
+
285
+ # @see the `==` method
286
+ # @param [Object] Object to be compared
287
+ def eql?(o)
288
+ self == o
289
+ end
290
+
291
+ # Calculates hash code according to all attributes.
292
+ # @return [Integer] Hash code
293
+ def hash
294
+ [type, contact, date, status, line_amount_types, line_items, sub_total, total_tax, total, updated_date_utc, currency_code, prepayment_id, currency_rate, remaining_credit, allocations, has_attachments, attachments].hash
295
+ end
296
+
297
+ # Builds the object from hash
298
+ # @param [Hash] attributes Model attributes in the form of hash
299
+ # @return [Object] Returns the model itself
300
+ def self.build_from_hash(attributes)
301
+ new.build_from_hash(attributes)
302
+ end
303
+
304
+ # Builds the object from hash
305
+ # @param [Hash] attributes Model attributes in the form of hash
306
+ # @return [Object] Returns the model itself
307
+ def build_from_hash(attributes)
308
+ return nil unless attributes.is_a?(Hash)
309
+ self.class.openapi_types.each_pair do |key, type|
310
+ if type =~ /\AArray<(.*)>/i
311
+ # check to ensure the input is an array given that the attribute
312
+ # is documented as an array but the input is not
313
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
314
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
315
+ end
316
+ elsif !attributes[self.class.attribute_map[key]].nil?
317
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
318
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
319
+ end
320
+
321
+ self
322
+ end
323
+
324
+ # Deserializes the data based on type
325
+ # @param string type Data type
326
+ # @param string value Value to be deserialized
327
+ # @return [Object] Deserialized data
328
+ def _deserialize(type, value)
329
+ case type.to_sym
330
+ when :DateTime
331
+ DateTime.parse(parse_date(value))
332
+ when :Date
333
+ Date._iso8601(parse_date(value))
334
+ when :String
335
+ value.to_s
336
+ when :Integer
337
+ value.to_i
338
+ when :Float
339
+ value.to_f
340
+ when :Boolean
341
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
342
+ true
343
+ else
344
+ false
345
+ end
346
+ when :Object
347
+ # generic object (usually a Hash), return directly
348
+ value
349
+ when /\AArray<(?<inner_type>.+)>\z/
350
+ inner_type = Regexp.last_match[:inner_type]
351
+ value.map { |v| _deserialize(inner_type, v) }
352
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
353
+ k_type = Regexp.last_match[:k_type]
354
+ v_type = Regexp.last_match[:v_type]
355
+ {}.tap do |hash|
356
+ value.each do |k, v|
357
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
358
+ end
359
+ end
360
+ else # model
361
+ XeroRuby.const_get(type).build_from_hash(value)
362
+ end
363
+ end
364
+
365
+ # Returns the string representation of the object
366
+ # @return [String] String presentation of the object
367
+ def to_s
368
+ to_hash.to_s
369
+ end
370
+
371
+ # to_body is an alias to to_hash (backward compatibility)
372
+ # @return [Hash] Returns the object in the form of hash
373
+ def to_body
374
+ to_hash
375
+ end
376
+
377
+ # Returns the object in the form of hash
378
+ # @return [Hash] Returns the object in the form of hash
379
+ def to_hash
380
+ hash = {}
381
+ self.class.attribute_map.each_pair do |attr, param|
382
+ value = self.send(attr)
383
+ next if value.nil?
384
+ hash[param] = _to_hash(value)
385
+ end
386
+ hash
387
+ end
388
+
389
+ # Outputs non-array value in the form of hash
390
+ # For object, use to_hash. Otherwise, just return the value
391
+ # @param [Object] value Any valid value
392
+ # @return [Hash] Returns the value in the form of hash
393
+ def _to_hash(value)
394
+ if value.is_a?(Array)
395
+ value.compact.map { |v| _to_hash(v) }
396
+ elsif value.is_a?(Hash)
397
+ {}.tap do |hash|
398
+ value.each { |k, v| hash[k] = _to_hash(v) }
399
+ end
400
+ elsif value.respond_to? :to_hash
401
+ value.to_hash
402
+ else
403
+ value
404
+ end
405
+ end
406
+
407
+ # customized data_parser
408
+ def parse_date(datestring)
409
+ seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
410
+ return Time.at(seconds_since_epoch).to_s
411
+ end
412
+ end
413
+ end