stockor 0.1.9 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (313) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +254 -72
  4. data/Guardfile +1 -1
  5. data/README.md +24 -3
  6. data/app.json +28 -0
  7. data/client/skr/Extension.coffee +18 -0
  8. data/client/skr/components/BankAccountFinder.cjsx +34 -0
  9. data/client/skr/components/Currency.cjsx +19 -0
  10. data/client/skr/components/CustomerFinder.cjsx +37 -0
  11. data/client/skr/components/CustomerLink.cjsx +13 -0
  12. data/client/skr/components/CustomerProjectFinder.cjsx +49 -0
  13. data/client/skr/components/GlAccountChooser.cjsx +38 -0
  14. data/client/skr/components/InvoiceFinder.cjsx +37 -0
  15. data/client/skr/components/InvoiceLink.cjsx +13 -0
  16. data/client/skr/components/LocationChooser.cjsx +37 -0
  17. data/client/skr/components/PaymentCategoryFinder.cjsx +34 -0
  18. data/client/skr/components/PrintFormChooser.cjsx +29 -0
  19. data/client/skr/components/SalesOrderFinder.cjsx +38 -0
  20. data/client/skr/components/ScreenControls.cjsx +20 -0
  21. data/client/skr/components/SkuFinder.cjsx +30 -0
  22. data/client/skr/components/SkuLines.cjsx +76 -0
  23. data/client/skr/components/SystemSettings.cjsx +26 -0
  24. data/client/skr/components/TermsChooser.cjsx +40 -0
  25. data/client/skr/components/ToolbarButton.cjsx +7 -0
  26. data/client/skr/components/TotalsLine.cjsx +21 -0
  27. data/client/skr/components/TriStateIcon.cjsx +12 -0
  28. data/client/skr/components/UOMChooser.cjsx +24 -0
  29. data/client/skr/components/UserPreferences.cjsx +30 -0
  30. data/client/skr/components/VendorFinder.cjsx +40 -0
  31. data/client/skr/components/address/Address.cjsx +10 -10
  32. data/client/skr/components/styles.scss +16 -0
  33. data/client/skr/index.js +3 -1
  34. data/client/skr/models/Address.coffee +9 -1
  35. data/client/skr/models/BankAccount.coffee +17 -0
  36. data/client/skr/models/Base.coffee +6 -0
  37. data/client/skr/models/Customer.coffee +17 -10
  38. data/client/skr/models/CustomerProject.coffee +29 -0
  39. data/client/skr/models/GlAccount.coffee +22 -10
  40. data/client/skr/models/GlManualEntry.coffee +4 -2
  41. data/client/skr/models/GlPeriod.coffee +4 -6
  42. data/client/skr/models/GlPosting.coffee +7 -7
  43. data/client/skr/models/GlTransaction.coffee +3 -3
  44. data/client/skr/models/IaLine.coffee +9 -9
  45. data/client/skr/models/IaReason.coffee +4 -4
  46. data/client/skr/models/InvLine.coffee +30 -11
  47. data/client/skr/models/InventoryAdjustment.coffee +8 -6
  48. data/client/skr/models/Invoice.coffee +89 -18
  49. data/client/skr/models/Location.coffee +27 -6
  50. data/client/skr/models/Payment.coffee +36 -0
  51. data/client/skr/models/PaymentCategory.coffee +12 -0
  52. data/client/skr/models/PaymentTerm.coffee +17 -4
  53. data/client/skr/models/PickTicket.coffee +7 -5
  54. data/client/skr/models/PoLine.coffee +15 -15
  55. data/client/skr/models/PoReceipt.coffee +8 -6
  56. data/client/skr/models/PorLine.coffee +11 -11
  57. data/client/skr/models/PricingProvider.coffee +6 -0
  58. data/client/skr/models/PtLine.coffee +13 -13
  59. data/client/skr/models/PurchaseOrder.coffee +11 -9
  60. data/client/skr/models/SalesOrder.coffee +59 -22
  61. data/client/skr/models/Sku.coffee +17 -15
  62. data/client/skr/models/SkuLoc.coffee +14 -9
  63. data/client/skr/models/SkuTran.coffee +10 -10
  64. data/client/skr/models/SkuVendor.coffee +9 -9
  65. data/client/skr/models/SoLine.coffee +27 -20
  66. data/client/skr/models/TimeEntry.coffee +75 -0
  67. data/client/skr/models/Uom.coffee +27 -6
  68. data/client/skr/models/Vendor.coffee +14 -12
  69. data/client/skr/models/VoLine.coffee +11 -11
  70. data/client/skr/models/Voucher.coffee +7 -5
  71. data/client/skr/models/mixins/HasVisibleId.coffee +7 -0
  72. data/client/skr/models/mixins/PrintSupport.coffee +6 -0
  73. data/client/skr/models/mixins/SkuLine.coffee +61 -0
  74. data/client/skr/screens/Commands.coffee +29 -0
  75. data/client/skr/screens/bank-maint/BankMaint.cjsx +43 -0
  76. data/client/skr/screens/bank-maint/index.js +5 -0
  77. data/client/skr/screens/chart-of-accounts/ChartOfAccounts.cjsx +40 -0
  78. data/client/skr/screens/chart-of-accounts/index.js +1 -0
  79. data/client/skr/screens/chart-of-accounts/index.scss +12 -0
  80. data/client/skr/screens/customer-maint/CustomerMaint.cjsx +35 -36
  81. data/client/skr/screens/customer-projects/CustomerProjects.cjsx +70 -0
  82. data/client/skr/screens/customer-projects/index.js +5 -0
  83. data/client/skr/screens/customer-projects/index.scss +25 -0
  84. data/client/skr/screens/fresh-books-import/ApiInfo.cjsx +35 -0
  85. data/client/skr/screens/fresh-books-import/ChooseRecords.cjsx +116 -0
  86. data/client/skr/screens/fresh-books-import/FreshBooksImport.cjsx +31 -0
  87. data/client/skr/screens/fresh-books-import/Import.coffee +52 -0
  88. data/client/skr/screens/fresh-books-import/ViewRecords.cjsx +96 -0
  89. data/client/skr/screens/fresh-books-import/index.js +1 -0
  90. data/client/skr/screens/fresh-books-import/index.scss +39 -0
  91. data/client/skr/screens/gl-accounts/GlAccounts.cjsx +31 -0
  92. data/client/skr/screens/gl-accounts/index.js +5 -0
  93. data/client/skr/screens/gl-transactions/GlTransactions.cjsx +46 -0
  94. data/client/skr/screens/gl-transactions/index.js +1 -0
  95. data/client/skr/screens/gl-transactions/index.scss +12 -0
  96. data/client/skr/screens/invoice/Invoice.cjsx +92 -0
  97. data/client/skr/screens/invoice/Payment.cjsx +28 -0
  98. data/client/skr/screens/invoice/index.js +5 -0
  99. data/client/skr/screens/locations/Locations.cjsx +31 -0
  100. data/client/skr/screens/locations/index.js +5 -0
  101. data/client/skr/screens/payment-category/PaymentCategory.cjsx +28 -0
  102. data/client/skr/screens/payment-category/index.js +5 -0
  103. data/client/skr/screens/payment-category/index.scss +9 -0
  104. data/client/skr/screens/payment-terms/PaymentTerms.cjsx +28 -0
  105. data/client/skr/screens/payment-terms/index.js +5 -0
  106. data/client/skr/screens/payment-terms/index.scss +9 -0
  107. data/client/skr/screens/payments/Payments.cjsx +59 -0
  108. data/client/skr/screens/payments/index.js +5 -0
  109. data/client/skr/screens/sales-order/SalesOrder.cjsx +68 -0
  110. data/client/skr/screens/sales-order/index.js +1 -5
  111. data/client/skr/screens/sku-maint/SkuMaint.cjsx +53 -0
  112. data/client/skr/screens/sku-maint/SkuUomList.cjsx +209 -0
  113. data/client/skr/screens/sku-maint/index.js +2 -5
  114. data/client/skr/screens/sku-maint/index.scss +37 -6
  115. data/client/skr/screens/time-invoicing/TimeInvoicing.cjsx +156 -0
  116. data/client/skr/screens/time-invoicing/index.js +5 -0
  117. data/client/skr/screens/time-invoicing/index.scss +7 -0
  118. data/client/skr/screens/time-tracking/EditEntry.cjsx +54 -0
  119. data/client/skr/screens/time-tracking/Entries.coffee +132 -0
  120. data/client/skr/screens/time-tracking/Header.cjsx +71 -0
  121. data/client/skr/screens/time-tracking/Popover.cjsx +70 -0
  122. data/client/skr/screens/time-tracking/PopoverMiniControls.cjsx +25 -0
  123. data/client/skr/screens/time-tracking/TimeTracking.cjsx +63 -0
  124. data/client/skr/screens/time-tracking/WeekSummary.cjsx +16 -0
  125. data/client/skr/screens/time-tracking/index.js +1 -0
  126. data/client/skr/screens/time-tracking/index.scss +126 -0
  127. data/client/skr/screens/vendor-maint/VendorMaint.cjsx +45 -0
  128. data/client/skr/screens/vendor-maint/index.js +1 -5
  129. data/client/skr/styles.scss +1 -13
  130. data/config/puma.rb +4 -0
  131. data/config/routes.rb +21 -9
  132. data/config/screens.rb +147 -32
  133. data/db/migrate/20140202194700_create_skr_gl_transaction_details.rb +35 -0
  134. data/db/migrate/20140220031800_create_skr_locations.rb +2 -0
  135. data/db/migrate/20140220190836_create_skr_vendors.rb +1 -0
  136. data/db/migrate/20140220203029_create_skr_customers.rb +3 -2
  137. data/db/migrate/20140224034759_create_skr_skus.rb +2 -3
  138. data/db/migrate/20140322223912_create_skr_sales_orders.rb +4 -3
  139. data/db/migrate/20140322223920_create_skr_so_lines.rb +4 -5
  140. data/db/migrate/20140323001446_create_so_details_view.rb +7 -5
  141. data/db/migrate/20140327202209_create_skr_pt_lines.rb +2 -2
  142. data/db/migrate/20140327214000_create_customer_project.rb +16 -0
  143. data/db/migrate/20140327223002_create_time_entries.rb +17 -0
  144. data/db/migrate/20140327224000_create_skr_invoices.rb +5 -1
  145. data/db/migrate/20140327224002_create_skr_inv_lines.rb +3 -1
  146. data/db/migrate/20140422024010_create_skr_inv_details_view.rb +1 -1
  147. data/db/migrate/20151121211323_create_customer_project_details_views.rb +31 -0
  148. data/db/migrate/20160216142845_create_gl_account_balances_view.rb +20 -0
  149. data/db/migrate/20160229002044_create_bank_accounts.rb +18 -0
  150. data/db/migrate/20160229041711_create_payments.rb +33 -0
  151. data/db/migrate/20160307022705_create_create_combined_uom_views.rb +18 -0
  152. data/db/schema.sql +639 -140
  153. data/db/seed/chart_of_accounts.yml +8 -6
  154. data/db/seed/payment_categories.yml +12 -0
  155. data/db/seed/skus.yml +32 -0
  156. data/db/seed.rb +21 -0
  157. data/lib/skr/access_roles.rb +19 -6
  158. data/lib/skr/concerns/has_sku_loc_lines.rb +0 -16
  159. data/lib/skr/concerns/inv_extensions.rb +24 -0
  160. data/lib/skr/concerns/is_sku_loc_line.rb +3 -4
  161. data/lib/skr/concerns/so_extensions.rb +8 -0
  162. data/lib/skr/concerns/visible_id_identifier.rb +1 -1
  163. data/lib/skr/db/migration_helpers.rb +2 -4
  164. data/lib/skr/extension.rb +11 -4
  165. data/lib/skr/handlers/fresh_books_import.rb +20 -0
  166. data/lib/skr/handlers/invoice_from_time_entries.rb +49 -0
  167. data/lib/skr/jobs/fresh_books/base.rb +54 -0
  168. data/lib/skr/jobs/fresh_books/import.rb +151 -0
  169. data/lib/skr/jobs/fresh_books/retrieve.rb +62 -0
  170. data/lib/skr/model.rb +5 -0
  171. data/lib/skr/models/address.rb +1 -1
  172. data/lib/skr/models/bank_account.rb +13 -0
  173. data/lib/skr/models/business_entity.rb +3 -0
  174. data/lib/skr/models/customer.rb +1 -1
  175. data/lib/skr/models/customer_project.rb +22 -0
  176. data/lib/skr/models/gl_account.rb +13 -3
  177. data/lib/skr/models/gl_period.rb +6 -0
  178. data/lib/skr/models/gl_posting.rb +7 -4
  179. data/lib/skr/models/gl_transaction.rb +19 -33
  180. data/lib/skr/models/ia_line.rb +1 -1
  181. data/lib/skr/models/inv_line.rb +33 -15
  182. data/lib/skr/models/invoice.rb +47 -20
  183. data/lib/skr/models/location.rb +7 -1
  184. data/lib/skr/models/payment.rb +49 -0
  185. data/lib/skr/models/payment_category.rb +11 -0
  186. data/lib/skr/models/payment_term.rb +1 -1
  187. data/lib/skr/models/por_line.rb +1 -1
  188. data/lib/skr/models/pt_line.rb +1 -1
  189. data/lib/skr/models/sales_order.rb +9 -9
  190. data/lib/skr/models/sku_loc.rb +1 -1
  191. data/lib/skr/models/sku_tran.rb +6 -11
  192. data/lib/skr/models/so_line.rb +22 -12
  193. data/lib/skr/models/time_entry.rb +36 -0
  194. data/lib/skr/models/uom.rb +11 -10
  195. data/lib/skr/models/user_proxy.rb +1 -1
  196. data/lib/skr/number.rb +25 -0
  197. data/lib/skr/print/form.rb +46 -0
  198. data/lib/skr/print/template.rb +48 -0
  199. data/lib/skr/print.rb +11 -0
  200. data/lib/skr/string.rb +11 -0
  201. data/lib/skr/version.rb +1 -1
  202. data/lib/skr.rb +9 -0
  203. data/spec/fixtures/skr/address.yml +164 -4
  204. data/spec/fixtures/skr/bank_account.yml +8 -0
  205. data/spec/fixtures/skr/customer.yml +30 -4
  206. data/spec/fixtures/skr/customer_project.yml +20 -0
  207. data/spec/fixtures/skr/gl_account.yml +19 -1
  208. data/spec/fixtures/skr/gl_period.yml +3 -0
  209. data/spec/fixtures/skr/gl_posting.yml +22 -1
  210. data/spec/fixtures/skr/gl_transaction.yml +4 -1
  211. data/spec/fixtures/skr/inv_line.yml +35 -0
  212. data/spec/fixtures/skr/invoice.yml +13 -2
  213. data/spec/fixtures/skr/location.yml +5 -0
  214. data/spec/fixtures/skr/payment.yml +10 -0
  215. data/spec/fixtures/skr/payment_category.yml +8 -0
  216. data/spec/fixtures/skr/payment_term.yml +37 -3
  217. data/spec/fixtures/skr/sales_order.yml +12 -1
  218. data/spec/fixtures/skr/sku.yml +78 -1
  219. data/spec/fixtures/skr/sku_loc.yml +42 -1
  220. data/spec/fixtures/skr/sku_tran.yml +24 -1
  221. data/spec/fixtures/skr/so_line.yml +32 -0
  222. data/spec/fixtures/skr/time_entry.yml +82 -0
  223. data/spec/fixtures/skr/uom.yml +52 -1
  224. data/spec/fixtures/skr/vendor.yml +28 -1
  225. data/spec/fixtures/stockor.png +0 -0
  226. data/spec/server/bank_account_spec.rb +10 -0
  227. data/spec/server/customer_project_spec.rb +10 -0
  228. data/spec/server/handlers/invoice_from_time_entries_spec.rb +49 -0
  229. data/spec/server/jobs/fresh_books/import_spec.rb +69 -0
  230. data/spec/server/jobs/fresh_books/retrieve_spec.rb +37 -0
  231. data/spec/server/models/address_spec.rb +4 -3
  232. data/spec/server/models/gl_transaction_spec.rb +3 -3
  233. data/spec/server/models/inv_line_spec.rb +83 -3
  234. data/spec/server/models/invoice_spec.rb +32 -3
  235. data/spec/server/models/payment_spec.rb +40 -0
  236. data/spec/server/models/sales_order_spec.rb +1 -1
  237. data/spec/server/models/so_line_spec.rb +3 -3
  238. data/spec/server/models/spec_helper_spec.rb +1 -1
  239. data/spec/server/payment_spec.rb +10 -0
  240. data/spec/server/print/form_spec.rb +47 -0
  241. data/spec/server/print/template_spec.rb +36 -0
  242. data/spec/server/spec_helper.rb +14 -1
  243. data/spec/server/time_entry_spec.rb +10 -0
  244. data/spec/skr/components/SkuLinesSpec.coffee +61 -0
  245. data/spec/skr/models/BankAccountSpec.coffee +5 -0
  246. data/spec/skr/models/CustomerProjectSpec.coffee +5 -0
  247. data/spec/skr/models/CustomerSpec.coffee +2 -2
  248. data/spec/skr/models/PaymentSpec.coffee +5 -0
  249. data/spec/skr/models/SalesOrderSpec.coffee +21 -5
  250. data/spec/skr/models/SoLineSpec.coffee +7 -2
  251. data/spec/skr/models/TimeEntrySpec.coffee +5 -0
  252. data/spec/skr/screens/bank-maint/BankMaintSpec.coffee +5 -0
  253. data/spec/skr/screens/customer-projects/CustomerProjectsSpec.coffee +5 -0
  254. data/spec/skr/screens/fresh-books-import/FreshBooksImportSpec.coffee +1 -0
  255. data/spec/skr/screens/gl-accounts/GlAccountsSpec.coffee +5 -0
  256. data/spec/skr/screens/invoice/InvoiceSpec.coffee +5 -0
  257. data/spec/skr/screens/locations/LocationsSpec.coffee +5 -0
  258. data/spec/skr/screens/payment-category/PaymentCategorySpec.coffee +5 -0
  259. data/spec/skr/screens/payment-terms/PaymentTermsSpec.coffee +5 -0
  260. data/spec/skr/screens/payments/PaymentsSpec.coffee +5 -0
  261. data/spec/skr/screens/time-invoicing/TimeInvoicingSpec.coffee +5 -0
  262. data/spec/skr/screens/time-tracking/TimeTrackingSpec.coffee +14 -0
  263. data/spec/vcr/freshbooks.yml +698 -0
  264. data/stockor.gemspec +5 -1
  265. data/templates/print/fonts/GnuMICR.otf +0 -0
  266. data/templates/print/layout.tex.erb +39 -0
  267. data/templates/print/packages/booktabs.sty +182 -0
  268. data/templates/print/packages/fancybox.sty +966 -0
  269. data/templates/print/packages/fancyhdr.sty +485 -0
  270. data/templates/print/packages/graphbox.sty +129 -0
  271. data/templates/print/packages/lastpage.sty +283 -0
  272. data/templates/print/packages/lastpage209.sty +70 -0
  273. data/templates/print/packages/marginnote.sty +412 -0
  274. data/templates/print/packages/multirow.sty +159 -0
  275. data/templates/print/packages/rotating.sty +282 -0
  276. data/templates/print/packages/tabu.sty +2557 -0
  277. data/templates/print/packages/textpos.sty +361 -0
  278. data/templates/print/packages/varwidth.sty +318 -0
  279. data/templates/print/partials/address.tex.erb +6 -0
  280. data/templates/print/partials/bill_to_ship_to.tex.erb +13 -0
  281. data/templates/print/partials/header.tex.erb +13 -0
  282. data/templates/print/partials/invoice_paid_state.tex.erb +2 -0
  283. data/templates/print/partials/old/inv_lines_grouping.tex.erb +8 -0
  284. data/templates/print/partials/old/labor_lines_footer.tex.erb +18 -0
  285. data/templates/print/partials/skus_table.tex.erb +32 -0
  286. data/templates/print/partials/skus_table_col_hdr.tex.erb +8 -0
  287. data/templates/print/partials/skus_table_footer.tex.erb +5 -0
  288. data/templates/print/partials/skus_table_group_footer.tex.erb +4 -0
  289. data/templates/print/partials/skus_table_invoice_footer.tex.erb +25 -0
  290. data/templates/print/partials/skus_table_invoice_info_line.tex.erb +16 -0
  291. data/templates/print/partials/skus_table_labor_col_hdr.tex.erb +8 -0
  292. data/templates/print/partials/skus_table_labor_group_footer.tex.erb +7 -0
  293. data/templates/print/partials/skus_table_labor_line.tex.erb +11 -0
  294. data/templates/print/partials/skus_table_line.tex.erb +6 -0
  295. data/templates/print/partials/skus_table_other_charge_lines.tex.erb +7 -0
  296. data/templates/print/partials/so_info_line.tex.erb +14 -0
  297. data/templates/print/types/invoice/default.tex.erb +13 -0
  298. data/templates/print/types/invoice/labor.tex.erb +33 -0
  299. data/templates/print/types/payment/default.tex.erb +64 -0
  300. data/templates/print/types/sales-order/default.tex.erb +8 -0
  301. metadata +252 -15
  302. data/client/skr/components/address/address.html +0 -20
  303. data/client/skr/models/mixins/CodeField.coffee +0 -5
  304. data/client/skr/screens/customer-maint/index.scss +0 -11
  305. data/client/skr/screens/customer-maint/layout.html +0 -32
  306. data/client/skr/screens/sales-order/SalesOrder.coffee +0 -30
  307. data/client/skr/screens/sales-order/index.scss +0 -8
  308. data/client/skr/screens/sales-order/layout.html +0 -30
  309. data/client/skr/screens/sku-maint/SkuMaint.coffee +0 -18
  310. data/client/skr/screens/sku-maint/layout.html +0 -16
  311. data/client/skr/screens/vendor-maint/VendorMaint.coffee +0 -28
  312. data/client/skr/screens/vendor-maint/index.scss +0 -8
  313. data/client/skr/screens/vendor-maint/layout.html +0 -32
@@ -0,0 +1,698 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://ba6642fa8d9b99e113ce0e5a1bf66de0:X@testermctest-billing.freshbooks.com/api/2.1/xml-in
6
+ body:
7
+ encoding: UTF-8
8
+ string: |
9
+ <?xml version="1.0" encoding="utf-8"?>
10
+ <request method="staff.list">
11
+ <per_page>25</per_page>
12
+ <page>1</page>
13
+ </request>
14
+ headers: {}
15
+ response:
16
+ status:
17
+ code: 200
18
+ message: OK
19
+ headers:
20
+ Server:
21
+ - nginx
22
+ Date:
23
+ - Sun, 14 Feb 2016 03:03:08 GMT
24
+ Content-Type:
25
+ - application/xml; charset=utf-8
26
+ Content-Length:
27
+ - '1070'
28
+ Connection:
29
+ - keep-alive
30
+ Vary:
31
+ - Accept-Encoding
32
+ X-Frame-Options:
33
+ - SAMEORIGIN
34
+ P3p:
35
+ - 'CP="FreshBooks does not have a P3P policy. To see our privacy policy, go
36
+ here: http://www.freshbooks.com/policies/privacy"'
37
+ Strict-Transport-Security:
38
+ - max-age=31536000
39
+ body:
40
+ encoding: UTF-8
41
+ string: |
42
+ <?xml version="1.0" encoding="utf-8"?>
43
+ <response xmlns="http://www.freshbooks.com/api/" status="ok">
44
+ <staff_members page="1" per_page="25" pages="1" total="1">
45
+ <member>
46
+ <username>testermctest@argosity.com</username>
47
+ <first_name>Testing</first_name>
48
+ <last_name>Tester</last_name>
49
+ <email>testermctest@argosity.com</email>
50
+ <business_phone></business_phone>
51
+ <mobile_phone></mobile_phone>
52
+ <home_phone></home_phone>
53
+ <fax></fax>
54
+ <rate></rate>
55
+ <last_login>2016-01-30 13:50:33</last_login>
56
+ <number_of_logins>4</number_of_logins>
57
+ <signup_date>2016-01-26 10:27:04</signup_date>
58
+ <street1></street1>
59
+ <street2></street2>
60
+ <city></city>
61
+ <state></state>
62
+ <country></country>
63
+ <code></code>
64
+ <notes></notes>
65
+ <projects>
66
+ <project>
67
+ <project_id>2020</project_id>
68
+ </project>
69
+ <project>
70
+ <project_id>2022</project_id>
71
+ </project>
72
+ </projects>
73
+ <staff_id>1</staff_id>
74
+ </member>
75
+ </staff_members>
76
+ </response>
77
+ http_version:
78
+ recorded_at: Sun, 14 Feb 2016 03:03:08 GMT
79
+ - request:
80
+ method: post
81
+ uri: https://ba6642fa8d9b99e113ce0e5a1bf66de0:X@testermctest-billing.freshbooks.com/api/2.1/xml-in
82
+ body:
83
+ encoding: UTF-8
84
+ string: |
85
+ <?xml version="1.0" encoding="utf-8"?>
86
+ <request method="client.list">
87
+ <per_page>25</per_page>
88
+ <page>1</page>
89
+ </request>
90
+ headers: {}
91
+ response:
92
+ status:
93
+ code: 200
94
+ message: OK
95
+ headers:
96
+ Server:
97
+ - nginx
98
+ Date:
99
+ - Sun, 14 Feb 2016 03:03:09 GMT
100
+ Content-Type:
101
+ - application/xml; charset=utf-8
102
+ Content-Length:
103
+ - '5271'
104
+ Connection:
105
+ - keep-alive
106
+ Vary:
107
+ - Accept-Encoding
108
+ X-Frame-Options:
109
+ - SAMEORIGIN
110
+ P3p:
111
+ - 'CP="FreshBooks does not have a P3P policy. To see our privacy policy, go
112
+ here: http://www.freshbooks.com/policies/privacy"'
113
+ Strict-Transport-Security:
114
+ - max-age=31536000
115
+ body:
116
+ encoding: UTF-8
117
+ string: |
118
+ <?xml version="1.0" encoding="utf-8"?>
119
+ <response xmlns="http://www.freshbooks.com/api/" status="ok">
120
+ <clients page="1" per_page="25" pages="1" total="3">
121
+ <client>
122
+ <client_id>27454</client_id>
123
+ <first_name></first_name>
124
+ <last_name></last_name>
125
+ <email>testermctest-3@argosity.com</email>
126
+ <username>khBDc4RWv8</username>
127
+ <home_phone></home_phone>
128
+ <mobile></mobile>
129
+ <contacts/>
130
+ <organization>ClientThree</organization>
131
+ <work_phone></work_phone>
132
+ <fax></fax>
133
+ <vat_name>False</vat_name>
134
+ <vat_number></vat_number>
135
+ <p_street1></p_street1>
136
+ <p_street2></p_street2>
137
+ <p_city></p_city>
138
+ <p_state></p_state>
139
+ <p_country></p_country>
140
+ <p_code></p_code>
141
+ <s_street1></s_street1>
142
+ <s_street2></s_street2>
143
+ <s_city></s_city>
144
+ <s_state></s_state>
145
+ <s_country></s_country>
146
+ <s_code></s_code>
147
+ <notes></notes>
148
+ <language>en</language>
149
+ <currency_code>USD</currency_code>
150
+ <folder>active</folder>
151
+ <updated>2016-01-29 23:12:07</updated>
152
+ <credits>
153
+ <credit currency="USD">0</credit>
154
+ </credits>
155
+ <credit currency="USD" deprecated="true">0</credit>
156
+ <url deprecated="true">https://testermctest-billing.freshbooks.com/view/x5e2EzVUMXiefdR</url>
157
+ <auth_url deprecated="true">https://testermctest-billing.freshbooks.com/clients/27454</auth_url>
158
+ <links>
159
+ <client_view>https://testermctest-billing.freshbooks.com/view/x5e2EzVUMXiefdR</client_view>
160
+ <view>https://testermctest-billing.freshbooks.com/clients/27454</view>
161
+ <statement>https://testermctest-billing.freshbooks.com/view/Vpgj8gjUTfccrVk</statement>
162
+ </links>
163
+ <notifications>
164
+ <late_payment_reminders>1</late_payment_reminders>
165
+ </notifications>
166
+ </client>
167
+ <client>
168
+ <client_id>15578</client_id>
169
+ <first_name>Client</first_name>
170
+ <last_name>Two</last_name>
171
+ <email>testermctest+client2@argosity.com</email>
172
+ <username>clienttwo</username>
173
+ <home_phone></home_phone>
174
+ <mobile></mobile>
175
+ <contacts/>
176
+ <organization>Organization Two</organization>
177
+ <work_phone></work_phone>
178
+ <fax></fax>
179
+ <vat_name></vat_name>
180
+ <vat_number></vat_number>
181
+ <p_street1></p_street1>
182
+ <p_street2></p_street2>
183
+ <p_city></p_city>
184
+ <p_state></p_state>
185
+ <p_country></p_country>
186
+ <p_code></p_code>
187
+ <s_street1></s_street1>
188
+ <s_street2></s_street2>
189
+ <s_city></s_city>
190
+ <s_state></s_state>
191
+ <s_country></s_country>
192
+ <s_code></s_code>
193
+ <notes></notes>
194
+ <language>en</language>
195
+ <currency_code>USD</currency_code>
196
+ <folder>active</folder>
197
+ <updated>2016-01-26 15:55:57</updated>
198
+ <credits>
199
+ <credit currency="USD">0</credit>
200
+ </credits>
201
+ <credit currency="USD" deprecated="true">0</credit>
202
+ <url deprecated="true">https://testermctest-billing.freshbooks.com/view/uCZvQ3qcsyJu5CN</url>
203
+ <auth_url deprecated="true">https://testermctest-billing.freshbooks.com/clients/15578</auth_url>
204
+ <links>
205
+ <client_view>https://testermctest-billing.freshbooks.com/view/uCZvQ3qcsyJu5CN</client_view>
206
+ <view>https://testermctest-billing.freshbooks.com/clients/15578</view>
207
+ <statement>https://testermctest-billing.freshbooks.com/view/9Q8GvWWjWyrWjWy</statement>
208
+ </links>
209
+ <notifications>
210
+ <late_payment_reminders>1</late_payment_reminders>
211
+ </notifications>
212
+ </client>
213
+ <client>
214
+ <client_id>14694</client_id>
215
+ <first_name>Client</first_name>
216
+ <last_name>One</last_name>
217
+ <email>testermctest+client1@argosity.com</email>
218
+ <username>clientone</username>
219
+ <home_phone></home_phone>
220
+ <mobile></mobile>
221
+ <contacts/>
222
+ <organization>Organization One</organization>
223
+ <work_phone></work_phone>
224
+ <fax></fax>
225
+ <vat_name></vat_name>
226
+ <vat_number></vat_number>
227
+ <p_street1></p_street1>
228
+ <p_street2></p_street2>
229
+ <p_city></p_city>
230
+ <p_state></p_state>
231
+ <p_country></p_country>
232
+ <p_code></p_code>
233
+ <s_street1></s_street1>
234
+ <s_street2></s_street2>
235
+ <s_city></s_city>
236
+ <s_state></s_state>
237
+ <s_country></s_country>
238
+ <s_code></s_code>
239
+ <notes></notes>
240
+ <language>en</language>
241
+ <currency_code>USD</currency_code>
242
+ <folder>active</folder>
243
+ <updated>2016-01-30 17:27:31</updated>
244
+ <credits>
245
+ <credit currency="USD">0</credit>
246
+ </credits>
247
+ <credit currency="USD" deprecated="true">0</credit>
248
+ <url deprecated="true">https://testermctest-billing.freshbooks.com/view/WCiyQr5mFsrtXhh</url>
249
+ <auth_url deprecated="true">https://testermctest-billing.freshbooks.com/clients/14694</auth_url>
250
+ <links>
251
+ <client_view>https://testermctest-billing.freshbooks.com/view/WCiyQr5mFsrtXhh</client_view>
252
+ <view>https://testermctest-billing.freshbooks.com/clients/14694</view>
253
+ <statement>https://testermctest-billing.freshbooks.com/view/3byqhHEC46HFW6Kz</statement>
254
+ </links>
255
+ <notifications>
256
+ <late_payment_reminders>1</late_payment_reminders>
257
+ </notifications>
258
+ </client>
259
+ </clients>
260
+ </response>
261
+ http_version:
262
+ recorded_at: Sun, 14 Feb 2016 03:03:09 GMT
263
+ - request:
264
+ method: post
265
+ uri: https://ba6642fa8d9b99e113ce0e5a1bf66de0:X@testermctest-billing.freshbooks.com/api/2.1/xml-in
266
+ body:
267
+ encoding: UTF-8
268
+ string: |
269
+ <?xml version="1.0" encoding="utf-8"?>
270
+ <request method="project.list">
271
+ <per_page>25</per_page>
272
+ <page>1</page>
273
+ </request>
274
+ headers: {}
275
+ response:
276
+ status:
277
+ code: 200
278
+ message: OK
279
+ headers:
280
+ Server:
281
+ - nginx
282
+ Date:
283
+ - Sun, 14 Feb 2016 03:03:09 GMT
284
+ Content-Type:
285
+ - application/xml; charset=utf-8
286
+ Content-Length:
287
+ - '1553'
288
+ Connection:
289
+ - keep-alive
290
+ Vary:
291
+ - Accept-Encoding
292
+ X-Frame-Options:
293
+ - SAMEORIGIN
294
+ P3p:
295
+ - 'CP="FreshBooks does not have a P3P policy. To see our privacy policy, go
296
+ here: http://www.freshbooks.com/policies/privacy"'
297
+ Strict-Transport-Security:
298
+ - max-age=31536000
299
+ body:
300
+ encoding: UTF-8
301
+ string: |
302
+ <?xml version="1.0" encoding="utf-8"?>
303
+ <response xmlns="http://www.freshbooks.com/api/" status="ok">
304
+ <projects page="1" per_page="25" pages="1" total="2">
305
+ <project>
306
+ <project_id>2020</project_id>
307
+ <name>Project1</name>
308
+ <description></description>
309
+ <rate></rate>
310
+ <bill_method>staff-rate</bill_method>
311
+ <client_id>14694</client_id>
312
+ <project_manager_id>1</project_manager_id>
313
+ <external>0</external>
314
+ <tasks>
315
+ <task>
316
+ <task_id>44612</task_id>
317
+ <rate></rate>
318
+ </task>
319
+ </tasks>
320
+ <staff>
321
+ <staff>
322
+ <staff_id>1</staff_id>
323
+ </staff>
324
+ </staff>
325
+ <contractors/>
326
+ <budget>
327
+ <hours>0</hours>
328
+ </budget>
329
+ </project>
330
+ <project>
331
+ <project_id>2022</project_id>
332
+ <name>Project2</name>
333
+ <description></description>
334
+ <rate></rate>
335
+ <bill_method>staff-rate</bill_method>
336
+ <client_id>14694</client_id>
337
+ <project_manager_id>1</project_manager_id>
338
+ <external>0</external>
339
+ <tasks>
340
+ <task>
341
+ <task_id>44612</task_id>
342
+ <rate></rate>
343
+ </task>
344
+ <task>
345
+ <task_id>44613</task_id>
346
+ <rate></rate>
347
+ </task>
348
+ <task>
349
+ <task_id>44614</task_id>
350
+ <rate></rate>
351
+ </task>
352
+ </tasks>
353
+ <staff>
354
+ <staff>
355
+ <staff_id>1</staff_id>
356
+ </staff>
357
+ </staff>
358
+ <contractors/>
359
+ <budget>
360
+ <hours>0</hours>
361
+ </budget>
362
+ </project>
363
+ </projects>
364
+ </response>
365
+ http_version:
366
+ recorded_at: Sun, 14 Feb 2016 03:03:09 GMT
367
+ - request:
368
+ method: post
369
+ uri: https://ba6642fa8d9b99e113ce0e5a1bf66de0:X@testermctest-billing.freshbooks.com/api/2.1/xml-in
370
+ body:
371
+ encoding: UTF-8
372
+ string: |
373
+ <?xml version="1.0" encoding="utf-8"?>
374
+ <request method="time_entry.list">
375
+ <per_page>25</per_page>
376
+ <page>1</page>
377
+ </request>
378
+ headers: {}
379
+ response:
380
+ status:
381
+ code: 200
382
+ message: OK
383
+ headers:
384
+ Server:
385
+ - nginx
386
+ Date:
387
+ - Sun, 14 Feb 2016 03:03:10 GMT
388
+ Content-Type:
389
+ - application/xml; charset=utf-8
390
+ Content-Length:
391
+ - '2701'
392
+ Connection:
393
+ - keep-alive
394
+ Vary:
395
+ - Accept-Encoding
396
+ X-Frame-Options:
397
+ - SAMEORIGIN
398
+ P3p:
399
+ - 'CP="FreshBooks does not have a P3P policy. To see our privacy policy, go
400
+ here: http://www.freshbooks.com/policies/privacy"'
401
+ Strict-Transport-Security:
402
+ - max-age=31536000
403
+ body:
404
+ encoding: UTF-8
405
+ string: |
406
+ <?xml version="1.0" encoding="utf-8"?>
407
+ <response xmlns="http://www.freshbooks.com/api/" status="ok">
408
+ <time_entries page="1" per_page="25" pages="1" total="7">
409
+ <time_entry>
410
+ <time_entry_id>7293</time_entry_id>
411
+ <staff_id>1</staff_id>
412
+ <project_id>2020</project_id>
413
+ <task_id>44612</task_id>
414
+ <hours>8</hours>
415
+ <date>2016-01-13</date>
416
+ <notes>FTP program is down, calculate the virtual transmitter so we can reboot the CSS panel</notes>
417
+ <billed>0</billed>
418
+ </time_entry>
419
+ <time_entry>
420
+ <time_entry_id>7292</time_entry_id>
421
+ <staff_id>1</staff_id>
422
+ <project_id>2022</project_id>
423
+ <task_id>44613</task_id>
424
+ <hours>2.8</hours>
425
+ <date>2016-01-07</date>
426
+ <notes>Use the redundant RSS feed, then you can reboot the haptic bus!</notes>
427
+ <billed>0</billed>
428
+ </time_entry>
429
+ <time_entry>
430
+ <time_entry_id>2434</time_entry_id>
431
+ <staff_id>1</staff_id>
432
+ <project_id>2020</project_id>
433
+ <task_id>44612</task_id>
434
+ <hours>8.75</hours>
435
+ <date>2016-01-06</date>
436
+ <notes>Try to compress the TCP array, maybe it will compress the back-end transmitter!</notes>
437
+ <billed>1</billed>
438
+ </time_entry>
439
+ <time_entry>
440
+ <time_entry_id>2433</time_entry_id>
441
+ <staff_id>1</staff_id>
442
+ <project_id>2020</project_id>
443
+ <task_id>44612</task_id>
444
+ <hours>8</hours>
445
+ <date>2016-01-05</date>
446
+ <notes>Use the bluetooth FTP firewall, then you can synthesize the open-source hard drive!</notes>
447
+ <billed>1</billed>
448
+ </time_entry>
449
+ <time_entry>
450
+ <time_entry_id>2432</time_entry_id>
451
+ <staff_id>1</staff_id>
452
+ <project_id>2020</project_id>
453
+ <task_id>44612</task_id>
454
+ <hours>8</hours>
455
+ <date>2016-01-04</date>
456
+ <notes>Transmit the haptic COM hard drive. Synthesize the transmitter, we can get to the EXE interface through the virtual AI sensor!"</notes>
457
+ <billed>0</billed>
458
+ </time_entry>
459
+ <time_entry>
460
+ <time_entry_id>2431</time_entry_id>
461
+ <staff_id>1</staff_id>
462
+ <project_id>2020</project_id>
463
+ <task_id>44612</task_id>
464
+ <hours>12</hours>
465
+ <date>2016-01-02</date>
466
+ <notes>The AI sensor is down, index the 1080p driver so we can bypass the PNG program!</notes>
467
+ <billed>1</billed>
468
+ </time_entry>
469
+ <time_entry>
470
+ <time_entry_id>2430</time_entry_id>
471
+ <staff_id>1</staff_id>
472
+ <project_id>2020</project_id>
473
+ <task_id>44612</task_id>
474
+ <hours>5</hours>
475
+ <date>2016-01-01</date>
476
+ <notes>hacking the alarm won't do anything, we need to back up the online IB driver!</notes>
477
+ <billed>0</billed>
478
+ </time_entry>
479
+ </time_entries>
480
+ </response>
481
+ http_version:
482
+ recorded_at: Sun, 14 Feb 2016 03:03:10 GMT
483
+ - request:
484
+ method: post
485
+ uri: https://ba6642fa8d9b99e113ce0e5a1bf66de0:X@testermctest-billing.freshbooks.com/api/2.1/xml-in
486
+ body:
487
+ encoding: UTF-8
488
+ string: |
489
+ <?xml version="1.0" encoding="utf-8"?>
490
+ <request method="invoice.list">
491
+ <per_page>25</per_page>
492
+ <page>1</page>
493
+ </request>
494
+ headers: {}
495
+ response:
496
+ status:
497
+ code: 200
498
+ message: OK
499
+ headers:
500
+ Server:
501
+ - nginx
502
+ Date:
503
+ - Sun, 14 Feb 2016 03:03:10 GMT
504
+ Content-Type:
505
+ - application/xml; charset=utf-8
506
+ Content-Length:
507
+ - '6084'
508
+ Connection:
509
+ - keep-alive
510
+ Vary:
511
+ - Accept-Encoding
512
+ X-Frame-Options:
513
+ - SAMEORIGIN
514
+ P3p:
515
+ - 'CP="FreshBooks does not have a P3P policy. To see our privacy policy, go
516
+ here: http://www.freshbooks.com/policies/privacy"'
517
+ Strict-Transport-Security:
518
+ - max-age=31536000
519
+ body:
520
+ encoding: UTF-8
521
+ string: |
522
+ <?xml version="1.0" encoding="utf-8"?>
523
+ <response xmlns="http://www.freshbooks.com/api/" status="ok">
524
+ <invoices page="1" per_page="25" pages="1" total="1">
525
+ <invoice>
526
+ <invoice_id>00000010789</invoice_id>
527
+ <estimate_id></estimate_id>
528
+ <number>0000001</number>
529
+ <client_id>14694</client_id>
530
+ <contacts>
531
+ <contact>
532
+ <contact_id>0</contact_id>
533
+ </contact>
534
+ </contacts>
535
+ <recurring_id></recurring_id>
536
+ <organization>Organization One</organization>
537
+ <first_name>Client</first_name>
538
+ <last_name>One</last_name>
539
+ <p_street1></p_street1>
540
+ <p_street2></p_street2>
541
+ <p_city></p_city>
542
+ <p_state></p_state>
543
+ <p_country></p_country>
544
+ <p_code></p_code>
545
+ <po_number></po_number>
546
+ <status>paid</status>
547
+ <amount>2198.75</amount>
548
+ <amount_outstanding>0.00</amount_outstanding>
549
+ <paid>2198.75</paid>
550
+ <date>2016-01-26 00:00:00</date>
551
+ <notes></notes>
552
+ <terms></terms>
553
+ <discount>0</discount>
554
+ <return_uri></return_uri>
555
+ <created_at>2016-01-26 16:20:18</created_at>
556
+ <updated>2016-01-30 17:27:30</updated>
557
+ <currency_code>USD</currency_code>
558
+ <language>en</language>
559
+ <vat_name></vat_name>
560
+ <vat_number></vat_number>
561
+ <folder>active</folder>
562
+ <staff_id>1</staff_id>
563
+ <lines>
564
+ <line>
565
+ <line_id>1</line_id>
566
+ <order>1</order>
567
+ <name></name>
568
+ <description></description>
569
+ <unit_cost>0.00</unit_cost>
570
+ <quantity>0</quantity>
571
+ <amount>0.00</amount>
572
+ <tax1_name></tax1_name>
573
+ <tax2_name></tax2_name>
574
+ <tax1_percent>0</tax1_percent>
575
+ <tax2_percent>0</tax2_percent>
576
+ <compound_tax>0</compound_tax>
577
+ <type>Time</type>
578
+ </line>
579
+ <line>
580
+ <line_id>2</line_id>
581
+ <order>2</order>
582
+ <name></name>
583
+ <description></description>
584
+ <unit_cost>0.00</unit_cost>
585
+ <quantity>0</quantity>
586
+ <amount>0.00</amount>
587
+ <tax1_name></tax1_name>
588
+ <tax2_name></tax2_name>
589
+ <tax1_percent>0</tax1_percent>
590
+ <tax2_percent>0</tax2_percent>
591
+ <compound_tax>0</compound_tax>
592
+ <type>Time</type>
593
+ </line>
594
+ <line>
595
+ <line_id>3</line_id>
596
+ <order>3</order>
597
+ <name></name>
598
+ <description></description>
599
+ <unit_cost>0.00</unit_cost>
600
+ <quantity>0</quantity>
601
+ <amount>0.00</amount>
602
+ <tax1_name></tax1_name>
603
+ <tax2_name></tax2_name>
604
+ <tax1_percent>0</tax1_percent>
605
+ <tax2_percent>0</tax2_percent>
606
+ <compound_tax>0</compound_tax>
607
+ <type>Time</type>
608
+ </line>
609
+ <line>
610
+ <line_id>4</line_id>
611
+ <order>4</order>
612
+ <name>General</name>
613
+ <description>[Project1 01/02/16] Testing Tester: The AI sensor is down, index the 1080p driver so we can bypass the PNG program!</description>
614
+ <unit_cost>85.00</unit_cost>
615
+ <quantity>12</quantity>
616
+ <amount>1020.00</amount>
617
+ <tax1_name></tax1_name>
618
+ <tax2_name></tax2_name>
619
+ <tax1_percent>0</tax1_percent>
620
+ <tax2_percent>0</tax2_percent>
621
+ <compound_tax>0</compound_tax>
622
+ <type>Time</type>
623
+ <time_entries>
624
+ <time_entry>
625
+ <time_entry_id>2431</time_entry_id>
626
+ </time_entry>
627
+ </time_entries>
628
+ </line>
629
+ <line>
630
+ <line_id>5</line_id>
631
+ <order>5</order>
632
+ <name>General</name>
633
+ <description>[Project1 01/05/16] Testing Tester: Use the bluetooth FTP firewall, then you can synthesize the open-source hard drive!</description>
634
+ <unit_cost>120.00</unit_cost>
635
+ <quantity>8</quantity>
636
+ <amount>960.00</amount>
637
+ <tax1_name></tax1_name>
638
+ <tax2_name></tax2_name>
639
+ <tax1_percent>0</tax1_percent>
640
+ <tax2_percent>0</tax2_percent>
641
+ <compound_tax>0</compound_tax>
642
+ <type>Time</type>
643
+ <time_entries>
644
+ <time_entry>
645
+ <time_entry_id>2433</time_entry_id>
646
+ </time_entry>
647
+ </time_entries>
648
+ </line>
649
+ <line>
650
+ <line_id>6</line_id>
651
+ <order>6</order>
652
+ <name>General</name>
653
+ <description>[Project1 01/06/16] Testing Tester: Try to compress the TCP array, maybe it will compress the back-end transmitter!</description>
654
+ <unit_cost>25.00</unit_cost>
655
+ <quantity>8.75</quantity>
656
+ <amount>218.75</amount>
657
+ <tax1_name></tax1_name>
658
+ <tax2_name></tax2_name>
659
+ <tax1_percent>0</tax1_percent>
660
+ <tax2_percent>0</tax2_percent>
661
+ <compound_tax>0</compound_tax>
662
+ <type>Time</type>
663
+ <time_entries>
664
+ <time_entry>
665
+ <time_entry_id>2434</time_entry_id>
666
+ </time_entry>
667
+ </time_entries>
668
+ </line>
669
+ <line>
670
+ <line_id>7</line_id>
671
+ <order>7</order>
672
+ <name></name>
673
+ <description></description>
674
+ <unit_cost>0.00</unit_cost>
675
+ <quantity>0</quantity>
676
+ <amount>0.00</amount>
677
+ <tax1_name></tax1_name>
678
+ <tax2_name></tax2_name>
679
+ <tax1_percent>0</tax1_percent>
680
+ <tax2_percent>0</tax2_percent>
681
+ <compound_tax>0</compound_tax>
682
+ <type>Time</type>
683
+ </line>
684
+ </lines>
685
+ <url deprecated="true">https://testermctest-billing.freshbooks.com/view/3wkcAkcbvg9ZFPmL</url>
686
+ <auth_url deprecated="true">https://testermctest-billing.freshbooks.com/invoices/10789</auth_url>
687
+ <links>
688
+ <client_view>https://testermctest-billing.freshbooks.com/view/3wkcAkcbvg9ZFPmL</client_view>
689
+ <view>https://testermctest-billing.freshbooks.com/invoices/10789</view>
690
+ <edit>https://testermctest-billing.freshbooks.com/invoices/10789/edit</edit>
691
+ </links>
692
+ <gateways/>
693
+ </invoice>
694
+ </invoices>
695
+ </response>
696
+ http_version:
697
+ recorded_at: Sun, 14 Feb 2016 03:03:11 GMT
698
+ recorded_with: VCR 3.0.1