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,475 @@
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 CreditNote
18
+ # See Credit Note Types
19
+ attr_accessor :type
20
+
21
+ attr_accessor :contact
22
+
23
+ # The date the credit note is issued YYYY-MM-DD. If the Date element is not specified then it will default to the current date based on the timezone setting of the organisation
24
+ attr_accessor :date
25
+
26
+ # See Credit Note Status Codes
27
+ attr_accessor :status
28
+
29
+ attr_accessor :line_amount_types
30
+
31
+ # See Invoice Line Items
32
+ attr_accessor :line_items
33
+
34
+ # The subtotal of the credit note excluding taxes
35
+ attr_accessor :sub_total
36
+
37
+ # The total tax on the credit note
38
+ attr_accessor :total_tax
39
+
40
+ # The total of the Credit Note(subtotal + total tax)
41
+ attr_accessor :total
42
+
43
+ # UTC timestamp of last update to the credit note
44
+ attr_accessor :updated_date_utc
45
+
46
+ attr_accessor :currency_code
47
+
48
+ # Date when credit note was fully paid(UTC format)
49
+ attr_accessor :fully_paid_on_date
50
+
51
+ # Xero generated unique identifier
52
+ attr_accessor :credit_note_id
53
+
54
+ # ACCRECCREDIT – Unique alpha numeric code identifying credit note (when missing will auto-generate from your Organisation Invoice Settings)
55
+ attr_accessor :credit_note_number
56
+
57
+ # ACCRECCREDIT only – additional reference number
58
+ attr_accessor :reference
59
+
60
+ # boolean to indicate if a credit note has been sent to a contact via the Xero app (currently read only)
61
+ attr_accessor :sent_to_contact
62
+
63
+ # The currency rate for a multicurrency invoice. If no rate is specified, the XE.com day rate is used
64
+ attr_accessor :currency_rate
65
+
66
+ # The remaining credit balance on the Credit Note
67
+ attr_accessor :remaining_credit
68
+
69
+ # See Allocations
70
+ attr_accessor :allocations
71
+
72
+ # See Payments
73
+ attr_accessor :payments
74
+
75
+ # See BrandingThemes
76
+ attr_accessor :branding_theme_id
77
+
78
+ # boolean to indicate if a credit note has an attachment
79
+ attr_accessor :has_attachments
80
+
81
+ # Displays array of validation error messages from the API
82
+ attr_accessor :validation_errors
83
+
84
+ class EnumAttributeValidator
85
+ attr_reader :datatype
86
+ attr_reader :allowable_values
87
+
88
+ def initialize(datatype, allowable_values)
89
+ @allowable_values = allowable_values.map do |value|
90
+ case datatype.to_s
91
+ when /Integer/i
92
+ value.to_i
93
+ when /Float/i
94
+ value.to_f
95
+ else
96
+ value
97
+ end
98
+ end
99
+ end
100
+
101
+ def valid?(value)
102
+ !value || allowable_values.include?(value)
103
+ end
104
+ end
105
+
106
+ # Attribute mapping from ruby-style variable name to JSON key.
107
+ def self.attribute_map
108
+ {
109
+ :'type' => :'Type',
110
+ :'contact' => :'Contact',
111
+ :'date' => :'Date',
112
+ :'status' => :'Status',
113
+ :'line_amount_types' => :'LineAmountTypes',
114
+ :'line_items' => :'LineItems',
115
+ :'sub_total' => :'SubTotal',
116
+ :'total_tax' => :'TotalTax',
117
+ :'total' => :'Total',
118
+ :'updated_date_utc' => :'UpdatedDateUTC',
119
+ :'currency_code' => :'CurrencyCode',
120
+ :'fully_paid_on_date' => :'FullyPaidOnDate',
121
+ :'credit_note_id' => :'CreditNoteID',
122
+ :'credit_note_number' => :'CreditNoteNumber',
123
+ :'reference' => :'Reference',
124
+ :'sent_to_contact' => :'SentToContact',
125
+ :'currency_rate' => :'CurrencyRate',
126
+ :'remaining_credit' => :'RemainingCredit',
127
+ :'allocations' => :'Allocations',
128
+ :'payments' => :'Payments',
129
+ :'branding_theme_id' => :'BrandingThemeID',
130
+ :'has_attachments' => :'HasAttachments',
131
+ :'validation_errors' => :'ValidationErrors'
132
+ }
133
+ end
134
+
135
+ # Attribute type mapping.
136
+ def self.openapi_types
137
+ {
138
+ :'type' => :'String',
139
+ :'contact' => :'Contact',
140
+ :'date' => :'Date',
141
+ :'status' => :'String',
142
+ :'line_amount_types' => :'LineAmountTypes',
143
+ :'line_items' => :'Array<LineItem>',
144
+ :'sub_total' => :'Float',
145
+ :'total_tax' => :'Float',
146
+ :'total' => :'Float',
147
+ :'updated_date_utc' => :'DateTime',
148
+ :'currency_code' => :'CurrencyCode',
149
+ :'fully_paid_on_date' => :'Date',
150
+ :'credit_note_id' => :'String',
151
+ :'credit_note_number' => :'String',
152
+ :'reference' => :'String',
153
+ :'sent_to_contact' => :'Boolean',
154
+ :'currency_rate' => :'Float',
155
+ :'remaining_credit' => :'Float',
156
+ :'allocations' => :'Array<Allocation>',
157
+ :'payments' => :'Array<Payment>',
158
+ :'branding_theme_id' => :'String',
159
+ :'has_attachments' => :'Boolean',
160
+ :'validation_errors' => :'Array<ValidationError>'
161
+ }
162
+ end
163
+
164
+ # Initializes the object
165
+ # @param [Hash] attributes Model attributes in the form of hash
166
+ def initialize(attributes = {})
167
+ if (!attributes.is_a?(Hash))
168
+ fail ArgumentError, "The input argument (attributes) must be a hash in `XeroRuby::CreditNote` initialize method"
169
+ end
170
+
171
+ # check to see if the attribute exists and convert string to symbol for hash key
172
+ attributes = attributes.each_with_object({}) { |(k, v), h|
173
+ if (!self.class.attribute_map.key?(k.to_sym))
174
+ fail ArgumentError, "`#{k}` is not a valid attribute in `XeroRuby::CreditNote`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
175
+ end
176
+ h[k.to_sym] = v
177
+ }
178
+
179
+ if attributes.key?(:'type')
180
+ self.type = attributes[:'type']
181
+ end
182
+
183
+ if attributes.key?(:'contact')
184
+ self.contact = attributes[:'contact']
185
+ end
186
+
187
+ if attributes.key?(:'date')
188
+ self.date = attributes[:'date']
189
+ end
190
+
191
+ if attributes.key?(:'status')
192
+ self.status = attributes[:'status']
193
+ end
194
+
195
+ if attributes.key?(:'line_amount_types')
196
+ self.line_amount_types = attributes[:'line_amount_types']
197
+ end
198
+
199
+ if attributes.key?(:'line_items')
200
+ if (value = attributes[:'line_items']).is_a?(Array)
201
+ self.line_items = value
202
+ end
203
+ end
204
+
205
+ if attributes.key?(:'sub_total')
206
+ self.sub_total = attributes[:'sub_total']
207
+ end
208
+
209
+ if attributes.key?(:'total_tax')
210
+ self.total_tax = attributes[:'total_tax']
211
+ end
212
+
213
+ if attributes.key?(:'total')
214
+ self.total = attributes[:'total']
215
+ end
216
+
217
+ if attributes.key?(:'updated_date_utc')
218
+ self.updated_date_utc = attributes[:'updated_date_utc']
219
+ end
220
+
221
+ if attributes.key?(:'currency_code')
222
+ self.currency_code = attributes[:'currency_code']
223
+ end
224
+
225
+ if attributes.key?(:'fully_paid_on_date')
226
+ self.fully_paid_on_date = attributes[:'fully_paid_on_date']
227
+ end
228
+
229
+ if attributes.key?(:'credit_note_id')
230
+ self.credit_note_id = attributes[:'credit_note_id']
231
+ end
232
+
233
+ if attributes.key?(:'credit_note_number')
234
+ self.credit_note_number = attributes[:'credit_note_number']
235
+ end
236
+
237
+ if attributes.key?(:'reference')
238
+ self.reference = attributes[:'reference']
239
+ end
240
+
241
+ if attributes.key?(:'sent_to_contact')
242
+ self.sent_to_contact = attributes[:'sent_to_contact']
243
+ end
244
+
245
+ if attributes.key?(:'currency_rate')
246
+ self.currency_rate = attributes[:'currency_rate']
247
+ end
248
+
249
+ if attributes.key?(:'remaining_credit')
250
+ self.remaining_credit = attributes[:'remaining_credit']
251
+ end
252
+
253
+ if attributes.key?(:'allocations')
254
+ if (value = attributes[:'allocations']).is_a?(Array)
255
+ self.allocations = value
256
+ end
257
+ end
258
+
259
+ if attributes.key?(:'payments')
260
+ if (value = attributes[:'payments']).is_a?(Array)
261
+ self.payments = value
262
+ end
263
+ end
264
+
265
+ if attributes.key?(:'branding_theme_id')
266
+ self.branding_theme_id = attributes[:'branding_theme_id']
267
+ end
268
+
269
+ if attributes.key?(:'has_attachments')
270
+ self.has_attachments = attributes[:'has_attachments']
271
+ end
272
+
273
+ if attributes.key?(:'validation_errors')
274
+ if (value = attributes[:'validation_errors']).is_a?(Array)
275
+ self.validation_errors = value
276
+ end
277
+ end
278
+ end
279
+
280
+ # Show invalid properties with the reasons. Usually used together with valid?
281
+ # @return Array for valid properties with the reasons
282
+ def list_invalid_properties
283
+ invalid_properties = Array.new
284
+ invalid_properties
285
+ end
286
+
287
+ # Check to see if the all the properties in the model are valid
288
+ # @return true if the model is valid
289
+ def valid?
290
+ type_validator = EnumAttributeValidator.new('String', ["ACCPAYCREDIT", "ACCRECCREDIT"])
291
+ return false unless type_validator.valid?(@type)
292
+ status_validator = EnumAttributeValidator.new('String', ["DRAFT", "SUBMITTED", "DELETED", "AUTHORISED", "PAID", "VOIDED"])
293
+ return false unless status_validator.valid?(@status)
294
+ true
295
+ end
296
+
297
+ # Custom attribute writer method checking allowed values (enum).
298
+ # @param [Object] type Object to be assigned
299
+ def type=(type)
300
+ validator = EnumAttributeValidator.new('String', ["ACCPAYCREDIT", "ACCRECCREDIT"])
301
+ unless validator.valid?(type)
302
+ fail ArgumentError, "invalid value for \"type\", must be one of #{validator.allowable_values}."
303
+ end
304
+ @type = type
305
+ end
306
+
307
+ # Custom attribute writer method checking allowed values (enum).
308
+ # @param [Object] status Object to be assigned
309
+ def status=(status)
310
+ validator = EnumAttributeValidator.new('String', ["DRAFT", "SUBMITTED", "DELETED", "AUTHORISED", "PAID", "VOIDED"])
311
+ unless validator.valid?(status)
312
+ fail ArgumentError, "invalid value for \"status\", must be one of #{validator.allowable_values}."
313
+ end
314
+ @status = status
315
+ end
316
+
317
+ # Checks equality by comparing each attribute.
318
+ # @param [Object] Object to be compared
319
+ def ==(o)
320
+ return true if self.equal?(o)
321
+ self.class == o.class &&
322
+ type == o.type &&
323
+ contact == o.contact &&
324
+ date == o.date &&
325
+ status == o.status &&
326
+ line_amount_types == o.line_amount_types &&
327
+ line_items == o.line_items &&
328
+ sub_total == o.sub_total &&
329
+ total_tax == o.total_tax &&
330
+ total == o.total &&
331
+ updated_date_utc == o.updated_date_utc &&
332
+ currency_code == o.currency_code &&
333
+ fully_paid_on_date == o.fully_paid_on_date &&
334
+ credit_note_id == o.credit_note_id &&
335
+ credit_note_number == o.credit_note_number &&
336
+ reference == o.reference &&
337
+ sent_to_contact == o.sent_to_contact &&
338
+ currency_rate == o.currency_rate &&
339
+ remaining_credit == o.remaining_credit &&
340
+ allocations == o.allocations &&
341
+ payments == o.payments &&
342
+ branding_theme_id == o.branding_theme_id &&
343
+ has_attachments == o.has_attachments &&
344
+ validation_errors == o.validation_errors
345
+ end
346
+
347
+ # @see the `==` method
348
+ # @param [Object] Object to be compared
349
+ def eql?(o)
350
+ self == o
351
+ end
352
+
353
+ # Calculates hash code according to all attributes.
354
+ # @return [Integer] Hash code
355
+ def hash
356
+ [type, contact, date, status, line_amount_types, line_items, sub_total, total_tax, total, updated_date_utc, currency_code, fully_paid_on_date, credit_note_id, credit_note_number, reference, sent_to_contact, currency_rate, remaining_credit, allocations, payments, branding_theme_id, has_attachments, validation_errors].hash
357
+ end
358
+
359
+ # Builds the object from hash
360
+ # @param [Hash] attributes Model attributes in the form of hash
361
+ # @return [Object] Returns the model itself
362
+ def self.build_from_hash(attributes)
363
+ new.build_from_hash(attributes)
364
+ end
365
+
366
+ # Builds the object from hash
367
+ # @param [Hash] attributes Model attributes in the form of hash
368
+ # @return [Object] Returns the model itself
369
+ def build_from_hash(attributes)
370
+ return nil unless attributes.is_a?(Hash)
371
+ self.class.openapi_types.each_pair do |key, type|
372
+ if type =~ /\AArray<(.*)>/i
373
+ # check to ensure the input is an array given that the attribute
374
+ # is documented as an array but the input is not
375
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
376
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
377
+ end
378
+ elsif !attributes[self.class.attribute_map[key]].nil?
379
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
380
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
381
+ end
382
+
383
+ self
384
+ end
385
+
386
+ # Deserializes the data based on type
387
+ # @param string type Data type
388
+ # @param string value Value to be deserialized
389
+ # @return [Object] Deserialized data
390
+ def _deserialize(type, value)
391
+ case type.to_sym
392
+ when :DateTime
393
+ DateTime.parse(parse_date(value))
394
+ when :Date
395
+ Date._iso8601(parse_date(value))
396
+ when :String
397
+ value.to_s
398
+ when :Integer
399
+ value.to_i
400
+ when :Float
401
+ value.to_f
402
+ when :Boolean
403
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
404
+ true
405
+ else
406
+ false
407
+ end
408
+ when :Object
409
+ # generic object (usually a Hash), return directly
410
+ value
411
+ when /\AArray<(?<inner_type>.+)>\z/
412
+ inner_type = Regexp.last_match[:inner_type]
413
+ value.map { |v| _deserialize(inner_type, v) }
414
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
415
+ k_type = Regexp.last_match[:k_type]
416
+ v_type = Regexp.last_match[:v_type]
417
+ {}.tap do |hash|
418
+ value.each do |k, v|
419
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
420
+ end
421
+ end
422
+ else # model
423
+ XeroRuby.const_get(type).build_from_hash(value)
424
+ end
425
+ end
426
+
427
+ # Returns the string representation of the object
428
+ # @return [String] String presentation of the object
429
+ def to_s
430
+ to_hash.to_s
431
+ end
432
+
433
+ # to_body is an alias to to_hash (backward compatibility)
434
+ # @return [Hash] Returns the object in the form of hash
435
+ def to_body
436
+ to_hash
437
+ end
438
+
439
+ # Returns the object in the form of hash
440
+ # @return [Hash] Returns the object in the form of hash
441
+ def to_hash
442
+ hash = {}
443
+ self.class.attribute_map.each_pair do |attr, param|
444
+ value = self.send(attr)
445
+ next if value.nil?
446
+ hash[param] = _to_hash(value)
447
+ end
448
+ hash
449
+ end
450
+
451
+ # Outputs non-array value in the form of hash
452
+ # For object, use to_hash. Otherwise, just return the value
453
+ # @param [Object] value Any valid value
454
+ # @return [Hash] Returns the value in the form of hash
455
+ def _to_hash(value)
456
+ if value.is_a?(Array)
457
+ value.compact.map { |v| _to_hash(v) }
458
+ elsif value.is_a?(Hash)
459
+ {}.tap do |hash|
460
+ value.each { |k, v| hash[k] = _to_hash(v) }
461
+ end
462
+ elsif value.respond_to? :to_hash
463
+ value.to_hash
464
+ else
465
+ value
466
+ end
467
+ end
468
+
469
+ # customized data_parser
470
+ def parse_date(datestring)
471
+ seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
472
+ return Time.at(seconds_since_epoch).to_s
473
+ end
474
+ end
475
+ end