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
@@ -256,7 +256,7 @@ module XeroRuby::PayrollUk
256
256
  value = self.send(attr)
257
257
  next if value.nil?
258
258
  key = downcase ? attr : param
259
- hash[key] = _to_hash(value)
259
+ hash[key] = _to_hash(value, downcase: downcase)
260
260
  end
261
261
  hash
262
262
  end
@@ -270,15 +270,17 @@ module XeroRuby::PayrollUk
270
270
  # For object, use to_hash. Otherwise, just return the value
271
271
  # @param [Object] value Any valid value
272
272
  # @return [Hash] Returns the value in the form of hash
273
- def _to_hash(value)
273
+ def _to_hash(value, downcase: false)
274
274
  if value.is_a?(Array)
275
- value.compact.map { |v| _to_hash(v) }
275
+ value.map do |v|
276
+ v.to_hash(downcase: downcase)
277
+ end
276
278
  elsif value.is_a?(Hash)
277
279
  {}.tap do |hash|
278
- value.each { |k, v| hash[k] = _to_hash(v) }
280
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
279
281
  end
280
282
  elsif value.respond_to? :to_hash
281
- value.to_hash
283
+ value.to_hash(downcase: downcase)
282
284
  else
283
285
  value
284
286
  end
@@ -286,8 +288,12 @@ module XeroRuby::PayrollUk
286
288
 
287
289
  def parse_date(datestring)
288
290
  if datestring.include?('Date')
289
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
290
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
291
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
292
+ original, date, timezone = *date_pattern.match(datestring)
293
+ date = (date.to_i / 1000)
294
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
295
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
296
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
291
297
  else # handle date 'types' for small subset of payroll API's
292
298
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
293
299
  end
@@ -223,7 +223,7 @@ module XeroRuby::PayrollUk
223
223
  value = self.send(attr)
224
224
  next if value.nil?
225
225
  key = downcase ? attr : param
226
- hash[key] = _to_hash(value)
226
+ hash[key] = _to_hash(value, downcase: downcase)
227
227
  end
228
228
  hash
229
229
  end
@@ -237,15 +237,17 @@ module XeroRuby::PayrollUk
237
237
  # For object, use to_hash. Otherwise, just return the value
238
238
  # @param [Object] value Any valid value
239
239
  # @return [Hash] Returns the value in the form of hash
240
- def _to_hash(value)
240
+ def _to_hash(value, downcase: false)
241
241
  if value.is_a?(Array)
242
- value.compact.map { |v| _to_hash(v) }
242
+ value.map do |v|
243
+ v.to_hash(downcase: downcase)
244
+ end
243
245
  elsif value.is_a?(Hash)
244
246
  {}.tap do |hash|
245
- value.each { |k, v| hash[k] = _to_hash(v) }
247
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
246
248
  end
247
249
  elsif value.respond_to? :to_hash
248
- value.to_hash
250
+ value.to_hash(downcase: downcase)
249
251
  else
250
252
  value
251
253
  end
@@ -253,8 +255,12 @@ module XeroRuby::PayrollUk
253
255
 
254
256
  def parse_date(datestring)
255
257
  if datestring.include?('Date')
256
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
257
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
258
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
259
+ original, date, timezone = *date_pattern.match(datestring)
260
+ date = (date.to_i / 1000)
261
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
262
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
263
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
258
264
  else # handle date 'types' for small subset of payroll API's
259
265
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
260
266
  end
@@ -196,7 +196,7 @@ module XeroRuby::PayrollUk
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::PayrollUk
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::PayrollUk
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::PayrollUk
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::PayrollUk
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::PayrollUk
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
@@ -46,6 +46,7 @@ module XeroRuby::PayrollUk
46
46
  STATUTORY_SICK_PAY_NON_PENSIONABLE = "StatutorySickPayNonPensionable".freeze
47
47
  TIPS_DIRECT = "Tips(Direct)".freeze
48
48
  TIPS_NON_DIRECT = "Tips(Non-Direct)".freeze
49
+ TERMINATION_PAY = "TerminationPay".freeze
49
50
 
50
51
  # Indicates the type of the earning rate
51
52
  attr_accessor :rate_type
@@ -213,7 +214,7 @@ module XeroRuby::PayrollUk
213
214
  def valid?
214
215
  return false if @name.nil?
215
216
  return false if @earnings_type.nil?
216
- earnings_type_validator = EnumAttributeValidator.new('String', ["Allowance", "Backpay", "Bonus", "Commission", "LumpSum", "OtherEarnings", "OvertimeEarnings", "RegularEarnings", "StatutoryAdoptionPay", "StatutoryAdoptionPayNonPensionable", "StatutoryBereavementPay", "StatutoryMaternityPay", "StatutoryMaternityPayNonPensionable", "StatutoryPaternityPay", "StatutoryPaternityPayNonPensionable", "StatutoryParentalBereavementPayNonPensionable", "StatutorySharedParentalPay", "StatutorySharedParentalPayNonPensionable", "StatutorySickPay", "StatutorySickPayNonPensionable", "Tips(Direct)", "Tips(Non-Direct)"])
217
+ earnings_type_validator = EnumAttributeValidator.new('String', ["Allowance", "Backpay", "Bonus", "Commission", "LumpSum", "OtherEarnings", "OvertimeEarnings", "RegularEarnings", "StatutoryAdoptionPay", "StatutoryAdoptionPayNonPensionable", "StatutoryBereavementPay", "StatutoryMaternityPay", "StatutoryMaternityPayNonPensionable", "StatutoryPaternityPay", "StatutoryPaternityPayNonPensionable", "StatutoryParentalBereavementPayNonPensionable", "StatutorySharedParentalPay", "StatutorySharedParentalPayNonPensionable", "StatutorySickPay", "StatutorySickPayNonPensionable", "Tips(Direct)", "Tips(Non-Direct)", "TerminationPay"])
217
218
  return false unless earnings_type_validator.valid?(@earnings_type)
218
219
  return false if @rate_type.nil?
219
220
  rate_type_validator = EnumAttributeValidator.new('String', ["RatePerUnit", "MultipleOfOrdinaryEarningsRate", "FixedAmount"])
@@ -226,7 +227,7 @@ module XeroRuby::PayrollUk
226
227
  # Custom attribute writer method checking allowed values (enum).
227
228
  # @param [Object] earnings_type Object to be assigned
228
229
  def earnings_type=(earnings_type)
229
- validator = EnumAttributeValidator.new('String', ["Allowance", "Backpay", "Bonus", "Commission", "LumpSum", "OtherEarnings", "OvertimeEarnings", "RegularEarnings", "StatutoryAdoptionPay", "StatutoryAdoptionPayNonPensionable", "StatutoryBereavementPay", "StatutoryMaternityPay", "StatutoryMaternityPayNonPensionable", "StatutoryPaternityPay", "StatutoryPaternityPayNonPensionable", "StatutoryParentalBereavementPayNonPensionable", "StatutorySharedParentalPay", "StatutorySharedParentalPayNonPensionable", "StatutorySickPay", "StatutorySickPayNonPensionable", "Tips(Direct)", "Tips(Non-Direct)"])
230
+ validator = EnumAttributeValidator.new('String', ["Allowance", "Backpay", "Bonus", "Commission", "LumpSum", "OtherEarnings", "OvertimeEarnings", "RegularEarnings", "StatutoryAdoptionPay", "StatutoryAdoptionPayNonPensionable", "StatutoryBereavementPay", "StatutoryMaternityPay", "StatutoryMaternityPayNonPensionable", "StatutoryPaternityPay", "StatutoryPaternityPayNonPensionable", "StatutoryParentalBereavementPayNonPensionable", "StatutorySharedParentalPay", "StatutorySharedParentalPayNonPensionable", "StatutorySickPay", "StatutorySickPayNonPensionable", "Tips(Direct)", "Tips(Non-Direct)", "TerminationPay"])
230
231
  unless validator.valid?(earnings_type)
231
232
  fail ArgumentError, "invalid value for \"earnings_type\", must be one of #{validator.allowable_values}."
232
233
  end
@@ -362,7 +363,7 @@ module XeroRuby::PayrollUk
362
363
  value = self.send(attr)
363
364
  next if value.nil?
364
365
  key = downcase ? attr : param
365
- hash[key] = _to_hash(value)
366
+ hash[key] = _to_hash(value, downcase: downcase)
366
367
  end
367
368
  hash
368
369
  end
@@ -376,15 +377,17 @@ module XeroRuby::PayrollUk
376
377
  # For object, use to_hash. Otherwise, just return the value
377
378
  # @param [Object] value Any valid value
378
379
  # @return [Hash] Returns the value in the form of hash
379
- def _to_hash(value)
380
+ def _to_hash(value, downcase: false)
380
381
  if value.is_a?(Array)
381
- value.compact.map { |v| _to_hash(v) }
382
+ value.map do |v|
383
+ v.to_hash(downcase: downcase)
384
+ end
382
385
  elsif value.is_a?(Hash)
383
386
  {}.tap do |hash|
384
- value.each { |k, v| hash[k] = _to_hash(v) }
387
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
385
388
  end
386
389
  elsif value.respond_to? :to_hash
387
- value.to_hash
390
+ value.to_hash(downcase: downcase)
388
391
  else
389
392
  value
390
393
  end
@@ -392,8 +395,12 @@ module XeroRuby::PayrollUk
392
395
 
393
396
  def parse_date(datestring)
394
397
  if datestring.include?('Date')
395
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
396
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
398
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
399
+ original, date, timezone = *date_pattern.match(datestring)
400
+ date = (date.to_i / 1000)
401
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
402
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
403
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
397
404
  else # handle date 'types' for small subset of payroll API's
398
405
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
399
406
  end
@@ -196,7 +196,7 @@ module XeroRuby::PayrollUk
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::PayrollUk
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::PayrollUk
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::PayrollUk
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::PayrollUk
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::PayrollUk
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
@@ -226,7 +226,7 @@ module XeroRuby::PayrollUk
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::PayrollUk
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::PayrollUk
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
@@ -196,7 +196,7 @@ module XeroRuby::PayrollUk
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::PayrollUk
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::PayrollUk
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
@@ -352,7 +352,7 @@ module XeroRuby::PayrollUk
352
352
  value = self.send(attr)
353
353
  next if value.nil?
354
354
  key = downcase ? attr : param
355
- hash[key] = _to_hash(value)
355
+ hash[key] = _to_hash(value, downcase: downcase)
356
356
  end
357
357
  hash
358
358
  end
@@ -366,15 +366,17 @@ module XeroRuby::PayrollUk
366
366
  # For object, use to_hash. Otherwise, just return the value
367
367
  # @param [Object] value Any valid value
368
368
  # @return [Hash] Returns the value in the form of hash
369
- def _to_hash(value)
369
+ def _to_hash(value, downcase: false)
370
370
  if value.is_a?(Array)
371
- value.compact.map { |v| _to_hash(v) }
371
+ value.map do |v|
372
+ v.to_hash(downcase: downcase)
373
+ end
372
374
  elsif value.is_a?(Hash)
373
375
  {}.tap do |hash|
374
- value.each { |k, v| hash[k] = _to_hash(v) }
376
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
375
377
  end
376
378
  elsif value.respond_to? :to_hash
377
- value.to_hash
379
+ value.to_hash(downcase: downcase)
378
380
  else
379
381
  value
380
382
  end
@@ -382,8 +384,12 @@ module XeroRuby::PayrollUk
382
384
 
383
385
  def parse_date(datestring)
384
386
  if datestring.include?('Date')
385
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
386
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
387
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
388
+ original, date, timezone = *date_pattern.match(datestring)
389
+ date = (date.to_i / 1000)
390
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
391
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
392
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
387
393
  else # handle date 'types' for small subset of payroll API's
388
394
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
389
395
  end