xero-ruby 2.10.0 → 3.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 (398) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -6
  3. data/lib/xero-ruby.rb +3 -0
  4. data/lib/xero-ruby/api/accounting_api.rb +305 -149
  5. data/lib/xero-ruby/api_client.rb +13 -6
  6. data/lib/xero-ruby/models/accounting/account.rb +11 -7
  7. data/lib/xero-ruby/models/accounting/accounts.rb +11 -7
  8. data/lib/xero-ruby/models/accounting/accounts_payable.rb +11 -7
  9. data/lib/xero-ruby/models/accounting/accounts_receivable.rb +11 -7
  10. data/lib/xero-ruby/models/accounting/action.rb +11 -7
  11. data/lib/xero-ruby/models/accounting/actions.rb +11 -7
  12. data/lib/xero-ruby/models/accounting/address.rb +11 -7
  13. data/lib/xero-ruby/models/accounting/address_for_organisation.rb +11 -7
  14. data/lib/xero-ruby/models/accounting/allocation.rb +11 -7
  15. data/lib/xero-ruby/models/accounting/allocations.rb +11 -7
  16. data/lib/xero-ruby/models/accounting/attachment.rb +11 -7
  17. data/lib/xero-ruby/models/accounting/attachments.rb +11 -7
  18. data/lib/xero-ruby/models/accounting/balance_details.rb +11 -7
  19. data/lib/xero-ruby/models/accounting/balances.rb +11 -7
  20. data/lib/xero-ruby/models/accounting/bank_transaction.rb +11 -7
  21. data/lib/xero-ruby/models/accounting/bank_transactions.rb +11 -7
  22. data/lib/xero-ruby/models/accounting/bank_transfer.rb +11 -7
  23. data/lib/xero-ruby/models/accounting/bank_transfers.rb +11 -7
  24. data/lib/xero-ruby/models/accounting/batch_payment.rb +11 -7
  25. data/lib/xero-ruby/models/accounting/batch_payment_details.rb +11 -7
  26. data/lib/xero-ruby/models/accounting/batch_payments.rb +11 -7
  27. data/lib/xero-ruby/models/accounting/bill.rb +11 -7
  28. data/lib/xero-ruby/models/accounting/branding_theme.rb +11 -7
  29. data/lib/xero-ruby/models/accounting/branding_themes.rb +11 -7
  30. data/lib/xero-ruby/models/accounting/budget.rb +321 -0
  31. data/lib/xero-ruby/models/accounting/budget_lines.rb +265 -0
  32. data/lib/xero-ruby/models/accounting/budgets.rb +222 -0
  33. data/lib/xero-ruby/models/accounting/cis_org_setting.rb +11 -7
  34. data/lib/xero-ruby/models/accounting/cis_org_settings.rb +11 -7
  35. data/lib/xero-ruby/models/accounting/cis_setting.rb +11 -7
  36. data/lib/xero-ruby/models/accounting/cis_settings.rb +11 -7
  37. data/lib/xero-ruby/models/accounting/contact.rb +11 -7
  38. data/lib/xero-ruby/models/accounting/contact_group.rb +11 -7
  39. data/lib/xero-ruby/models/accounting/contact_groups.rb +11 -7
  40. data/lib/xero-ruby/models/accounting/contact_person.rb +11 -7
  41. data/lib/xero-ruby/models/accounting/contacts.rb +11 -7
  42. data/lib/xero-ruby/models/accounting/conversion_balances.rb +11 -7
  43. data/lib/xero-ruby/models/accounting/conversion_date.rb +11 -7
  44. data/lib/xero-ruby/models/accounting/credit_note.rb +11 -7
  45. data/lib/xero-ruby/models/accounting/credit_notes.rb +11 -7
  46. data/lib/xero-ruby/models/accounting/currencies.rb +11 -7
  47. data/lib/xero-ruby/models/accounting/currency.rb +11 -7
  48. data/lib/xero-ruby/models/accounting/element.rb +11 -7
  49. data/lib/xero-ruby/models/accounting/employee.rb +11 -7
  50. data/lib/xero-ruby/models/accounting/employees.rb +11 -7
  51. data/lib/xero-ruby/models/accounting/error.rb +11 -7
  52. data/lib/xero-ruby/models/accounting/expense_claim.rb +11 -7
  53. data/lib/xero-ruby/models/accounting/expense_claims.rb +11 -7
  54. data/lib/xero-ruby/models/accounting/external_link.rb +11 -7
  55. data/lib/xero-ruby/models/accounting/history_record.rb +11 -7
  56. data/lib/xero-ruby/models/accounting/history_records.rb +11 -7
  57. data/lib/xero-ruby/models/accounting/import_summary.rb +11 -7
  58. data/lib/xero-ruby/models/accounting/import_summary_accounts.rb +11 -7
  59. data/lib/xero-ruby/models/accounting/import_summary_object.rb +11 -7
  60. data/lib/xero-ruby/models/accounting/import_summary_organisation.rb +11 -7
  61. data/lib/xero-ruby/models/accounting/invoice.rb +11 -7
  62. data/lib/xero-ruby/models/accounting/invoice_reminder.rb +11 -7
  63. data/lib/xero-ruby/models/accounting/invoice_reminders.rb +11 -7
  64. data/lib/xero-ruby/models/accounting/invoices.rb +11 -7
  65. data/lib/xero-ruby/models/accounting/item.rb +11 -7
  66. data/lib/xero-ruby/models/accounting/items.rb +11 -7
  67. data/lib/xero-ruby/models/accounting/journal.rb +11 -7
  68. data/lib/xero-ruby/models/accounting/journal_line.rb +11 -7
  69. data/lib/xero-ruby/models/accounting/journals.rb +11 -7
  70. data/lib/xero-ruby/models/accounting/line_item.rb +22 -8
  71. data/lib/xero-ruby/models/accounting/line_item_tracking.rb +11 -7
  72. data/lib/xero-ruby/models/accounting/linked_transaction.rb +11 -7
  73. data/lib/xero-ruby/models/accounting/linked_transactions.rb +11 -7
  74. data/lib/xero-ruby/models/accounting/manual_journal.rb +11 -7
  75. data/lib/xero-ruby/models/accounting/manual_journal_line.rb +11 -7
  76. data/lib/xero-ruby/models/accounting/manual_journals.rb +11 -7
  77. data/lib/xero-ruby/models/accounting/online_invoice.rb +11 -7
  78. data/lib/xero-ruby/models/accounting/online_invoices.rb +11 -7
  79. data/lib/xero-ruby/models/accounting/organisation.rb +11 -7
  80. data/lib/xero-ruby/models/accounting/organisations.rb +11 -7
  81. data/lib/xero-ruby/models/accounting/overpayment.rb +11 -7
  82. data/lib/xero-ruby/models/accounting/overpayments.rb +11 -7
  83. data/lib/xero-ruby/models/accounting/payment.rb +11 -7
  84. data/lib/xero-ruby/models/accounting/payment_delete.rb +11 -7
  85. data/lib/xero-ruby/models/accounting/payment_service.rb +11 -7
  86. data/lib/xero-ruby/models/accounting/payment_services.rb +11 -7
  87. data/lib/xero-ruby/models/accounting/payment_term.rb +11 -7
  88. data/lib/xero-ruby/models/accounting/payments.rb +11 -7
  89. data/lib/xero-ruby/models/accounting/phone.rb +11 -7
  90. data/lib/xero-ruby/models/accounting/prepayment.rb +24 -8
  91. data/lib/xero-ruby/models/accounting/prepayments.rb +11 -7
  92. data/lib/xero-ruby/models/accounting/purchase.rb +11 -7
  93. data/lib/xero-ruby/models/accounting/purchase_order.rb +11 -7
  94. data/lib/xero-ruby/models/accounting/purchase_orders.rb +11 -7
  95. data/lib/xero-ruby/models/accounting/quote.rb +11 -7
  96. data/lib/xero-ruby/models/accounting/quotes.rb +11 -7
  97. data/lib/xero-ruby/models/accounting/receipt.rb +11 -7
  98. data/lib/xero-ruby/models/accounting/receipts.rb +11 -7
  99. data/lib/xero-ruby/models/accounting/repeating_invoice.rb +11 -7
  100. data/lib/xero-ruby/models/accounting/repeating_invoices.rb +11 -7
  101. data/lib/xero-ruby/models/accounting/report.rb +12 -18
  102. data/lib/xero-ruby/models/accounting/report_attribute.rb +11 -7
  103. data/lib/xero-ruby/models/accounting/report_cell.rb +11 -7
  104. data/lib/xero-ruby/models/accounting/report_fields.rb +11 -7
  105. data/lib/xero-ruby/models/accounting/report_row.rb +11 -7
  106. data/lib/xero-ruby/models/accounting/report_rows.rb +11 -7
  107. data/lib/xero-ruby/models/accounting/report_with_row.rb +12 -8
  108. data/lib/xero-ruby/models/accounting/report_with_rows.rb +11 -7
  109. data/lib/xero-ruby/models/accounting/reports.rb +11 -7
  110. data/lib/xero-ruby/models/accounting/request_empty.rb +11 -7
  111. data/lib/xero-ruby/models/accounting/sales_tracking_category.rb +11 -7
  112. data/lib/xero-ruby/models/accounting/schedule.rb +11 -7
  113. data/lib/xero-ruby/models/accounting/setup.rb +11 -7
  114. data/lib/xero-ruby/models/accounting/tax_component.rb +11 -7
  115. data/lib/xero-ruby/models/accounting/tax_rate.rb +11 -7
  116. data/lib/xero-ruby/models/accounting/tax_rates.rb +11 -7
  117. data/lib/xero-ruby/models/accounting/ten_ninety_nine_contact.rb +11 -7
  118. data/lib/xero-ruby/models/accounting/tracking_categories.rb +11 -7
  119. data/lib/xero-ruby/models/accounting/tracking_category.rb +11 -7
  120. data/lib/xero-ruby/models/accounting/tracking_option.rb +11 -7
  121. data/lib/xero-ruby/models/accounting/tracking_options.rb +11 -7
  122. data/lib/xero-ruby/models/accounting/user.rb +11 -7
  123. data/lib/xero-ruby/models/accounting/users.rb +11 -7
  124. data/lib/xero-ruby/models/accounting/validation_error.rb +11 -7
  125. data/lib/xero-ruby/models/assets/asset.rb +11 -7
  126. data/lib/xero-ruby/models/assets/asset_type.rb +11 -7
  127. data/lib/xero-ruby/models/assets/assets.rb +11 -7
  128. data/lib/xero-ruby/models/assets/book_depreciation_detail.rb +11 -7
  129. data/lib/xero-ruby/models/assets/book_depreciation_setting.rb +11 -7
  130. data/lib/xero-ruby/models/assets/error.rb +11 -7
  131. data/lib/xero-ruby/models/assets/field_validation_errors_element.rb +11 -7
  132. data/lib/xero-ruby/models/assets/pagination.rb +11 -7
  133. data/lib/xero-ruby/models/assets/resource_validation_errors_element.rb +11 -7
  134. data/lib/xero-ruby/models/assets/setting.rb +11 -7
  135. data/lib/xero-ruby/models/files/association.rb +11 -7
  136. data/lib/xero-ruby/models/files/file_object.rb +11 -7
  137. data/lib/xero-ruby/models/files/files.rb +11 -7
  138. data/lib/xero-ruby/models/files/folder.rb +11 -7
  139. data/lib/xero-ruby/models/files/folders.rb +11 -7
  140. data/lib/xero-ruby/models/files/upload_object.rb +11 -7
  141. data/lib/xero-ruby/models/files/user.rb +11 -7
  142. data/lib/xero-ruby/models/payroll_au/account.rb +11 -7
  143. data/lib/xero-ruby/models/payroll_au/api_exception.rb +11 -7
  144. data/lib/xero-ruby/models/payroll_au/bank_account.rb +11 -7
  145. data/lib/xero-ruby/models/payroll_au/deduction_line.rb +11 -7
  146. data/lib/xero-ruby/models/payroll_au/deduction_type.rb +11 -7
  147. data/lib/xero-ruby/models/payroll_au/earnings_line.rb +11 -7
  148. data/lib/xero-ruby/models/payroll_au/earnings_rate.rb +11 -7
  149. data/lib/xero-ruby/models/payroll_au/employee.rb +11 -7
  150. data/lib/xero-ruby/models/payroll_au/employees.rb +11 -7
  151. data/lib/xero-ruby/models/payroll_au/home_address.rb +11 -7
  152. data/lib/xero-ruby/models/payroll_au/leave_accrual_line.rb +11 -7
  153. data/lib/xero-ruby/models/payroll_au/leave_application.rb +11 -7
  154. data/lib/xero-ruby/models/payroll_au/leave_applications.rb +11 -7
  155. data/lib/xero-ruby/models/payroll_au/leave_balance.rb +11 -7
  156. data/lib/xero-ruby/models/payroll_au/leave_earnings_line.rb +11 -7
  157. data/lib/xero-ruby/models/payroll_au/leave_line.rb +11 -7
  158. data/lib/xero-ruby/models/payroll_au/leave_lines.rb +11 -7
  159. data/lib/xero-ruby/models/payroll_au/leave_period.rb +11 -7
  160. data/lib/xero-ruby/models/payroll_au/leave_type.rb +11 -7
  161. data/lib/xero-ruby/models/payroll_au/opening_balances.rb +11 -7
  162. data/lib/xero-ruby/models/payroll_au/pay_item.rb +11 -7
  163. data/lib/xero-ruby/models/payroll_au/pay_items.rb +11 -7
  164. data/lib/xero-ruby/models/payroll_au/pay_run.rb +11 -7
  165. data/lib/xero-ruby/models/payroll_au/pay_runs.rb +11 -7
  166. data/lib/xero-ruby/models/payroll_au/pay_template.rb +11 -7
  167. data/lib/xero-ruby/models/payroll_au/payroll_calendar.rb +11 -7
  168. data/lib/xero-ruby/models/payroll_au/payroll_calendars.rb +11 -7
  169. data/lib/xero-ruby/models/payroll_au/payslip.rb +11 -7
  170. data/lib/xero-ruby/models/payroll_au/payslip_lines.rb +11 -7
  171. data/lib/xero-ruby/models/payroll_au/payslip_object.rb +11 -7
  172. data/lib/xero-ruby/models/payroll_au/payslip_summary.rb +11 -7
  173. data/lib/xero-ruby/models/payroll_au/payslips.rb +11 -7
  174. data/lib/xero-ruby/models/payroll_au/reimbursement_line.rb +11 -7
  175. data/lib/xero-ruby/models/payroll_au/reimbursement_lines.rb +11 -7
  176. data/lib/xero-ruby/models/payroll_au/reimbursement_type.rb +11 -7
  177. data/lib/xero-ruby/models/payroll_au/settings.rb +11 -7
  178. data/lib/xero-ruby/models/payroll_au/settings_object.rb +11 -7
  179. data/lib/xero-ruby/models/payroll_au/settings_tracking_categories.rb +11 -7
  180. data/lib/xero-ruby/models/payroll_au/settings_tracking_categories_employee_groups.rb +11 -7
  181. data/lib/xero-ruby/models/payroll_au/settings_tracking_categories_timesheet_categories.rb +11 -7
  182. data/lib/xero-ruby/models/payroll_au/super_fund.rb +11 -7
  183. data/lib/xero-ruby/models/payroll_au/super_fund_product.rb +11 -7
  184. data/lib/xero-ruby/models/payroll_au/super_fund_products.rb +11 -7
  185. data/lib/xero-ruby/models/payroll_au/super_funds.rb +11 -7
  186. data/lib/xero-ruby/models/payroll_au/super_line.rb +11 -7
  187. data/lib/xero-ruby/models/payroll_au/super_membership.rb +11 -7
  188. data/lib/xero-ruby/models/payroll_au/superannuation_line.rb +11 -7
  189. data/lib/xero-ruby/models/payroll_au/tax_declaration.rb +11 -7
  190. data/lib/xero-ruby/models/payroll_au/tax_line.rb +11 -7
  191. data/lib/xero-ruby/models/payroll_au/timesheet.rb +11 -7
  192. data/lib/xero-ruby/models/payroll_au/timesheet_line.rb +11 -7
  193. data/lib/xero-ruby/models/payroll_au/timesheet_object.rb +11 -7
  194. data/lib/xero-ruby/models/payroll_au/timesheets.rb +11 -7
  195. data/lib/xero-ruby/models/payroll_au/validation_error.rb +11 -7
  196. data/lib/xero-ruby/models/payroll_nz/account.rb +11 -7
  197. data/lib/xero-ruby/models/payroll_nz/accounts.rb +11 -7
  198. data/lib/xero-ruby/models/payroll_nz/address.rb +11 -7
  199. data/lib/xero-ruby/models/payroll_nz/bank_account.rb +11 -7
  200. data/lib/xero-ruby/models/payroll_nz/benefit.rb +11 -7
  201. data/lib/xero-ruby/models/payroll_nz/deduction.rb +11 -7
  202. data/lib/xero-ruby/models/payroll_nz/deduction_line.rb +11 -7
  203. data/lib/xero-ruby/models/payroll_nz/deduction_object.rb +11 -7
  204. data/lib/xero-ruby/models/payroll_nz/deductions.rb +11 -7
  205. data/lib/xero-ruby/models/payroll_nz/earnings_line.rb +11 -7
  206. data/lib/xero-ruby/models/payroll_nz/earnings_order.rb +11 -7
  207. data/lib/xero-ruby/models/payroll_nz/earnings_order_object.rb +11 -7
  208. data/lib/xero-ruby/models/payroll_nz/earnings_orders.rb +11 -7
  209. data/lib/xero-ruby/models/payroll_nz/earnings_rate.rb +11 -7
  210. data/lib/xero-ruby/models/payroll_nz/earnings_rate_object.rb +11 -7
  211. data/lib/xero-ruby/models/payroll_nz/earnings_rates.rb +11 -7
  212. data/lib/xero-ruby/models/payroll_nz/earnings_template.rb +11 -7
  213. data/lib/xero-ruby/models/payroll_nz/earnings_template_object.rb +11 -7
  214. data/lib/xero-ruby/models/payroll_nz/employee.rb +11 -7
  215. data/lib/xero-ruby/models/payroll_nz/employee_earnings_templates.rb +11 -7
  216. data/lib/xero-ruby/models/payroll_nz/employee_leave.rb +11 -7
  217. data/lib/xero-ruby/models/payroll_nz/employee_leave_balance.rb +11 -7
  218. data/lib/xero-ruby/models/payroll_nz/employee_leave_balances.rb +11 -7
  219. data/lib/xero-ruby/models/payroll_nz/employee_leave_object.rb +11 -7
  220. data/lib/xero-ruby/models/payroll_nz/employee_leave_setup.rb +11 -7
  221. data/lib/xero-ruby/models/payroll_nz/employee_leave_setup_object.rb +11 -7
  222. data/lib/xero-ruby/models/payroll_nz/employee_leave_type.rb +11 -7
  223. data/lib/xero-ruby/models/payroll_nz/employee_leave_type_object.rb +11 -7
  224. data/lib/xero-ruby/models/payroll_nz/employee_leave_types.rb +11 -7
  225. data/lib/xero-ruby/models/payroll_nz/employee_leaves.rb +11 -7
  226. data/lib/xero-ruby/models/payroll_nz/employee_object.rb +11 -7
  227. data/lib/xero-ruby/models/payroll_nz/employee_opening_balance.rb +11 -7
  228. data/lib/xero-ruby/models/payroll_nz/employee_opening_balances_object.rb +11 -7
  229. data/lib/xero-ruby/models/payroll_nz/employee_pay_template.rb +11 -7
  230. data/lib/xero-ruby/models/payroll_nz/employee_pay_template_object.rb +11 -7
  231. data/lib/xero-ruby/models/payroll_nz/employee_pay_templates.rb +11 -7
  232. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_balance.rb +11 -7
  233. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_balance_object.rb +11 -7
  234. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_summary.rb +11 -7
  235. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leaves_summaries.rb +11 -7
  236. data/lib/xero-ruby/models/payroll_nz/employee_statutory_sick_leave.rb +11 -7
  237. data/lib/xero-ruby/models/payroll_nz/employee_statutory_sick_leave_object.rb +11 -7
  238. data/lib/xero-ruby/models/payroll_nz/employee_statutory_sick_leaves.rb +11 -7
  239. data/lib/xero-ruby/models/payroll_nz/employee_tax.rb +11 -7
  240. data/lib/xero-ruby/models/payroll_nz/employee_tax_object.rb +11 -7
  241. data/lib/xero-ruby/models/payroll_nz/employees.rb +11 -7
  242. data/lib/xero-ruby/models/payroll_nz/employment.rb +11 -7
  243. data/lib/xero-ruby/models/payroll_nz/employment_object.rb +11 -7
  244. data/lib/xero-ruby/models/payroll_nz/gross_earnings_history.rb +11 -7
  245. data/lib/xero-ruby/models/payroll_nz/invalid_field.rb +11 -7
  246. data/lib/xero-ruby/models/payroll_nz/leave_accrual_line.rb +11 -7
  247. data/lib/xero-ruby/models/payroll_nz/leave_earnings_line.rb +11 -7
  248. data/lib/xero-ruby/models/payroll_nz/leave_period.rb +11 -7
  249. data/lib/xero-ruby/models/payroll_nz/leave_periods.rb +11 -7
  250. data/lib/xero-ruby/models/payroll_nz/leave_type.rb +11 -7
  251. data/lib/xero-ruby/models/payroll_nz/leave_type_object.rb +11 -7
  252. data/lib/xero-ruby/models/payroll_nz/leave_types.rb +11 -7
  253. data/lib/xero-ruby/models/payroll_nz/pagination.rb +11 -7
  254. data/lib/xero-ruby/models/payroll_nz/pay_run.rb +11 -7
  255. data/lib/xero-ruby/models/payroll_nz/pay_run_calendar.rb +11 -7
  256. data/lib/xero-ruby/models/payroll_nz/pay_run_calendar_object.rb +11 -7
  257. data/lib/xero-ruby/models/payroll_nz/pay_run_calendars.rb +11 -7
  258. data/lib/xero-ruby/models/payroll_nz/pay_run_object.rb +11 -7
  259. data/lib/xero-ruby/models/payroll_nz/pay_runs.rb +11 -7
  260. data/lib/xero-ruby/models/payroll_nz/pay_slip.rb +11 -7
  261. data/lib/xero-ruby/models/payroll_nz/pay_slip_object.rb +11 -7
  262. data/lib/xero-ruby/models/payroll_nz/pay_slips.rb +11 -7
  263. data/lib/xero-ruby/models/payroll_nz/payment_line.rb +11 -7
  264. data/lib/xero-ruby/models/payroll_nz/payment_method.rb +11 -7
  265. data/lib/xero-ruby/models/payroll_nz/payment_method_object.rb +11 -7
  266. data/lib/xero-ruby/models/payroll_nz/problem.rb +11 -7
  267. data/lib/xero-ruby/models/payroll_nz/reimbursement.rb +11 -7
  268. data/lib/xero-ruby/models/payroll_nz/reimbursement_line.rb +11 -7
  269. data/lib/xero-ruby/models/payroll_nz/reimbursement_object.rb +11 -7
  270. data/lib/xero-ruby/models/payroll_nz/reimbursements.rb +11 -7
  271. data/lib/xero-ruby/models/payroll_nz/salary_and_wage.rb +11 -7
  272. data/lib/xero-ruby/models/payroll_nz/salary_and_wage_object.rb +11 -7
  273. data/lib/xero-ruby/models/payroll_nz/salary_and_wages.rb +11 -7
  274. data/lib/xero-ruby/models/payroll_nz/settings.rb +11 -7
  275. data/lib/xero-ruby/models/payroll_nz/statutory_deduction.rb +11 -7
  276. data/lib/xero-ruby/models/payroll_nz/statutory_deduction_line.rb +11 -7
  277. data/lib/xero-ruby/models/payroll_nz/statutory_deduction_object.rb +11 -7
  278. data/lib/xero-ruby/models/payroll_nz/statutory_deductions.rb +11 -7
  279. data/lib/xero-ruby/models/payroll_nz/superannuation_line.rb +11 -7
  280. data/lib/xero-ruby/models/payroll_nz/superannuation_object.rb +11 -7
  281. data/lib/xero-ruby/models/payroll_nz/superannuations.rb +11 -7
  282. data/lib/xero-ruby/models/payroll_nz/tax_line.rb +11 -7
  283. data/lib/xero-ruby/models/payroll_nz/tax_settings.rb +11 -7
  284. data/lib/xero-ruby/models/payroll_nz/timesheet.rb +11 -7
  285. data/lib/xero-ruby/models/payroll_nz/timesheet_earnings_line.rb +11 -7
  286. data/lib/xero-ruby/models/payroll_nz/timesheet_line.rb +11 -7
  287. data/lib/xero-ruby/models/payroll_nz/timesheet_line_object.rb +11 -7
  288. data/lib/xero-ruby/models/payroll_nz/timesheet_object.rb +11 -7
  289. data/lib/xero-ruby/models/payroll_nz/timesheets.rb +11 -7
  290. data/lib/xero-ruby/models/payroll_nz/tracking_categories.rb +11 -7
  291. data/lib/xero-ruby/models/payroll_nz/tracking_category.rb +11 -7
  292. data/lib/xero-ruby/models/payroll_uk/account.rb +11 -7
  293. data/lib/xero-ruby/models/payroll_uk/accounts.rb +11 -7
  294. data/lib/xero-ruby/models/payroll_uk/address.rb +11 -7
  295. data/lib/xero-ruby/models/payroll_uk/bank_account.rb +11 -7
  296. data/lib/xero-ruby/models/payroll_uk/benefit.rb +11 -7
  297. data/lib/xero-ruby/models/payroll_uk/benefit_line.rb +11 -7
  298. data/lib/xero-ruby/models/payroll_uk/benefit_object.rb +11 -7
  299. data/lib/xero-ruby/models/payroll_uk/benefits.rb +11 -7
  300. data/lib/xero-ruby/models/payroll_uk/court_order_line.rb +11 -7
  301. data/lib/xero-ruby/models/payroll_uk/deduction.rb +11 -7
  302. data/lib/xero-ruby/models/payroll_uk/deduction_line.rb +11 -7
  303. data/lib/xero-ruby/models/payroll_uk/deduction_object.rb +11 -7
  304. data/lib/xero-ruby/models/payroll_uk/deductions.rb +11 -7
  305. data/lib/xero-ruby/models/payroll_uk/earnings_line.rb +11 -7
  306. data/lib/xero-ruby/models/payroll_uk/earnings_order.rb +11 -7
  307. data/lib/xero-ruby/models/payroll_uk/earnings_order_object.rb +11 -7
  308. data/lib/xero-ruby/models/payroll_uk/earnings_orders.rb +11 -7
  309. data/lib/xero-ruby/models/payroll_uk/earnings_rate.rb +11 -7
  310. data/lib/xero-ruby/models/payroll_uk/earnings_rate_object.rb +11 -7
  311. data/lib/xero-ruby/models/payroll_uk/earnings_rates.rb +11 -7
  312. data/lib/xero-ruby/models/payroll_uk/earnings_template.rb +11 -7
  313. data/lib/xero-ruby/models/payroll_uk/earnings_template_object.rb +11 -7
  314. data/lib/xero-ruby/models/payroll_uk/employee.rb +11 -7
  315. data/lib/xero-ruby/models/payroll_uk/employee_leave.rb +11 -7
  316. data/lib/xero-ruby/models/payroll_uk/employee_leave_balance.rb +11 -7
  317. data/lib/xero-ruby/models/payroll_uk/employee_leave_balances.rb +11 -7
  318. data/lib/xero-ruby/models/payroll_uk/employee_leave_object.rb +11 -7
  319. data/lib/xero-ruby/models/payroll_uk/employee_leave_type.rb +11 -7
  320. data/lib/xero-ruby/models/payroll_uk/employee_leave_type_object.rb +11 -7
  321. data/lib/xero-ruby/models/payroll_uk/employee_leave_types.rb +11 -7
  322. data/lib/xero-ruby/models/payroll_uk/employee_leaves.rb +11 -7
  323. data/lib/xero-ruby/models/payroll_uk/employee_object.rb +11 -7
  324. data/lib/xero-ruby/models/payroll_uk/employee_opening_balances.rb +11 -7
  325. data/lib/xero-ruby/models/payroll_uk/employee_opening_balances_object.rb +11 -7
  326. data/lib/xero-ruby/models/payroll_uk/employee_pay_template.rb +11 -7
  327. data/lib/xero-ruby/models/payroll_uk/employee_pay_template_object.rb +11 -7
  328. data/lib/xero-ruby/models/payroll_uk/employee_pay_templates.rb +11 -7
  329. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_balance.rb +11 -7
  330. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_balance_object.rb +11 -7
  331. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_summary.rb +11 -7
  332. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leaves_summaries.rb +11 -7
  333. data/lib/xero-ruby/models/payroll_uk/employee_statutory_sick_leave.rb +11 -7
  334. data/lib/xero-ruby/models/payroll_uk/employee_statutory_sick_leave_object.rb +11 -7
  335. data/lib/xero-ruby/models/payroll_uk/employee_statutory_sick_leaves.rb +11 -7
  336. data/lib/xero-ruby/models/payroll_uk/employee_tax.rb +11 -7
  337. data/lib/xero-ruby/models/payroll_uk/employee_tax_object.rb +11 -7
  338. data/lib/xero-ruby/models/payroll_uk/employees.rb +11 -7
  339. data/lib/xero-ruby/models/payroll_uk/employment.rb +11 -7
  340. data/lib/xero-ruby/models/payroll_uk/employment_object.rb +11 -7
  341. data/lib/xero-ruby/models/payroll_uk/invalid_field.rb +11 -7
  342. data/lib/xero-ruby/models/payroll_uk/leave_accrual_line.rb +11 -7
  343. data/lib/xero-ruby/models/payroll_uk/leave_earnings_line.rb +11 -7
  344. data/lib/xero-ruby/models/payroll_uk/leave_period.rb +11 -7
  345. data/lib/xero-ruby/models/payroll_uk/leave_periods.rb +11 -7
  346. data/lib/xero-ruby/models/payroll_uk/leave_type.rb +11 -7
  347. data/lib/xero-ruby/models/payroll_uk/leave_type_object.rb +11 -7
  348. data/lib/xero-ruby/models/payroll_uk/leave_types.rb +11 -7
  349. data/lib/xero-ruby/models/payroll_uk/pagination.rb +11 -7
  350. data/lib/xero-ruby/models/payroll_uk/pay_run.rb +11 -7
  351. data/lib/xero-ruby/models/payroll_uk/pay_run_calendar.rb +11 -7
  352. data/lib/xero-ruby/models/payroll_uk/pay_run_calendar_object.rb +11 -7
  353. data/lib/xero-ruby/models/payroll_uk/pay_run_calendars.rb +11 -7
  354. data/lib/xero-ruby/models/payroll_uk/pay_run_object.rb +11 -7
  355. data/lib/xero-ruby/models/payroll_uk/pay_runs.rb +11 -7
  356. data/lib/xero-ruby/models/payroll_uk/payment_line.rb +11 -7
  357. data/lib/xero-ruby/models/payroll_uk/payment_method.rb +11 -7
  358. data/lib/xero-ruby/models/payroll_uk/payment_method_object.rb +11 -7
  359. data/lib/xero-ruby/models/payroll_uk/payslip.rb +11 -7
  360. data/lib/xero-ruby/models/payroll_uk/payslip_object.rb +11 -7
  361. data/lib/xero-ruby/models/payroll_uk/payslips.rb +11 -7
  362. data/lib/xero-ruby/models/payroll_uk/problem.rb +11 -7
  363. data/lib/xero-ruby/models/payroll_uk/reimbursement.rb +11 -7
  364. data/lib/xero-ruby/models/payroll_uk/reimbursement_line.rb +11 -7
  365. data/lib/xero-ruby/models/payroll_uk/reimbursement_object.rb +11 -7
  366. data/lib/xero-ruby/models/payroll_uk/reimbursements.rb +11 -7
  367. data/lib/xero-ruby/models/payroll_uk/salary_and_wage.rb +11 -7
  368. data/lib/xero-ruby/models/payroll_uk/salary_and_wage_object.rb +11 -7
  369. data/lib/xero-ruby/models/payroll_uk/salary_and_wages.rb +11 -7
  370. data/lib/xero-ruby/models/payroll_uk/settings.rb +11 -7
  371. data/lib/xero-ruby/models/payroll_uk/statutory_deduction.rb +11 -7
  372. data/lib/xero-ruby/models/payroll_uk/tax_line.rb +11 -7
  373. data/lib/xero-ruby/models/payroll_uk/timesheet.rb +11 -7
  374. data/lib/xero-ruby/models/payroll_uk/timesheet_earnings_line.rb +11 -7
  375. data/lib/xero-ruby/models/payroll_uk/timesheet_line.rb +11 -7
  376. data/lib/xero-ruby/models/payroll_uk/timesheet_line_object.rb +11 -7
  377. data/lib/xero-ruby/models/payroll_uk/timesheet_object.rb +11 -7
  378. data/lib/xero-ruby/models/payroll_uk/timesheets.rb +11 -7
  379. data/lib/xero-ruby/models/payroll_uk/tracking_categories.rb +11 -7
  380. data/lib/xero-ruby/models/payroll_uk/tracking_category.rb +11 -7
  381. data/lib/xero-ruby/models/projects/amount.rb +11 -7
  382. data/lib/xero-ruby/models/projects/error.rb +11 -7
  383. data/lib/xero-ruby/models/projects/pagination.rb +11 -7
  384. data/lib/xero-ruby/models/projects/project.rb +11 -7
  385. data/lib/xero-ruby/models/projects/project_create_or_update.rb +11 -7
  386. data/lib/xero-ruby/models/projects/project_patch.rb +11 -7
  387. data/lib/xero-ruby/models/projects/project_user.rb +11 -7
  388. data/lib/xero-ruby/models/projects/project_users.rb +11 -7
  389. data/lib/xero-ruby/models/projects/projects.rb +11 -7
  390. data/lib/xero-ruby/models/projects/task.rb +11 -7
  391. data/lib/xero-ruby/models/projects/task_create_or_update.rb +11 -7
  392. data/lib/xero-ruby/models/projects/tasks.rb +11 -7
  393. data/lib/xero-ruby/models/projects/time_entries.rb +11 -7
  394. data/lib/xero-ruby/models/projects/time_entry.rb +11 -7
  395. data/lib/xero-ruby/models/projects/time_entry_create_or_update.rb +11 -7
  396. data/lib/xero-ruby/version.rb +2 -2
  397. data/spec/helper_methods_spec.rb +28 -0
  398. metadata +9 -6
@@ -178,7 +178,7 @@ module XeroRuby::Accounting
178
178
  value = self.send(attr)
179
179
  next if value.nil?
180
180
  key = downcase ? attr : param
181
- hash[key] = _to_hash(value)
181
+ hash[key] = _to_hash(value, downcase: downcase)
182
182
  end
183
183
  hash
184
184
  end
@@ -192,15 +192,17 @@ module XeroRuby::Accounting
192
192
  # For object, use to_hash. Otherwise, just return the value
193
193
  # @param [Object] value Any valid value
194
194
  # @return [Hash] Returns the value in the form of hash
195
- def _to_hash(value)
195
+ def _to_hash(value, downcase: false)
196
196
  if value.is_a?(Array)
197
- value.compact.map { |v| _to_hash(v) }
197
+ value.map do |v|
198
+ v.to_hash(downcase: downcase)
199
+ end
198
200
  elsif value.is_a?(Hash)
199
201
  {}.tap do |hash|
200
- value.each { |k, v| hash[k] = _to_hash(v) }
202
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
201
203
  end
202
204
  elsif value.respond_to? :to_hash
203
- value.to_hash
205
+ value.to_hash(downcase: downcase)
204
206
  else
205
207
  value
206
208
  end
@@ -208,8 +210,10 @@ module XeroRuby::Accounting
208
210
 
209
211
  def parse_date(datestring)
210
212
  if datestring.include?('Date')
211
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
212
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
213
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
214
+ original, date, timezone = *date_pattern.match(datestring)
215
+ date = (date.to_i / 1000)
216
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
213
217
  else # handle date 'types' for small subset of payroll API's
214
218
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
215
219
  end
@@ -307,7 +307,7 @@ module XeroRuby::Accounting
307
307
  value = self.send(attr)
308
308
  next if value.nil?
309
309
  key = downcase ? attr : param
310
- hash[key] = _to_hash(value)
310
+ hash[key] = _to_hash(value, downcase: downcase)
311
311
  end
312
312
  hash
313
313
  end
@@ -321,15 +321,17 @@ module XeroRuby::Accounting
321
321
  # For object, use to_hash. Otherwise, just return the value
322
322
  # @param [Object] value Any valid value
323
323
  # @return [Hash] Returns the value in the form of hash
324
- def _to_hash(value)
324
+ def _to_hash(value, downcase: false)
325
325
  if value.is_a?(Array)
326
- value.compact.map { |v| _to_hash(v) }
326
+ value.map do |v|
327
+ v.to_hash(downcase: downcase)
328
+ end
327
329
  elsif value.is_a?(Hash)
328
330
  {}.tap do |hash|
329
- value.each { |k, v| hash[k] = _to_hash(v) }
331
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
330
332
  end
331
333
  elsif value.respond_to? :to_hash
332
- value.to_hash
334
+ value.to_hash(downcase: downcase)
333
335
  else
334
336
  value
335
337
  end
@@ -337,8 +339,10 @@ module XeroRuby::Accounting
337
339
 
338
340
  def parse_date(datestring)
339
341
  if datestring.include?('Date')
340
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
341
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
342
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
343
+ original, date, timezone = *date_pattern.match(datestring)
344
+ date = (date.to_i / 1000)
345
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
342
346
  else # handle date 'types' for small subset of payroll API's
343
347
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
344
348
  end
@@ -288,7 +288,7 @@ module XeroRuby::Accounting
288
288
  value = self.send(attr)
289
289
  next if value.nil?
290
290
  key = downcase ? attr : param
291
- hash[key] = _to_hash(value)
291
+ hash[key] = _to_hash(value, downcase: downcase)
292
292
  end
293
293
  hash
294
294
  end
@@ -302,15 +302,17 @@ module XeroRuby::Accounting
302
302
  # For object, use to_hash. Otherwise, just return the value
303
303
  # @param [Object] value Any valid value
304
304
  # @return [Hash] Returns the value in the form of hash
305
- def _to_hash(value)
305
+ def _to_hash(value, downcase: false)
306
306
  if value.is_a?(Array)
307
- value.compact.map { |v| _to_hash(v) }
307
+ value.map do |v|
308
+ v.to_hash(downcase: downcase)
309
+ end
308
310
  elsif value.is_a?(Hash)
309
311
  {}.tap do |hash|
310
- value.each { |k, v| hash[k] = _to_hash(v) }
312
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
311
313
  end
312
314
  elsif value.respond_to? :to_hash
313
- value.to_hash
315
+ value.to_hash(downcase: downcase)
314
316
  else
315
317
  value
316
318
  end
@@ -318,8 +320,10 @@ module XeroRuby::Accounting
318
320
 
319
321
  def parse_date(datestring)
320
322
  if datestring.include?('Date')
321
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
322
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
323
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
324
+ original, date, timezone = *date_pattern.match(datestring)
325
+ date = (date.to_i / 1000)
326
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
323
327
  else # handle date 'types' for small subset of payroll API's
324
328
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
325
329
  end
@@ -178,7 +178,7 @@ module XeroRuby::Accounting
178
178
  value = self.send(attr)
179
179
  next if value.nil?
180
180
  key = downcase ? attr : param
181
- hash[key] = _to_hash(value)
181
+ hash[key] = _to_hash(value, downcase: downcase)
182
182
  end
183
183
  hash
184
184
  end
@@ -192,15 +192,17 @@ module XeroRuby::Accounting
192
192
  # For object, use to_hash. Otherwise, just return the value
193
193
  # @param [Object] value Any valid value
194
194
  # @return [Hash] Returns the value in the form of hash
195
- def _to_hash(value)
195
+ def _to_hash(value, downcase: false)
196
196
  if value.is_a?(Array)
197
- value.compact.map { |v| _to_hash(v) }
197
+ value.map do |v|
198
+ v.to_hash(downcase: downcase)
199
+ end
198
200
  elsif value.is_a?(Hash)
199
201
  {}.tap do |hash|
200
- value.each { |k, v| hash[k] = _to_hash(v) }
202
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
201
203
  end
202
204
  elsif value.respond_to? :to_hash
203
- value.to_hash
205
+ value.to_hash(downcase: downcase)
204
206
  else
205
207
  value
206
208
  end
@@ -208,8 +210,10 @@ module XeroRuby::Accounting
208
210
 
209
211
  def parse_date(datestring)
210
212
  if datestring.include?('Date')
211
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
212
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
213
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
214
+ original, date, timezone = *date_pattern.match(datestring)
215
+ date = (date.to_i / 1000)
216
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
213
217
  else # handle date 'types' for small subset of payroll API's
214
218
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
215
219
  end
@@ -34,6 +34,9 @@ module XeroRuby::Accounting
34
34
  # See Accounts
35
35
  attr_accessor :account_code
36
36
 
37
+ # The associated account ID related to this line item
38
+ attr_accessor :account_id
39
+
37
40
  # The tax type from TaxRates
38
41
  attr_accessor :tax_type
39
42
 
@@ -64,6 +67,7 @@ module XeroRuby::Accounting
64
67
  :'unit_amount' => :'UnitAmount',
65
68
  :'item_code' => :'ItemCode',
66
69
  :'account_code' => :'AccountCode',
70
+ :'account_id' => :'AccountID',
67
71
  :'tax_type' => :'TaxType',
68
72
  :'tax_amount' => :'TaxAmount',
69
73
  :'line_amount' => :'LineAmount',
@@ -83,6 +87,7 @@ module XeroRuby::Accounting
83
87
  :'unit_amount' => :'BigDecimal',
84
88
  :'item_code' => :'String',
85
89
  :'account_code' => :'String',
90
+ :'account_id' => :'String',
86
91
  :'tax_type' => :'String',
87
92
  :'tax_amount' => :'BigDecimal',
88
93
  :'line_amount' => :'BigDecimal',
@@ -132,6 +137,10 @@ module XeroRuby::Accounting
132
137
  self.account_code = attributes[:'account_code']
133
138
  end
134
139
 
140
+ if attributes.key?(:'account_id')
141
+ self.account_id = attributes[:'account_id']
142
+ end
143
+
135
144
  if attributes.key?(:'tax_type')
136
145
  self.tax_type = attributes[:'tax_type']
137
146
  end
@@ -187,6 +196,7 @@ module XeroRuby::Accounting
187
196
  unit_amount == o.unit_amount &&
188
197
  item_code == o.item_code &&
189
198
  account_code == o.account_code &&
199
+ account_id == o.account_id &&
190
200
  tax_type == o.tax_type &&
191
201
  tax_amount == o.tax_amount &&
192
202
  line_amount == o.line_amount &&
@@ -205,7 +215,7 @@ module XeroRuby::Accounting
205
215
  # Calculates hash code according to all attributes.
206
216
  # @return [Integer] Hash code
207
217
  def hash
208
- [line_item_id, description, quantity, unit_amount, item_code, account_code, tax_type, tax_amount, line_amount, tracking, discount_rate, discount_amount, repeating_invoice_id].hash
218
+ [line_item_id, description, quantity, unit_amount, item_code, account_code, account_id, tax_type, tax_amount, line_amount, tracking, discount_rate, discount_amount, repeating_invoice_id].hash
209
219
  end
210
220
 
211
221
  # Builds the object from hash
@@ -298,7 +308,7 @@ module XeroRuby::Accounting
298
308
  value = self.send(attr)
299
309
  next if value.nil?
300
310
  key = downcase ? attr : param
301
- hash[key] = _to_hash(value)
311
+ hash[key] = _to_hash(value, downcase: downcase)
302
312
  end
303
313
  hash
304
314
  end
@@ -312,15 +322,17 @@ module XeroRuby::Accounting
312
322
  # For object, use to_hash. Otherwise, just return the value
313
323
  # @param [Object] value Any valid value
314
324
  # @return [Hash] Returns the value in the form of hash
315
- def _to_hash(value)
325
+ def _to_hash(value, downcase: false)
316
326
  if value.is_a?(Array)
317
- value.compact.map { |v| _to_hash(v) }
327
+ value.map do |v|
328
+ v.to_hash(downcase: downcase)
329
+ end
318
330
  elsif value.is_a?(Hash)
319
331
  {}.tap do |hash|
320
- value.each { |k, v| hash[k] = _to_hash(v) }
332
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
321
333
  end
322
334
  elsif value.respond_to? :to_hash
323
- value.to_hash
335
+ value.to_hash(downcase: downcase)
324
336
  else
325
337
  value
326
338
  end
@@ -328,8 +340,10 @@ module XeroRuby::Accounting
328
340
 
329
341
  def parse_date(datestring)
330
342
  if datestring.include?('Date')
331
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
332
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
343
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
344
+ original, date, timezone = *date_pattern.match(datestring)
345
+ date = (date.to_i / 1000)
346
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
333
347
  else # handle date 'types' for small subset of payroll API's
334
348
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
335
349
  end
@@ -221,7 +221,7 @@ module XeroRuby::Accounting
221
221
  value = self.send(attr)
222
222
  next if value.nil?
223
223
  key = downcase ? attr : param
224
- hash[key] = _to_hash(value)
224
+ hash[key] = _to_hash(value, downcase: downcase)
225
225
  end
226
226
  hash
227
227
  end
@@ -235,15 +235,17 @@ module XeroRuby::Accounting
235
235
  # For object, use to_hash. Otherwise, just return the value
236
236
  # @param [Object] value Any valid value
237
237
  # @return [Hash] Returns the value in the form of hash
238
- def _to_hash(value)
238
+ def _to_hash(value, downcase: false)
239
239
  if value.is_a?(Array)
240
- value.compact.map { |v| _to_hash(v) }
240
+ value.map do |v|
241
+ v.to_hash(downcase: downcase)
242
+ end
241
243
  elsif value.is_a?(Hash)
242
244
  {}.tap do |hash|
243
- value.each { |k, v| hash[k] = _to_hash(v) }
245
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
244
246
  end
245
247
  elsif value.respond_to? :to_hash
246
- value.to_hash
248
+ value.to_hash(downcase: downcase)
247
249
  else
248
250
  value
249
251
  end
@@ -251,8 +253,10 @@ module XeroRuby::Accounting
251
253
 
252
254
  def parse_date(datestring)
253
255
  if datestring.include?('Date')
254
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
255
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
256
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
257
+ original, date, timezone = *date_pattern.match(datestring)
258
+ date = (date.to_i / 1000)
259
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
256
260
  else # handle date 'types' for small subset of payroll API's
257
261
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
258
262
  end
@@ -344,7 +344,7 @@ module XeroRuby::Accounting
344
344
  value = self.send(attr)
345
345
  next if value.nil?
346
346
  key = downcase ? attr : param
347
- hash[key] = _to_hash(value)
347
+ hash[key] = _to_hash(value, downcase: downcase)
348
348
  end
349
349
  hash
350
350
  end
@@ -358,15 +358,17 @@ module XeroRuby::Accounting
358
358
  # For object, use to_hash. Otherwise, just return the value
359
359
  # @param [Object] value Any valid value
360
360
  # @return [Hash] Returns the value in the form of hash
361
- def _to_hash(value)
361
+ def _to_hash(value, downcase: false)
362
362
  if value.is_a?(Array)
363
- value.compact.map { |v| _to_hash(v) }
363
+ value.map do |v|
364
+ v.to_hash(downcase: downcase)
365
+ end
364
366
  elsif value.is_a?(Hash)
365
367
  {}.tap do |hash|
366
- value.each { |k, v| hash[k] = _to_hash(v) }
368
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
367
369
  end
368
370
  elsif value.respond_to? :to_hash
369
- value.to_hash
371
+ value.to_hash(downcase: downcase)
370
372
  else
371
373
  value
372
374
  end
@@ -374,8 +376,10 @@ module XeroRuby::Accounting
374
376
 
375
377
  def parse_date(datestring)
376
378
  if datestring.include?('Date')
377
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
378
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
379
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
380
+ original, date, timezone = *date_pattern.match(datestring)
381
+ date = (date.to_i / 1000)
382
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
379
383
  else # handle date 'types' for small subset of payroll API's
380
384
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
381
385
  end
@@ -178,7 +178,7 @@ module XeroRuby::Accounting
178
178
  value = self.send(attr)
179
179
  next if value.nil?
180
180
  key = downcase ? attr : param
181
- hash[key] = _to_hash(value)
181
+ hash[key] = _to_hash(value, downcase: downcase)
182
182
  end
183
183
  hash
184
184
  end
@@ -192,15 +192,17 @@ module XeroRuby::Accounting
192
192
  # For object, use to_hash. Otherwise, just return the value
193
193
  # @param [Object] value Any valid value
194
194
  # @return [Hash] Returns the value in the form of hash
195
- def _to_hash(value)
195
+ def _to_hash(value, downcase: false)
196
196
  if value.is_a?(Array)
197
- value.compact.map { |v| _to_hash(v) }
197
+ value.map do |v|
198
+ v.to_hash(downcase: downcase)
199
+ end
198
200
  elsif value.is_a?(Hash)
199
201
  {}.tap do |hash|
200
- value.each { |k, v| hash[k] = _to_hash(v) }
202
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
201
203
  end
202
204
  elsif value.respond_to? :to_hash
203
- value.to_hash
205
+ value.to_hash(downcase: downcase)
204
206
  else
205
207
  value
206
208
  end
@@ -208,8 +210,10 @@ module XeroRuby::Accounting
208
210
 
209
211
  def parse_date(datestring)
210
212
  if datestring.include?('Date')
211
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
212
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
213
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
214
+ original, date, timezone = *date_pattern.match(datestring)
215
+ date = (date.to_i / 1000)
216
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
213
217
  else # handle date 'types' for small subset of payroll API's
214
218
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
215
219
  end
@@ -360,7 +360,7 @@ module XeroRuby::Accounting
360
360
  value = self.send(attr)
361
361
  next if value.nil?
362
362
  key = downcase ? attr : param
363
- hash[key] = _to_hash(value)
363
+ hash[key] = _to_hash(value, downcase: downcase)
364
364
  end
365
365
  hash
366
366
  end
@@ -374,15 +374,17 @@ module XeroRuby::Accounting
374
374
  # For object, use to_hash. Otherwise, just return the value
375
375
  # @param [Object] value Any valid value
376
376
  # @return [Hash] Returns the value in the form of hash
377
- def _to_hash(value)
377
+ def _to_hash(value, downcase: false)
378
378
  if value.is_a?(Array)
379
- value.compact.map { |v| _to_hash(v) }
379
+ value.map do |v|
380
+ v.to_hash(downcase: downcase)
381
+ end
380
382
  elsif value.is_a?(Hash)
381
383
  {}.tap do |hash|
382
- value.each { |k, v| hash[k] = _to_hash(v) }
384
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
383
385
  end
384
386
  elsif value.respond_to? :to_hash
385
- value.to_hash
387
+ value.to_hash(downcase: downcase)
386
388
  else
387
389
  value
388
390
  end
@@ -390,8 +392,10 @@ module XeroRuby::Accounting
390
392
 
391
393
  def parse_date(datestring)
392
394
  if datestring.include?('Date')
393
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
394
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
395
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
396
+ original, date, timezone = *date_pattern.match(datestring)
397
+ date = (date.to_i / 1000)
398
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
395
399
  else # handle date 'types' for small subset of payroll API's
396
400
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
397
401
  end
@@ -248,7 +248,7 @@ module XeroRuby::Accounting
248
248
  value = self.send(attr)
249
249
  next if value.nil?
250
250
  key = downcase ? attr : param
251
- hash[key] = _to_hash(value)
251
+ hash[key] = _to_hash(value, downcase: downcase)
252
252
  end
253
253
  hash
254
254
  end
@@ -262,15 +262,17 @@ module XeroRuby::Accounting
262
262
  # For object, use to_hash. Otherwise, just return the value
263
263
  # @param [Object] value Any valid value
264
264
  # @return [Hash] Returns the value in the form of hash
265
- def _to_hash(value)
265
+ def _to_hash(value, downcase: false)
266
266
  if value.is_a?(Array)
267
- value.compact.map { |v| _to_hash(v) }
267
+ value.map do |v|
268
+ v.to_hash(downcase: downcase)
269
+ end
268
270
  elsif value.is_a?(Hash)
269
271
  {}.tap do |hash|
270
- value.each { |k, v| hash[k] = _to_hash(v) }
272
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
271
273
  end
272
274
  elsif value.respond_to? :to_hash
273
- value.to_hash
275
+ value.to_hash(downcase: downcase)
274
276
  else
275
277
  value
276
278
  end
@@ -278,8 +280,10 @@ module XeroRuby::Accounting
278
280
 
279
281
  def parse_date(datestring)
280
282
  if datestring.include?('Date')
281
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
282
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
283
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
284
+ original, date, timezone = *date_pattern.match(datestring)
285
+ date = (date.to_i / 1000)
286
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
283
287
  else # handle date 'types' for small subset of payroll API's
284
288
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
285
289
  end