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
@@ -198,7 +198,7 @@ module XeroRuby::PayrollNz
198
198
  value = self.send(attr)
199
199
  next if value.nil?
200
200
  key = downcase ? attr : param
201
- hash[key] = _to_hash(value)
201
+ hash[key] = _to_hash(value, downcase: downcase)
202
202
  end
203
203
  hash
204
204
  end
@@ -212,15 +212,17 @@ module XeroRuby::PayrollNz
212
212
  # For object, use to_hash. Otherwise, just return the value
213
213
  # @param [Object] value Any valid value
214
214
  # @return [Hash] Returns the value in the form of hash
215
- def _to_hash(value)
215
+ def _to_hash(value, downcase: false)
216
216
  if value.is_a?(Array)
217
- value.compact.map { |v| _to_hash(v) }
217
+ value.map do |v|
218
+ v.to_hash(downcase: downcase)
219
+ end
218
220
  elsif value.is_a?(Hash)
219
221
  {}.tap do |hash|
220
- value.each { |k, v| hash[k] = _to_hash(v) }
222
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
221
223
  end
222
224
  elsif value.respond_to? :to_hash
223
- value.to_hash
225
+ value.to_hash(downcase: downcase)
224
226
  else
225
227
  value
226
228
  end
@@ -228,8 +230,12 @@ module XeroRuby::PayrollNz
228
230
 
229
231
  def parse_date(datestring)
230
232
  if datestring.include?('Date')
231
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
232
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
233
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
234
+ original, date, timezone = *date_pattern.match(datestring)
235
+ date = (date.to_i / 1000)
236
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
237
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
238
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
233
239
  else # handle date 'types' for small subset of payroll API's
234
240
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
235
241
  end
@@ -387,7 +387,7 @@ module XeroRuby::PayrollNz
387
387
  value = self.send(attr)
388
388
  next if value.nil?
389
389
  key = downcase ? attr : param
390
- hash[key] = _to_hash(value)
390
+ hash[key] = _to_hash(value, downcase: downcase)
391
391
  end
392
392
  hash
393
393
  end
@@ -401,15 +401,17 @@ module XeroRuby::PayrollNz
401
401
  # For object, use to_hash. Otherwise, just return the value
402
402
  # @param [Object] value Any valid value
403
403
  # @return [Hash] Returns the value in the form of hash
404
- def _to_hash(value)
404
+ def _to_hash(value, downcase: false)
405
405
  if value.is_a?(Array)
406
- value.compact.map { |v| _to_hash(v) }
406
+ value.map do |v|
407
+ v.to_hash(downcase: downcase)
408
+ end
407
409
  elsif value.is_a?(Hash)
408
410
  {}.tap do |hash|
409
- value.each { |k, v| hash[k] = _to_hash(v) }
411
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
410
412
  end
411
413
  elsif value.respond_to? :to_hash
412
- value.to_hash
414
+ value.to_hash(downcase: downcase)
413
415
  else
414
416
  value
415
417
  end
@@ -417,8 +419,12 @@ module XeroRuby::PayrollNz
417
419
 
418
420
  def parse_date(datestring)
419
421
  if datestring.include?('Date')
420
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
421
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
422
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
423
+ original, date, timezone = *date_pattern.match(datestring)
424
+ date = (date.to_i / 1000)
425
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
426
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
427
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
422
428
  else # handle date 'types' for small subset of payroll API's
423
429
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
424
430
  end
@@ -196,7 +196,7 @@ module XeroRuby::PayrollNz
196
196
  value = self.send(attr)
197
197
  next if value.nil?
198
198
  key = downcase ? attr : param
199
- hash[key] = _to_hash(value)
199
+ hash[key] = _to_hash(value, downcase: downcase)
200
200
  end
201
201
  hash
202
202
  end
@@ -210,15 +210,17 @@ module XeroRuby::PayrollNz
210
210
  # For object, use to_hash. Otherwise, just return the value
211
211
  # @param [Object] value Any valid value
212
212
  # @return [Hash] Returns the value in the form of hash
213
- def _to_hash(value)
213
+ def _to_hash(value, downcase: false)
214
214
  if value.is_a?(Array)
215
- value.compact.map { |v| _to_hash(v) }
215
+ value.map do |v|
216
+ v.to_hash(downcase: downcase)
217
+ end
216
218
  elsif value.is_a?(Hash)
217
219
  {}.tap do |hash|
218
- value.each { |k, v| hash[k] = _to_hash(v) }
220
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
219
221
  end
220
222
  elsif value.respond_to? :to_hash
221
- value.to_hash
223
+ value.to_hash(downcase: downcase)
222
224
  else
223
225
  value
224
226
  end
@@ -226,8 +228,12 @@ module XeroRuby::PayrollNz
226
228
 
227
229
  def parse_date(datestring)
228
230
  if datestring.include?('Date')
229
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
230
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
231
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
232
+ original, date, timezone = *date_pattern.match(datestring)
233
+ date = (date.to_i / 1000)
234
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
235
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
236
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
231
237
  else # handle date 'types' for small subset of payroll API's
232
238
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
233
239
  end
@@ -198,7 +198,7 @@ module XeroRuby::PayrollNz
198
198
  value = self.send(attr)
199
199
  next if value.nil?
200
200
  key = downcase ? attr : param
201
- hash[key] = _to_hash(value)
201
+ hash[key] = _to_hash(value, downcase: downcase)
202
202
  end
203
203
  hash
204
204
  end
@@ -212,15 +212,17 @@ module XeroRuby::PayrollNz
212
212
  # For object, use to_hash. Otherwise, just return the value
213
213
  # @param [Object] value Any valid value
214
214
  # @return [Hash] Returns the value in the form of hash
215
- def _to_hash(value)
215
+ def _to_hash(value, downcase: false)
216
216
  if value.is_a?(Array)
217
- value.compact.map { |v| _to_hash(v) }
217
+ value.map do |v|
218
+ v.to_hash(downcase: downcase)
219
+ end
218
220
  elsif value.is_a?(Hash)
219
221
  {}.tap do |hash|
220
- value.each { |k, v| hash[k] = _to_hash(v) }
222
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
221
223
  end
222
224
  elsif value.respond_to? :to_hash
223
- value.to_hash
225
+ value.to_hash(downcase: downcase)
224
226
  else
225
227
  value
226
228
  end
@@ -228,8 +230,12 @@ module XeroRuby::PayrollNz
228
230
 
229
231
  def parse_date(datestring)
230
232
  if datestring.include?('Date')
231
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
232
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
233
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
234
+ original, date, timezone = *date_pattern.match(datestring)
235
+ date = (date.to_i / 1000)
236
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
237
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
238
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
233
239
  else # handle date 'types' for small subset of payroll API's
234
240
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
235
241
  end
@@ -365,7 +365,7 @@ module XeroRuby::PayrollNz
365
365
  value = self.send(attr)
366
366
  next if value.nil?
367
367
  key = downcase ? attr : param
368
- hash[key] = _to_hash(value)
368
+ hash[key] = _to_hash(value, downcase: downcase)
369
369
  end
370
370
  hash
371
371
  end
@@ -379,15 +379,17 @@ module XeroRuby::PayrollNz
379
379
  # For object, use to_hash. Otherwise, just return the value
380
380
  # @param [Object] value Any valid value
381
381
  # @return [Hash] Returns the value in the form of hash
382
- def _to_hash(value)
382
+ def _to_hash(value, downcase: false)
383
383
  if value.is_a?(Array)
384
- value.compact.map { |v| _to_hash(v) }
384
+ value.map do |v|
385
+ v.to_hash(downcase: downcase)
386
+ end
385
387
  elsif value.is_a?(Hash)
386
388
  {}.tap do |hash|
387
- value.each { |k, v| hash[k] = _to_hash(v) }
389
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
388
390
  end
389
391
  elsif value.respond_to? :to_hash
390
- value.to_hash
392
+ value.to_hash(downcase: downcase)
391
393
  else
392
394
  value
393
395
  end
@@ -395,8 +397,12 @@ module XeroRuby::PayrollNz
395
397
 
396
398
  def parse_date(datestring)
397
399
  if datestring.include?('Date')
398
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
399
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
400
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
401
+ original, date, timezone = *date_pattern.match(datestring)
402
+ date = (date.to_i / 1000)
403
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
404
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
405
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
400
406
  else # handle date 'types' for small subset of payroll API's
401
407
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
402
408
  end
@@ -196,7 +196,7 @@ module XeroRuby::PayrollNz
196
196
  value = self.send(attr)
197
197
  next if value.nil?
198
198
  key = downcase ? attr : param
199
- hash[key] = _to_hash(value)
199
+ hash[key] = _to_hash(value, downcase: downcase)
200
200
  end
201
201
  hash
202
202
  end
@@ -210,15 +210,17 @@ module XeroRuby::PayrollNz
210
210
  # For object, use to_hash. Otherwise, just return the value
211
211
  # @param [Object] value Any valid value
212
212
  # @return [Hash] Returns the value in the form of hash
213
- def _to_hash(value)
213
+ def _to_hash(value, downcase: false)
214
214
  if value.is_a?(Array)
215
- value.compact.map { |v| _to_hash(v) }
215
+ value.map do |v|
216
+ v.to_hash(downcase: downcase)
217
+ end
216
218
  elsif value.is_a?(Hash)
217
219
  {}.tap do |hash|
218
- value.each { |k, v| hash[k] = _to_hash(v) }
220
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
219
221
  end
220
222
  elsif value.respond_to? :to_hash
221
- value.to_hash
223
+ value.to_hash(downcase: downcase)
222
224
  else
223
225
  value
224
226
  end
@@ -226,8 +228,12 @@ module XeroRuby::PayrollNz
226
228
 
227
229
  def parse_date(datestring)
228
230
  if datestring.include?('Date')
229
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
230
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
231
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
232
+ original, date, timezone = *date_pattern.match(datestring)
233
+ date = (date.to_i / 1000)
234
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
235
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
236
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
231
237
  else # handle date 'types' for small subset of payroll API's
232
238
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
233
239
  end
@@ -198,7 +198,7 @@ module XeroRuby::PayrollNz
198
198
  value = self.send(attr)
199
199
  next if value.nil?
200
200
  key = downcase ? attr : param
201
- hash[key] = _to_hash(value)
201
+ hash[key] = _to_hash(value, downcase: downcase)
202
202
  end
203
203
  hash
204
204
  end
@@ -212,15 +212,17 @@ module XeroRuby::PayrollNz
212
212
  # For object, use to_hash. Otherwise, just return the value
213
213
  # @param [Object] value Any valid value
214
214
  # @return [Hash] Returns the value in the form of hash
215
- def _to_hash(value)
215
+ def _to_hash(value, downcase: false)
216
216
  if value.is_a?(Array)
217
- value.compact.map { |v| _to_hash(v) }
217
+ value.map do |v|
218
+ v.to_hash(downcase: downcase)
219
+ end
218
220
  elsif value.is_a?(Hash)
219
221
  {}.tap do |hash|
220
- value.each { |k, v| hash[k] = _to_hash(v) }
222
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
221
223
  end
222
224
  elsif value.respond_to? :to_hash
223
- value.to_hash
225
+ value.to_hash(downcase: downcase)
224
226
  else
225
227
  value
226
228
  end
@@ -228,8 +230,12 @@ module XeroRuby::PayrollNz
228
230
 
229
231
  def parse_date(datestring)
230
232
  if datestring.include?('Date')
231
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
232
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
233
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
234
+ original, date, timezone = *date_pattern.match(datestring)
235
+ date = (date.to_i / 1000)
236
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
237
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
238
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
233
239
  else # handle date 'types' for small subset of payroll API's
234
240
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
235
241
  end
@@ -196,7 +196,7 @@ module XeroRuby::PayrollNz
196
196
  value = self.send(attr)
197
197
  next if value.nil?
198
198
  key = downcase ? attr : param
199
- hash[key] = _to_hash(value)
199
+ hash[key] = _to_hash(value, downcase: downcase)
200
200
  end
201
201
  hash
202
202
  end
@@ -210,15 +210,17 @@ module XeroRuby::PayrollNz
210
210
  # For object, use to_hash. Otherwise, just return the value
211
211
  # @param [Object] value Any valid value
212
212
  # @return [Hash] Returns the value in the form of hash
213
- def _to_hash(value)
213
+ def _to_hash(value, downcase: false)
214
214
  if value.is_a?(Array)
215
- value.compact.map { |v| _to_hash(v) }
215
+ value.map do |v|
216
+ v.to_hash(downcase: downcase)
217
+ end
216
218
  elsif value.is_a?(Hash)
217
219
  {}.tap do |hash|
218
- value.each { |k, v| hash[k] = _to_hash(v) }
220
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
219
221
  end
220
222
  elsif value.respond_to? :to_hash
221
- value.to_hash
223
+ value.to_hash(downcase: downcase)
222
224
  else
223
225
  value
224
226
  end
@@ -226,8 +228,12 @@ module XeroRuby::PayrollNz
226
228
 
227
229
  def parse_date(datestring)
228
230
  if datestring.include?('Date')
229
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
230
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
231
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
232
+ original, date, timezone = *date_pattern.match(datestring)
233
+ date = (date.to_i / 1000)
234
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
235
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
236
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
231
237
  else # handle date 'types' for small subset of payroll API's
232
238
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
233
239
  end
@@ -196,7 +196,7 @@ module XeroRuby::PayrollNz
196
196
  value = self.send(attr)
197
197
  next if value.nil?
198
198
  key = downcase ? attr : param
199
- hash[key] = _to_hash(value)
199
+ hash[key] = _to_hash(value, downcase: downcase)
200
200
  end
201
201
  hash
202
202
  end
@@ -210,15 +210,17 @@ module XeroRuby::PayrollNz
210
210
  # For object, use to_hash. Otherwise, just return the value
211
211
  # @param [Object] value Any valid value
212
212
  # @return [Hash] Returns the value in the form of hash
213
- def _to_hash(value)
213
+ def _to_hash(value, downcase: false)
214
214
  if value.is_a?(Array)
215
- value.compact.map { |v| _to_hash(v) }
215
+ value.map do |v|
216
+ v.to_hash(downcase: downcase)
217
+ end
216
218
  elsif value.is_a?(Hash)
217
219
  {}.tap do |hash|
218
- value.each { |k, v| hash[k] = _to_hash(v) }
220
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
219
221
  end
220
222
  elsif value.respond_to? :to_hash
221
- value.to_hash
223
+ value.to_hash(downcase: downcase)
222
224
  else
223
225
  value
224
226
  end
@@ -226,8 +228,12 @@ module XeroRuby::PayrollNz
226
228
 
227
229
  def parse_date(datestring)
228
230
  if datestring.include?('Date')
229
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
230
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
231
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
232
+ original, date, timezone = *date_pattern.match(datestring)
233
+ date = (date.to_i / 1000)
234
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
235
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
236
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
231
237
  else # handle date 'types' for small subset of payroll API's
232
238
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
233
239
  end
@@ -186,7 +186,7 @@ module XeroRuby::PayrollNz
186
186
  value = self.send(attr)
187
187
  next if value.nil?
188
188
  key = downcase ? attr : param
189
- hash[key] = _to_hash(value)
189
+ hash[key] = _to_hash(value, downcase: downcase)
190
190
  end
191
191
  hash
192
192
  end
@@ -200,15 +200,17 @@ module XeroRuby::PayrollNz
200
200
  # For object, use to_hash. Otherwise, just return the value
201
201
  # @param [Object] value Any valid value
202
202
  # @return [Hash] Returns the value in the form of hash
203
- def _to_hash(value)
203
+ def _to_hash(value, downcase: false)
204
204
  if value.is_a?(Array)
205
- value.compact.map { |v| _to_hash(v) }
205
+ value.map do |v|
206
+ v.to_hash(downcase: downcase)
207
+ end
206
208
  elsif value.is_a?(Hash)
207
209
  {}.tap do |hash|
208
- value.each { |k, v| hash[k] = _to_hash(v) }
210
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
209
211
  end
210
212
  elsif value.respond_to? :to_hash
211
- value.to_hash
213
+ value.to_hash(downcase: downcase)
212
214
  else
213
215
  value
214
216
  end
@@ -216,8 +218,12 @@ module XeroRuby::PayrollNz
216
218
 
217
219
  def parse_date(datestring)
218
220
  if datestring.include?('Date')
219
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
220
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
221
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
222
+ original, date, timezone = *date_pattern.match(datestring)
223
+ date = (date.to_i / 1000)
224
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
225
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
226
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
221
227
  else # handle date 'types' for small subset of payroll API's
222
228
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
223
229
  end