xero-ruby 2.10.2 → 3.1.3

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