brisk-bills 0.7.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (396) hide show
  1. data/CHANGELOG +7 -0
  2. data/Gemfile +11 -0
  3. data/Gemfile.lock +55 -0
  4. data/TODO.txt +36 -67
  5. data/app/controllers/admin/activities_controller.rb +4 -3
  6. data/app/controllers/admin/activities_with_prices_controller.rb +28 -14
  7. data/app/controllers/admin/client_accounting_controller.rb +11 -8
  8. data/app/controllers/admin/client_representatives_controller.rb +34 -5
  9. data/app/controllers/admin/clients_controller.rb +1 -1
  10. data/app/controllers/admin/draft_invoices_controller.rb +92 -0
  11. data/app/controllers/admin/{employee_client_labor_rate_controller.rb → employee_client_labor_rates_controller.rb} +1 -1
  12. data/app/controllers/admin/employees_controller.rb +3 -4
  13. data/app/controllers/admin/invoices_controller.rb +111 -53
  14. data/app/controllers/admin/payments_controller.rb +168 -41
  15. data/app/controllers/authentication_controller.rb +3 -3
  16. data/app/helpers/admin/activities_helper.rb +16 -13
  17. data/app/helpers/admin/activities_helper/labor_helper.rb +4 -4
  18. data/app/helpers/admin/activities_helper/proposal_helper.rb +1 -1
  19. data/app/helpers/admin/activities_helper/slimtimer_helper.rb +1 -1
  20. data/app/helpers/admin/activities_with_prices_helper.rb +2 -2
  21. data/app/helpers/admin/activity_type_controller_helper.rb +6 -0
  22. data/app/helpers/admin/activity_type_field_helper.rb +9 -9
  23. data/app/helpers/admin/adjustments_helper.rb +9 -1
  24. data/app/helpers/admin/client_accounting_helper.rb +2 -2
  25. data/app/helpers/admin/client_financial_transactions_helper.rb +1 -1
  26. data/app/helpers/admin/client_representatives_helper.rb +16 -12
  27. data/app/helpers/admin/clients_helper.rb +2 -0
  28. data/app/helpers/admin/draft_invoices_helper.rb +24 -0
  29. data/app/helpers/admin/{employee_client_labor_rate_helper.rb → employee_client_labor_rates_helper.rb} +8 -8
  30. data/app/helpers/admin/employees_helper.rb +6 -0
  31. data/app/helpers/admin/has_credential_column_helper.rb +8 -8
  32. data/app/helpers/admin/invoices_helper.rb +71 -16
  33. data/app/helpers/admin/is_active_column_helper.rb +2 -2
  34. data/app/helpers/admin/labors_helper.rb +12 -1
  35. data/app/helpers/admin/labors_helper/slimtimer_helper.rb +1 -1
  36. data/app/helpers/admin/materials_helper.rb +11 -0
  37. data/app/helpers/admin/payments_helper.rb +204 -29
  38. data/app/helpers/admin/proposals_helper.rb +10 -0
  39. data/app/helpers/admin/settings_helper.rb +1 -1
  40. data/app/helpers/admin_layout_helper.rb +3 -6
  41. data/app/helpers/authentication_helper.rb +7 -10
  42. data/app/helpers/money_model_helper.rb +1 -2
  43. data/app/models/activity.rb +17 -7
  44. data/app/models/client.rb +35 -8
  45. data/app/{model_views → models}/client_financial_transaction.rb +0 -0
  46. data/app/models/client_representative.rb +6 -14
  47. data/app/models/credential.rb +1 -1
  48. data/app/models/employee.rb +9 -11
  49. data/app/models/invoice.rb +13 -9
  50. data/app/models/invoice_payment.rb +1 -1
  51. data/app/models/notifier.rb +2 -2
  52. data/app/models/payment.rb +51 -7
  53. data/app/models/setting.rb +3 -1
  54. data/app/views/active_scaffold_overrides/add_existing.js.rjs +25 -0
  55. data/app/views/admin/activities/_adjustment_column.html.erb +10 -0
  56. data/app/views/admin/activities/{_form.rhtml → _form.html.erb} +0 -0
  57. data/app/views/admin/activities/{_form_attribute.rhtml → _form_attribute.html.erb} +0 -0
  58. data/app/views/admin/activities/{_labor_column.rhtml → _labor_column.html.erb} +0 -0
  59. data/app/views/admin/activities/{_material_column.rhtml → _material_column.html.erb} +0 -0
  60. data/app/views/admin/activities/{_proposal_column.rhtml → _proposal_column.html.erb} +0 -0
  61. data/app/views/admin/activities_with_prices/{move_to_invoice.rhtml → move_to_invoice.html.erb} +2 -2
  62. data/app/views/admin/activities_with_prices/move_to_invoice.js.rjs +5 -0
  63. data/app/views/admin/draft_invoices/batch_create.html.erb +73 -0
  64. data/app/views/admin/draft_invoices/batch_create.js.rjs +5 -0
  65. data/app/views/admin/invoices/confirm_publish_modal.html.erb +48 -0
  66. data/app/views/admin/payments/commit_payment_warning.html.erb +8 -0
  67. data/app/views/admin/payments/observation_error.js.rjs +28 -0
  68. data/app/views/admin/payments/on_assignment_observation.js.rjs +28 -0
  69. data/app/views/authentication/{email.rjs → email.js.rjs} +0 -0
  70. data/app/views/authentication/{login.rhtml → login.html.erb} +21 -26
  71. data/app/views/authentication/{login.rjs → login.js.rjs} +0 -0
  72. data/app/views/authentication/{reset_password_via_token.rhtml → reset_password_via_token.html.erb} +0 -0
  73. data/app/views/authentication/{reset_password_via_token.rjs → reset_password_via_token.js.rjs} +0 -0
  74. data/app/views/authentication/{sign_in_error.rjs → sign_in_error.js.rjs} +0 -0
  75. data/app/views/layouts/{_navigation_tree.rhtml → _navigation_tree.html.erb} +0 -0
  76. data/app/views/layouts/{admin.rhtml → admin.html.erb} +0 -0
  77. data/app/views/layouts/{public.rhtml → public.html.erb} +0 -0
  78. data/app/views/notifier/{_email_footer.html.rhtml → _email_footer.html.erb} +0 -0
  79. data/app/views/notifier/{_email_footer.plain.rhtml → _email_footer.plain.erb} +0 -0
  80. data/app/views/notifier/{_email_header.html.rhtml → _email_header.html.erb} +0 -0
  81. data/app/views/notifier/invoice_available.html.erb +5 -0
  82. data/app/views/notifier/{invoice_available.plain.rhtml → invoice_available.plain.erb} +1 -1
  83. data/app/views/notifier/{reset_password_requested.html.rhtml → reset_password_requested.html.erb} +2 -2
  84. data/app/views/notifier/{reset_password_requested.plain.rhtml → reset_password_requested.plain.erb} +1 -1
  85. data/config/environment.rb +6 -5
  86. data/config/locale/en.rb +9 -0
  87. data/db/migrate/001_create_employees.rb +1 -1
  88. data/db/migrate/002_create_employee_slimtimers.rb +1 -1
  89. data/db/migrate/003_create_slimtimer_tasks.rb +1 -1
  90. data/db/migrate/004_create_slimtimer_time_entries.rb +1 -1
  91. data/db/migrate/005_create_clients.rb +1 -1
  92. data/db/migrate/006_create_client_representatives.rb +1 -1
  93. data/db/migrate/008_create_activities.rb +1 -1
  94. data/db/migrate/009_create_activity_labors.rb +1 -1
  95. data/db/migrate/010_create_employee_client_labor_rates.rb +1 -1
  96. data/db/migrate/011_create_activity_adjustments.rb +1 -1
  97. data/db/migrate/012_create_activity_materials.rb +1 -1
  98. data/db/migrate/013_create_activity_proposals.rb +1 -1
  99. data/db/migrate/014_create_invoices.rb +1 -1
  100. data/db/migrate/015_create_payments.rb +1 -1
  101. data/db/migrate/016_create_payment_methods.rb +1 -1
  102. data/db/migrate/017_create_invoice_payments.rb +1 -1
  103. data/db/migrate/018_create_activity_types.rb +2 -2
  104. data/db/migrate/019_create_settings.rb +1 -1
  105. data/db/migrate/023_create_credentials_migrate_representatives.rb +2 -2
  106. data/db/migrate/028_money_to_cents.rb +2 -2
  107. data/db/schema.rb +10 -10
  108. data/lib/brisk-bills.rb +2 -2
  109. data/lib/brisk-bills/initializer.rb +2 -2
  110. data/lib/generators/instance/templates/instance_environment.rb +1 -1
  111. data/lib/libpptable.rb +48 -0
  112. data/lib/tasks/create_last_months_invoices.rake +1 -14
  113. data/lib/tasks/first_time_setup.rake +2 -2
  114. data/lib/tasks/package.rake +2 -1
  115. data/lib/tasks/payment_assignment_consistency_check.rake +110 -0
  116. data/lib/utilities.rb +4 -4
  117. data/public/images/page-new.gif +0 -0
  118. data/public/javascripts/active_scaffold/default/active_scaffold.js +532 -430
  119. data/public/javascripts/active_scaffold/default/dhtml_history.js +1 -1
  120. data/public/javascripts/active_scaffold/default/form_enhancements.js +7 -4
  121. data/public/stylesheets/active_scaffold/default/stylesheet-ie.css +5 -5
  122. data/public/stylesheets/active_scaffold/default/stylesheet.css +54 -18
  123. data/public/stylesheets/admin/global.css +1 -1
  124. data/public/stylesheets/admin/pages.css +29 -0
  125. data/test/unit/activity/adjustment_test.rb +1 -1
  126. data/test/unit/activity/labor_test.rb +1 -1
  127. data/test/unit/activity/material_test.rb +1 -1
  128. data/test/unit/activity/proposal_test.rb +1 -1
  129. data/test/unit/activity_test.rb +1 -1
  130. data/test/unit/activity_type_test.rb +1 -1
  131. data/test/unit/client_eventlog_test.rb +1 -1
  132. data/test/unit/client_financial_transaction_test.rb +1 -1
  133. data/test/unit/client_representative_test.rb +1 -1
  134. data/test/unit/client_test.rb +37 -6
  135. data/test/unit/credential_test.rb +1 -1
  136. data/test/unit/employee/slimtimer_test.rb +1 -1
  137. data/test/unit/employee_client_labor_rate_test.rb +1 -1
  138. data/test/unit/employee_test.rb +1 -1
  139. data/test/unit/helpers/admin/draft_invoices_helper_test.rb +4 -0
  140. data/test/unit/invoice_payment_test.rb +90 -50
  141. data/test/unit/invoice_test.rb +48 -8
  142. data/test/unit/notifier_test.rb +1 -1
  143. data/test/unit/payment_method_test.rb +1 -1
  144. data/test/unit/payment_test.rb +7 -7
  145. data/test/unit/setting_test.rb +1 -1
  146. data/test/unit/slimtimer_task_test.rb +1 -1
  147. data/test/unit/slimtimer_time_entry_test.rb +1 -1
  148. data/vendor/plugins/active_scaffold/CHANGELOG +3 -1
  149. data/vendor/plugins/active_scaffold/README +18 -5
  150. data/vendor/plugins/active_scaffold/environment.rb +1 -1
  151. data/vendor/plugins/active_scaffold/frontends/default/javascripts/active_scaffold.js +532 -430
  152. data/vendor/plugins/active_scaffold/frontends/default/javascripts/dhtml_history.js +1 -1
  153. data/vendor/plugins/active_scaffold/frontends/default/javascripts/form_enhancements.js +7 -4
  154. data/vendor/plugins/active_scaffold/frontends/default/stylesheets/stylesheet-ie.css +5 -5
  155. data/vendor/plugins/active_scaffold/frontends/default/stylesheets/stylesheet.css +54 -18
  156. data/vendor/plugins/active_scaffold/frontends/default/views/_add_existing_form.html.erb +3 -7
  157. data/vendor/plugins/active_scaffold/frontends/default/views/_create_form.html.erb +10 -7
  158. data/vendor/plugins/active_scaffold/frontends/default/views/_field_search.html.erb +7 -12
  159. data/vendor/plugins/active_scaffold/frontends/default/views/_form.html.erb +3 -3
  160. data/vendor/plugins/active_scaffold/frontends/default/views/_form_association.html.erb +15 -20
  161. data/vendor/plugins/active_scaffold/frontends/default/views/_form_association_footer.html.erb +8 -10
  162. data/vendor/plugins/active_scaffold/frontends/default/views/_form_attribute.html.erb +5 -2
  163. data/vendor/plugins/active_scaffold/frontends/default/views/_form_hidden_attribute.html.erb +2 -1
  164. data/vendor/plugins/active_scaffold/frontends/default/views/_horizontal_subform.html.erb +19 -21
  165. data/vendor/plugins/active_scaffold/frontends/default/views/{_form_association_header.html.erb → _horizontal_subform_header.html.erb} +2 -2
  166. data/vendor/plugins/active_scaffold/frontends/default/views/_horizontal_subform_record.html.erb +31 -0
  167. data/vendor/plugins/active_scaffold/frontends/default/views/_list.html.erb +4 -18
  168. data/vendor/plugins/active_scaffold/frontends/default/views/_list_actions.html.erb +18 -5
  169. data/vendor/plugins/active_scaffold/frontends/default/views/_list_calculations.html.erb +2 -9
  170. data/vendor/plugins/active_scaffold/frontends/default/views/_list_column_headings.html.erb +4 -4
  171. data/vendor/plugins/active_scaffold/frontends/default/views/_list_header.html.erb +6 -6
  172. data/vendor/plugins/active_scaffold/frontends/default/views/_list_inline_adapter.html.erb +2 -1
  173. data/vendor/plugins/active_scaffold/frontends/default/views/_list_messages.html.erb +20 -0
  174. data/vendor/plugins/active_scaffold/frontends/default/views/_list_pagination.html.erb +11 -0
  175. data/vendor/plugins/active_scaffold/frontends/default/views/_list_pagination_links.html.erb +3 -5
  176. data/vendor/plugins/active_scaffold/frontends/default/views/_list_record.html.erb +2 -26
  177. data/vendor/plugins/active_scaffold/frontends/default/views/_list_record_columns.html.erb +9 -0
  178. data/vendor/plugins/active_scaffold/frontends/default/views/_nested.html.erb +3 -12
  179. data/vendor/plugins/active_scaffold/frontends/default/views/_render_fields.js.rjs +11 -0
  180. data/vendor/plugins/active_scaffold/frontends/default/views/_search.html.erb +17 -11
  181. data/vendor/plugins/active_scaffold/frontends/default/views/_show.html.erb +3 -3
  182. data/vendor/plugins/active_scaffold/frontends/default/views/_show_columns.html.erb +8 -7
  183. data/vendor/plugins/active_scaffold/frontends/default/views/_update_actions.html.erb +3 -3
  184. data/vendor/plugins/active_scaffold/frontends/default/views/_update_form.html.erb +9 -6
  185. data/vendor/plugins/active_scaffold/frontends/default/views/_vertical_subform.html.erb +7 -0
  186. data/vendor/plugins/active_scaffold/frontends/default/views/_vertical_subform_record.html.erb +38 -0
  187. data/vendor/plugins/active_scaffold/frontends/default/views/add_existing.js.rjs +2 -1
  188. data/vendor/plugins/active_scaffold/frontends/default/views/delete.html.erb +1 -1
  189. data/vendor/plugins/active_scaffold/frontends/default/views/destroy.js.rjs +2 -2
  190. data/vendor/plugins/active_scaffold/frontends/default/views/edit_associated.js.rjs +20 -15
  191. data/vendor/plugins/active_scaffold/frontends/default/views/list.html.erb +12 -8
  192. data/vendor/plugins/active_scaffold/frontends/default/views/list.js.rjs +1 -0
  193. data/vendor/plugins/active_scaffold/frontends/default/views/mark.js.rjs +6 -0
  194. data/vendor/plugins/active_scaffold/frontends/default/views/on_create.js.rjs +12 -8
  195. data/vendor/plugins/active_scaffold/frontends/default/views/on_update.js.rjs +13 -6
  196. data/vendor/plugins/active_scaffold/frontends/default/views/render_field.js.rjs +1 -0
  197. data/vendor/plugins/active_scaffold/frontends/default/views/search.html.erb +2 -2
  198. data/vendor/plugins/active_scaffold/frontends/default/views/update.html.erb +2 -2
  199. data/vendor/plugins/active_scaffold/frontends/default/views/update_column.js.rjs +4 -3
  200. data/vendor/plugins/active_scaffold/frontends/default/views/update_row.js.rjs +2 -0
  201. data/vendor/plugins/active_scaffold/init.rb +2 -2
  202. data/vendor/plugins/active_scaffold/install.rb +1 -2
  203. data/vendor/plugins/active_scaffold/install_assets.rb +1 -1
  204. data/vendor/plugins/active_scaffold/lib/active_record_permissions.rb +53 -42
  205. data/vendor/plugins/active_scaffold/lib/active_scaffold.rb +96 -23
  206. data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/common_search.rb +18 -0
  207. data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/core.rb +152 -102
  208. data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/create.rb +81 -49
  209. data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/delete.rb +44 -17
  210. data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/field_search.rb +60 -46
  211. data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/list.rb +42 -37
  212. data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/mark.rb +72 -0
  213. data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/nested.rb +94 -92
  214. data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/search.rb +54 -40
  215. data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/show.rb +30 -10
  216. data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/update.rb +62 -47
  217. data/vendor/plugins/active_scaffold/lib/active_scaffold/attribute_params.rb +187 -185
  218. data/vendor/plugins/active_scaffold/lib/active_scaffold/config/base.rb +28 -3
  219. data/vendor/plugins/active_scaffold/lib/active_scaffold/config/core.rb +43 -3
  220. data/vendor/plugins/active_scaffold/lib/active_scaffold/config/create.rb +8 -15
  221. data/vendor/plugins/active_scaffold/lib/active_scaffold/config/delete.rb +3 -4
  222. data/vendor/plugins/active_scaffold/lib/active_scaffold/config/field_search.rb +19 -17
  223. data/vendor/plugins/active_scaffold/lib/active_scaffold/config/form.rb +2 -9
  224. data/vendor/plugins/active_scaffold/lib/active_scaffold/config/list.rb +46 -9
  225. data/vendor/plugins/active_scaffold/lib/active_scaffold/config/nested.rb +17 -7
  226. data/vendor/plugins/active_scaffold/lib/active_scaffold/config/search.rb +36 -16
  227. data/vendor/plugins/active_scaffold/lib/active_scaffold/config/show.rb +5 -12
  228. data/vendor/plugins/active_scaffold/lib/active_scaffold/config/subform.rb +8 -6
  229. data/vendor/plugins/active_scaffold/lib/active_scaffold/config/update.rb +12 -8
  230. data/vendor/plugins/active_scaffold/lib/active_scaffold/configurable.rb +2 -2
  231. data/vendor/plugins/active_scaffold/lib/active_scaffold/constraints.rb +173 -178
  232. data/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/action_columns.rb +101 -97
  233. data/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/action_link.rb +29 -19
  234. data/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/column.rb +74 -34
  235. data/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/columns.rb +74 -74
  236. data/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/set.rb +57 -62
  237. data/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/sorting.rb +73 -3
  238. data/vendor/plugins/active_scaffold/lib/active_scaffold/finder.rb +304 -234
  239. data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/association_helpers.rb +40 -40
  240. data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/controller_helpers.rb +39 -24
  241. data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/country_helpers.rb +32 -28
  242. data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/form_column_helpers.rb +157 -86
  243. data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/id_helpers.rb +7 -7
  244. data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/list_column_helpers.rb +278 -85
  245. data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/pagination_helpers.rb +38 -12
  246. data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/search_column_helpers.rb +74 -35
  247. data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/show_column_helpers.rb +53 -46
  248. data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/view_helpers.rb +51 -17
  249. data/vendor/plugins/active_scaffold/lib/active_scaffold/locale/de.yml +69 -0
  250. data/vendor/plugins/active_scaffold/lib/active_scaffold/locale/en.yml +72 -0
  251. data/vendor/plugins/active_scaffold/lib/active_scaffold/locale/es.yml +23 -13
  252. data/vendor/plugins/active_scaffold/lib/active_scaffold/locale/fr.yml +68 -0
  253. data/vendor/plugins/active_scaffold/lib/active_scaffold/locale/hu.yml +24 -14
  254. data/vendor/plugins/active_scaffold/lib/active_scaffold/locale/ja.yml +69 -0
  255. data/vendor/plugins/active_scaffold/lib/active_scaffold/locale/ru.yml +72 -0
  256. data/vendor/plugins/active_scaffold/lib/active_scaffold/marked_model.rb +38 -0
  257. data/vendor/plugins/active_scaffold/lib/bridges/calendar_date_select/lib/as_cds_bridge.rb +47 -13
  258. data/vendor/plugins/active_scaffold/lib/bridges/dependent_protect/bridge.rb +10 -0
  259. data/vendor/plugins/active_scaffold/lib/bridges/dependent_protect/lib/dependent_protect_bridge.rb +11 -0
  260. data/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/as_file_column_bridge.rb +3 -6
  261. data/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/form_ui.rb +10 -2
  262. data/vendor/plugins/active_scaffold/lib/bridges/paperclip/bridge.rb +13 -0
  263. data/vendor/plugins/active_scaffold/lib/bridges/paperclip/lib/form_ui.rb +20 -0
  264. data/vendor/plugins/active_scaffold/lib/bridges/paperclip/lib/list_ui.rb +16 -0
  265. data/vendor/plugins/active_scaffold/lib/bridges/paperclip/lib/paperclip_bridge.rb +32 -0
  266. data/vendor/plugins/active_scaffold/lib/bridges/paperclip/lib/paperclip_bridge_helpers.rb +18 -0
  267. data/vendor/plugins/active_scaffold/lib/bridges/record_select/bridge.rb +5 -0
  268. data/vendor/plugins/active_scaffold/lib/bridges/record_select/lib/record_select_bridge.rb +79 -0
  269. data/vendor/plugins/active_scaffold/lib/bridges/semantic_attributes/bridge.rb +5 -0
  270. data/vendor/plugins/active_scaffold/lib/bridges/semantic_attributes/lib/semantic_attributes_bridge.rb +20 -0
  271. data/vendor/plugins/active_scaffold/lib/bridges/tiny_mce/bridge.rb +5 -0
  272. data/vendor/plugins/active_scaffold/lib/bridges/tiny_mce/lib/tiny_mce_bridge.rb +57 -0
  273. data/vendor/plugins/active_scaffold/lib/bridges/unobtrusive_date_picker/bridge.rb +9 -0
  274. data/vendor/plugins/active_scaffold/lib/bridges/unobtrusive_date_picker/lib/form_ui.rb +14 -0
  275. data/vendor/plugins/active_scaffold/lib/bridges/unobtrusive_date_picker/lib/unobtrusive_date_picker_bridge.rb +15 -0
  276. data/vendor/plugins/active_scaffold/lib/bridges/unobtrusive_date_picker/lib/view_helpers.rb +16 -0
  277. data/vendor/plugins/active_scaffold/lib/bridges/validation_reflection/bridge.rb +9 -0
  278. data/vendor/plugins/active_scaffold/lib/bridges/validation_reflection/lib/validation_reflection_bridge.rb +19 -0
  279. data/vendor/plugins/active_scaffold/lib/extensions/action_view_rendering.rb +20 -8
  280. data/vendor/plugins/active_scaffold/lib/extensions/generic_view_paths.rb +2 -2
  281. data/vendor/plugins/active_scaffold/lib/extensions/paginator_extensions.rb +26 -0
  282. data/vendor/plugins/active_scaffold/lib/extensions/resources.rb +6 -5
  283. data/vendor/plugins/active_scaffold/lib/extensions/reverse_associations.rb +26 -20
  284. data/vendor/plugins/active_scaffold/lib/extensions/unsaved_associated.rb +1 -1
  285. data/vendor/plugins/active_scaffold/lib/paginator.rb +1 -1
  286. data/vendor/plugins/active_scaffold/lib/responds_to_parent.rb +1 -1
  287. data/vendor/plugins/active_scaffold/shoulda_macros/macros.rb +136 -0
  288. data/vendor/plugins/active_scaffold/test/bridges/active_scaffold_dependent_protect_test.rb +34 -0
  289. data/vendor/plugins/active_scaffold/test/bridges/bridge_test.rb +43 -0
  290. data/vendor/plugins/active_scaffold/test/bridges/company.rb +81 -0
  291. data/vendor/plugins/active_scaffold/test/bridges/paperclip_test.rb +68 -0
  292. data/vendor/plugins/active_scaffold/test/bridges/tiny_mce_test.rb +27 -0
  293. data/vendor/plugins/active_scaffold/test/bridges/unobtrusive_date_picker_test.rb +49 -0
  294. data/vendor/plugins/active_scaffold/test/bridges/validation_reflection_test.rb +57 -0
  295. data/vendor/plugins/active_scaffold/test/config/base_test.rb +15 -0
  296. data/vendor/plugins/active_scaffold/test/config/core_test.rb +58 -0
  297. data/vendor/plugins/active_scaffold/test/config/create_test.rb +9 -6
  298. data/vendor/plugins/active_scaffold/test/config/delete_test.rb +33 -0
  299. data/vendor/plugins/active_scaffold/test/config/field_search_test.rb +47 -0
  300. data/vendor/plugins/active_scaffold/test/config/list_test.rb +66 -11
  301. data/vendor/plugins/active_scaffold/test/config/nested_test.rb +62 -0
  302. data/vendor/plugins/active_scaffold/test/config/search_test.rb +60 -0
  303. data/vendor/plugins/active_scaffold/test/config/show_test.rb +43 -0
  304. data/vendor/plugins/active_scaffold/test/config/subform_test.rb +17 -0
  305. data/vendor/plugins/active_scaffold/test/config/update_test.rb +27 -4
  306. data/vendor/plugins/active_scaffold/test/data_structures/action_columns_test.rb +2 -8
  307. data/vendor/plugins/active_scaffold/test/data_structures/action_link_test.rb +11 -11
  308. data/vendor/plugins/active_scaffold/test/data_structures/action_links_test.rb +5 -5
  309. data/vendor/plugins/active_scaffold/test/data_structures/association_column_test.rb +4 -3
  310. data/vendor/plugins/active_scaffold/test/data_structures/column_test.rb +29 -5
  311. data/vendor/plugins/active_scaffold/test/data_structures/sorting_test.rb +31 -1
  312. data/vendor/plugins/active_scaffold/test/data_structures/standard_column_test.rb +3 -13
  313. data/vendor/plugins/active_scaffold/test/data_structures/virtual_column_test.rb +0 -11
  314. data/vendor/plugins/active_scaffold/test/extensions/{array.rb → array_test.rb} +0 -0
  315. data/vendor/plugins/active_scaffold/test/helpers/form_column_helpers_test.rb +31 -0
  316. data/vendor/plugins/active_scaffold/test/helpers/list_column_helpers_test.rb +42 -0
  317. data/vendor/plugins/active_scaffold/test/helpers/pagination_helpers_test.rb +59 -0
  318. data/vendor/plugins/active_scaffold/test/misc/active_record_permissions_test.rb +154 -0
  319. data/vendor/plugins/active_scaffold/test/misc/attribute_params_test.rb +146 -0
  320. data/vendor/plugins/active_scaffold/test/misc/configurable_test.rb +2 -2
  321. data/vendor/plugins/active_scaffold/test/misc/constraints_test.rb +26 -8
  322. data/vendor/plugins/active_scaffold/test/misc/finder_test.rb +41 -19
  323. data/vendor/plugins/active_scaffold/test/misc/lang_test.rb +5 -6
  324. data/vendor/plugins/active_scaffold/test/mock_app/app/controllers/application_controller.rb +10 -0
  325. data/vendor/plugins/active_scaffold/test/mock_app/app/helpers/application_helper.rb +3 -0
  326. data/vendor/plugins/active_scaffold/test/mock_app/config/boot.rb +110 -0
  327. data/vendor/plugins/active_scaffold/test/mock_app/config/environment.rb +43 -0
  328. data/vendor/plugins/active_scaffold/test/mock_app/config/environments/development.rb +17 -0
  329. data/vendor/plugins/active_scaffold/test/mock_app/config/environments/production.rb +28 -0
  330. data/vendor/plugins/active_scaffold/test/mock_app/config/environments/test.rb +28 -0
  331. data/vendor/plugins/active_scaffold/test/mock_app/config/initializers/backtrace_silencers.rb +7 -0
  332. data/vendor/plugins/active_scaffold/test/mock_app/config/initializers/inflections.rb +10 -0
  333. data/vendor/plugins/active_scaffold/test/mock_app/config/initializers/mime_types.rb +5 -0
  334. data/vendor/plugins/active_scaffold/test/mock_app/config/initializers/new_rails_defaults.rb +19 -0
  335. data/vendor/plugins/active_scaffold/test/mock_app/config/initializers/session_store.rb +15 -0
  336. data/vendor/plugins/active_scaffold/test/mock_app/config/locales/en.yml +5 -0
  337. data/vendor/plugins/active_scaffold/test/mock_app/config/routes.rb +43 -0
  338. data/vendor/plugins/active_scaffold/test/mock_app/db/test.sqlite3 +1 -0
  339. data/vendor/plugins/active_scaffold/test/mock_app/public/blank.html +33 -0
  340. data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/DO_NOT_EDIT +2 -0
  341. data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/default/add.gif +0 -0
  342. data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/default/arrow_down.gif +0 -0
  343. data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/default/arrow_up.gif +0 -0
  344. data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/default/close.gif +0 -0
  345. data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/default/cross.png +0 -0
  346. data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/default/indicator-small.gif +0 -0
  347. data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/default/indicator.gif +0 -0
  348. data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/default/magnifier.png +0 -0
  349. data/vendor/plugins/active_scaffold/test/mock_app/public/javascripts/active_scaffold/DO_NOT_EDIT +2 -0
  350. data/vendor/plugins/active_scaffold/test/mock_app/public/javascripts/active_scaffold/default/active_scaffold.js +532 -0
  351. data/vendor/plugins/active_scaffold/test/mock_app/public/javascripts/active_scaffold/default/dhtml_history.js +867 -0
  352. data/vendor/plugins/active_scaffold/test/mock_app/public/javascripts/active_scaffold/default/form_enhancements.js +117 -0
  353. data/vendor/plugins/active_scaffold/test/mock_app/public/javascripts/active_scaffold/default/rico_corner.js +370 -0
  354. data/vendor/plugins/active_scaffold/test/mock_app/public/stylesheets/active_scaffold/DO_NOT_EDIT +2 -0
  355. data/vendor/plugins/active_scaffold/test/mock_app/public/stylesheets/active_scaffold/default/stylesheet-ie.css +35 -0
  356. data/vendor/plugins/active_scaffold/test/mock_app/public/stylesheets/active_scaffold/default/stylesheet.css +845 -0
  357. data/vendor/plugins/active_scaffold/test/model_stub.rb +17 -1
  358. data/vendor/plugins/active_scaffold/test/test_helper.rb +31 -5
  359. data/vendor/plugins/active_scaffold/uninstall.rb +2 -1
  360. data/vendor/plugins/active_scaffold_form_observation/init.rb +1 -1
  361. data/vendor/plugins/active_scaffold_form_observation/lib/active_scaffold_form_observation.rb +1 -2
  362. data/vendor/plugins/active_scaffold_full_refresh/init.rb +2 -0
  363. data/vendor/plugins/active_scaffold_full_refresh/lib/active_scaffold_full_refresh.rb +29 -0
  364. data/vendor/plugins/acts_as_money/{tasks → lib/tasks}/money_tasks.rake +0 -0
  365. metadata +668 -563
  366. data/app/model_views/client_accounting.rb +0 -5
  367. data/app/model_views/invoices_with_total.rb +0 -41
  368. data/app/views/admin/activities/_adjustment_column.rhtml +0 -23
  369. data/app/views/admin/activities_with_prices/move_to_invoice.rjs +0 -9
  370. data/app/views/notifier/invoice_available.html.rhtml +0 -5
  371. data/public/javascripts/prototype.js-1.6.0.3 +0 -4320
  372. data/test/functional/admin/activities_controller_test.rb +0 -8
  373. data/test/functional/admin/adjustments_controller_test.rb +0 -8
  374. data/test/functional/admin/client_accounting_controller_test.rb +0 -8
  375. data/test/functional/admin/client_financial_transactions_controller_test.rb +0 -8
  376. data/test/functional/admin/client_representatives_controller_test.rb +0 -8
  377. data/test/functional/admin/clients_controller_test.rb +0 -8
  378. data/test/functional/admin/employee_client_labor_rate_controller_test.rb +0 -8
  379. data/test/functional/admin/employees/slimtimer_controller_test.rb +0 -8
  380. data/test/functional/admin/employees_controller_test.rb +0 -8
  381. data/test/functional/admin/invoices_controller_test.rb +0 -8
  382. data/test/functional/admin/labors_controller_test.rb +0 -8
  383. data/test/functional/admin/materials_controller_test.rb +0 -8
  384. data/test/functional/admin/payments_controller_test.rb +0 -8
  385. data/test/functional/admin/proposals_controller_test.rb +0 -8
  386. data/test/functional/admin/settings_controller_test.rb +0 -8
  387. data/test/functional/authentication_controller_test.rb +0 -8
  388. data/vendor/plugins/active_scaffold/frontends/default/views/_form_association_record.html.erb +0 -27
  389. data/vendor/plugins/active_scaffold/frontends/default/views/_live_search.html.erb +0 -25
  390. data/vendor/plugins/active_scaffold/frontends/default/views/form_messages_on_create.js.rjs +0 -2
  391. data/vendor/plugins/active_scaffold/frontends/default/views/form_messages_on_update.js.rjs +0 -2
  392. data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/live_search.rb +0 -46
  393. data/vendor/plugins/active_scaffold/lib/active_scaffold/config/live_search.rb +0 -52
  394. data/vendor/plugins/active_scaffold/lib/active_scaffold/locale/en.rb +0 -66
  395. data/vendor/plugins/active_scaffold/lib/extensions/name_option_for_datetime.rb +0 -12
  396. data/vendor/plugins/active_scaffold/test/misc/active_record_permissions.rb +0 -154
@@ -26,7 +26,7 @@ class AuthenticationController < ApplicationController
26
26
  if @active_credential
27
27
  redirect_to @active_credential.default_post_login_url_to
28
28
  else
29
- render :action => 'login.rhtml'
29
+ render :action => :login
30
30
  end
31
31
  end
32
32
  format.js do
@@ -72,7 +72,7 @@ class AuthenticationController < ApplicationController
72
72
  rescue
73
73
  @flash_error = $!
74
74
  ensure
75
- render :action => "#{@button_press}.rjs"
75
+ render :action => @button_press
76
76
  end
77
77
  end
78
78
  end
@@ -108,7 +108,7 @@ class AuthenticationController < ApplicationController
108
108
  rescue
109
109
  @flash_error = $!
110
110
  ensure
111
- render :action => "reset_password_via_token.rjs"
111
+ render :action => :reset_password_via_token
112
112
  end
113
113
  end
114
114
  end
@@ -1,6 +1,9 @@
1
1
  module Admin::ActivitiesHelper
2
2
  include ::Admin::ActivityTaxFieldHelper
3
3
  include ExtensibleObjectHelper
4
+
5
+ alias :activity_apply_tax_form_column :apply_tax_form_column
6
+ alias :activity_tax_form_column :tax_form_column
4
7
 
5
8
  def active_scaffold_observe_field(col_name, observation)
6
9
  # This is slightly hackish - but it should work
@@ -21,7 +24,7 @@ module Admin::ActivitiesHelper
21
24
 
22
25
  activity_partial = "#{record.activity_type}_column"
23
26
 
24
- if FileTest.exists? "#{activity_partial_path}/_#{activity_partial}.rhtml"
27
+ if FileTest.exists? "#{activity_partial_path}/_#{activity_partial}.html.erb"
25
28
  render :partial => activity_partial, :locals => { :record => record }
26
29
  else
27
30
  '-'
@@ -40,11 +43,11 @@ module Admin::ActivitiesHelper
40
43
  "#{column.name}-column"
41
44
  end
42
45
 
43
- def cost_column(record)
46
+ def activity_cost_column(record)
44
47
  h_money record.cost
45
48
  end
46
49
 
47
- def tax_column(record)
50
+ def activity_tax_column(record)
48
51
  h_money record.tax
49
52
  end
50
53
 
@@ -54,20 +57,20 @@ module Admin::ActivitiesHelper
54
57
  end
55
58
 
56
59
  def override_form_field(column)
57
- subtype_override_method = "#{@record.activity_type}_#{column.name}_form_column"
60
+ subtype_override_method = "activity_#{@record.activity_type}_#{column.name}_form_column"
58
61
 
59
- respond_to?(subtype_override_method) ? subtype_override_method : "#{column.name}_form_column"
62
+ respond_to?(subtype_override_method) ? subtype_override_method : "activity_#{column.name}_form_column"
60
63
  end
61
64
 
62
65
  # Generic helpers:
63
66
 
64
- def cost_form_column(record, input_name)
65
- text_field_tag input_name, money_for_input(@record.cost), options_for_column('cost').merge({:size => 10 })
67
+ def activity_cost_form_column(record, options)
68
+ text_field_tag options[:name], money_for_input(@record.cost), options_for_column('cost').merge({:size => 10 })
66
69
  end
67
70
 
68
- def client_id_form_column(record, input_name)
71
+ def activity_client_id_form_column(record, options)
69
72
  select_tag(
70
- input_name,
73
+ options[:name],
71
74
  options_for_select(
72
75
  # NOTE: We don't do a find_active here, but see the conditions...
73
76
  [ ['(Unknown)', nil] ]+Client.find(
@@ -82,16 +85,16 @@ module Admin::ActivitiesHelper
82
85
  )
83
86
  end
84
87
 
85
- def label_form_column(record, input_name)
88
+ def activity_label_form_column(record, options)
86
89
  label_value = (@record.respond_to?(@record.activity_type)) ? @record.send("#{@record.activity_type}").label : nil
87
90
 
88
- text_field_tag input_name, label_value, options_for_column('label').merge({:size => 30 })
91
+ text_field_tag options[:name], label_value, options_for_column('label').merge({:size => 30 })
89
92
  end
90
93
 
91
- def comments_form_column(record, input_name)
94
+ def activity_comments_form_column(record, options)
92
95
  comments_value = (@record.respond_to?(@record.activity_type)) ? @record.send("#{@record.activity_type}").comments : nil
93
96
 
94
- text_area_tag input_name, comments_value, options_for_column('comments').merge({:cols => 72, :rows => 20})
97
+ text_area_tag options[:name], comments_value, options_for_column('comments').merge({:cols => 72, :rows => 20})
95
98
  end
96
99
 
97
100
  def submit_tag(*args)
@@ -1,6 +1,6 @@
1
1
  module Admin::ActivitiesHelper
2
2
 
3
- def labor_employee_id_form_column(record, input_name)
3
+ def activity_employee_id_form_column(record, input_name)
4
4
  select_tag(
5
5
  input_name,
6
6
  options_for_select(
@@ -17,12 +17,12 @@ module Admin::ActivitiesHelper
17
17
  )
18
18
  end
19
19
 
20
- def labor_duration_form_column(record, input_name)
20
+ def activity_duration_form_column(record, input_name)
21
21
  text_field_tag input_name, @record.labor.clock_duration, options_for_column('duration').merge({:size => 10})
22
22
  end
23
23
 
24
- def labor_comments_form_column(record, input_name)
25
- text_area_tag input_name, @record.labor.comments, options_for_column('comments').merge({:cols => 72, :rows => 20})
24
+ def activity_comments_form_column(record, input_name)
25
+ text_area_tag input_name, @record.sub_activity.comments, options_for_column('comments').merge({:cols => 72, :rows => 20})
26
26
  end
27
27
 
28
28
  end
@@ -1,6 +1,6 @@
1
1
  module Admin::ActivitiesHelper
2
2
 
3
- def proposal_proposed_on_form_column(record, input_name)
3
+ def activity_proposed_on_form_column(record, options)
4
4
  # Super-ghetto hack
5
5
  @proposal = record.proposal
6
6
 
@@ -1,6 +1,6 @@
1
1
  module Admin::ActivitiesHelper
2
2
 
3
- def labor_slimtimer_task_form_column(record, input_name)
3
+ def activity_slimtimer_task_form_column(record, input_name)
4
4
  begin
5
5
  slimtimer_task_name = @record.labor.slimtimer_time_entry.slimtimer_task.name
6
6
  rescue
@@ -1,7 +1,7 @@
1
1
  module Admin::ActivitiesWithPricesHelper
2
2
 
3
- def render_action_link(link, url_options)
4
- return super(link, url_options) unless link.action == 'move_to_invoice'
3
+ def render_action_link(link, url_options, record)
4
+ return super(link, url_options, record) unless link.action == 'move_to_invoice'
5
5
 
6
6
  url_for_dialog = url_for(
7
7
  :controller => url_options[:controller],
@@ -76,6 +76,12 @@ module Admin::ActivityTypeControllerHelper
76
76
  record.activity.is_published = true if params[:action] == 'create'
77
77
  end
78
78
 
79
+ # override_form_field_partial in the helper gets buggered out b/c our controller name doesn't match
80
+ # the model name. This fixes that:
81
+ def self.active_scaffold_controller_for(klass)
82
+ self
83
+ end
84
+
79
85
  end
80
86
 
81
87
  end
@@ -2,9 +2,9 @@ module Admin::ActivityTypeFieldHelper
2
2
 
3
3
  include Admin::IsActiveColumnHelper
4
4
 
5
- def client_form_column(record, input_name)
5
+ def client_form_column(record, options)
6
6
  select_tag(
7
- input_name,
7
+ options[:name],
8
8
  options_for_select(
9
9
  (Client.find(
10
10
  :all,
@@ -17,7 +17,7 @@ module Admin::ActivityTypeFieldHelper
17
17
  )
18
18
  end
19
19
 
20
- def occurred_on_form_column(record, input_name)
20
+ def occurred_on_form_column(record, options)
21
21
  datetime_select "record", "occurred_on"
22
22
  end
23
23
 
@@ -29,17 +29,17 @@ module Admin::ActivityTypeFieldHelper
29
29
  h_money (record.tax) ? record.tax : Money.new(0)
30
30
  end
31
31
 
32
- def cost_form_column(record,input_name)
33
- text_field_tag input_name, (@record.cost.nil?) ? nil : ("%.2f" % @record.cost), :size => 10, :id => "record_cost_#{record.id}"
32
+ def cost_form_column(record,options)
33
+ text_field_tag options[:name], (@record.cost.nil?) ? nil : ("%.2f" % @record.cost), :size => 10, :id => "record_cost_#{record.id}"
34
34
  end
35
35
 
36
- def tax_form_column(record,input_name)
37
- text_field_tag input_name, (@record.tax.nil?) ? nil : ("%.2f" % @record.tax), :size => 10, :id => "record_tax_#{record.id}"
36
+ def tax_form_column(record,options)
37
+ text_field_tag options[:name], (@record.tax.nil?) ? nil : ("%.2f" % @record.tax), :size => 10, :id => "record_tax_#{record.id}"
38
38
  end
39
39
 
40
40
  # Not all the activities have this, but many do:
41
- def comments_form_column(record,input_name)
42
- text_area_tag input_name, record.comments, :cols => 80, :rows => 22, :id => "record_comments_#{record.id}"
41
+ def comments_form_column(record,options)
42
+ text_area_tag options[:name], record.comments, :cols => 80, :rows => 22, :id => "record_comments_#{record.id}"
43
43
  end
44
44
 
45
45
  end
@@ -1,5 +1,13 @@
1
1
  module Admin::AdjustmentsHelper
2
2
  include Admin::ActivityTypeFieldHelper
3
3
 
4
-
4
+ alias :activity_adjustment_tax_column :tax_column
5
+ alias :activity_adjustment_cost_column :cost_column
6
+
7
+ alias :activity_adjustment_occurred_on_form_column :occurred_on_form_column
8
+ alias :activity_adjustment_client_form_column :client_form_column
9
+ alias :activity_adjustment_cost_form_column :cost_form_column
10
+
11
+ alias :activity_adjustment_tax_form_column :tax_form_column
12
+ alias :activity_adjustment_comments_form_column :comments_form_column
5
13
  end
@@ -1,11 +1,11 @@
1
1
  module Admin::ClientAccountingHelper
2
2
  include ExtensibleObjectHelper
3
3
 
4
- def balance_column(record)
4
+ def client_balance_column(record)
5
5
  h_money record.balance, true
6
6
  end
7
7
 
8
- def uninvoiced_activities_balance_column(record)
8
+ def client_uninvoiced_activities_balance_column(record)
9
9
  h_money record.uninvoiced_activities_balance, true
10
10
  end
11
11
 
@@ -1,7 +1,7 @@
1
1
  module Admin::ClientFinancialTransactionsHelper
2
2
  include ExtensibleObjectHelper
3
3
 
4
- def amount_column(record)
4
+ def client_financial_transaction_amount_column(record)
5
5
  h_money record.amount, false
6
6
  end
7
7
 
@@ -1,26 +1,30 @@
1
1
  module Admin::ClientRepresentativesHelper
2
2
  include Admin::HasCredentialColumnHelper
3
-
4
- def clients_form_column(record, input_name)
3
+
4
+ alias :client_representative_password_form_column :password_form_column
5
+ alias :client_representative_login_enabled_form_column :login_enabled_form_column
6
+
7
+ def client_representative_clients_form_column(record, options)
5
8
  list_i = nil
9
+
10
+ # Keeps our queries down by 'caching' it here:
11
+ client_ids = record.client_ids
6
12
 
7
13
  Client.find(:all, :order => 'company_name ASC').in_groups_of((Client.count(:all).to_f/3).ceil, false).collect{ |group|
8
14
  '<ul class="checkbox-list">'+
9
15
  group.collect{ |client|
10
16
  list_i = (list_i) ? list_i+1 : 0
11
- chk_name = "%s[%d][id]" % [input_name, client.id]
12
-
13
- '<li>%s<label for="%s[%d][id]">%s</label></li>' % [
14
- check_box_tag(chk_name, client.id, record.client_ids.include?(client.id) ),
15
- chk_name,
16
- list_i,
17
- client.company_name
17
+ chk_name = "%s[%d][id]" % [options[:name], client.id]
18
+ chk_id = "%s_client_%d" % [options[:id], client.id]
19
+
20
+ '<li>%s<label for="%s">%s</label></li>' % [
21
+ check_box_tag(chk_name, client.id, client_ids.include?(client.id), :id => chk_id ),
22
+ chk_id,
23
+ h(client.company_name)
18
24
  ]
19
25
  }.join+
20
26
  '</ul>'
21
27
  }.join
22
28
  end
23
-
24
-
25
-
29
+
26
30
  end
@@ -2,5 +2,7 @@ module Admin::ClientsHelper
2
2
  include ExtensibleObjectHelper
3
3
  include Admin::IsActiveColumnHelper
4
4
 
5
+ alias :client_is_active_form_column :is_active_form_column
6
+
5
7
  handle_extensions
6
8
  end
@@ -0,0 +1,24 @@
1
+ module Admin::DraftInvoicesHelper
2
+ # This isn't actually used by active scaffold, hence our non-standard argument list
3
+ def batch_create_clients_form_column(invoice_date_at, checked_client_ids = nil)
4
+ clients = Client.find_invoiceable_clients_at invoice_date_at
5
+
6
+
7
+ (clients.length > 0) ?
8
+ '<div id="batch_invoice_clients_list">%s</div>' % clients.in_groups_of((clients.length.to_f/3).ceil, false).collect{ |group|
9
+ '<ul class="checkbox-list">%s</ul>' % group.collect{ |client|
10
+ list_i = (list_i) ? list_i+1 : 0
11
+ chk_name = "%s[%d][id]" % ['batch_client', client.id]
12
+ chk_id = "%s_client_%d" % ['batch_client', client.id]
13
+
14
+ '<li>%s<label for="%s">%s</label></li>' % [
15
+ check_box_tag(chk_name, client.id, (checked_client_ids.nil? || checked_client_ids.include?(client.id)), :id => chk_id ),
16
+ chk_id,
17
+ h(client.company_name)
18
+ ]
19
+ }.join
20
+ }.join :
21
+ '<span class="active-scaffold_detail_value">No invoiceable clients are available for this date.</span>'
22
+
23
+ end
24
+ end
@@ -1,14 +1,14 @@
1
- module Admin::EmployeeClientLaborRateHelper
1
+ module Admin::EmployeeClientLaborRatesHelper
2
2
 
3
- def hourly_rate_column(record)
3
+ def employee_client_labor_rate_hourly_rate_column(record)
4
4
  h "$%0.2f" % record.hourly_rate
5
5
  end
6
6
 
7
- def hourly_rate_form_column(record, input_name)
8
- text_field_tag input_name, "%0.2f" % ((@record.hourly_rate) ? @record.hourly_rate : 0), :size => 10, :id => 'record_hourly_rate'
7
+ def employee_client_labor_rate_hourly_rate_form_column(record, options)
8
+ text_field_tag options[:name], "%0.2f" % ((@record.hourly_rate) ? @record.hourly_rate : 0), :size => 10, :id => 'record_hourly_rate'
9
9
  end
10
10
 
11
- def employee_form_column(record, input_name)
11
+ def employee_client_labor_rate_employee_form_column(record, options)
12
12
  unavail_clients = nil
13
13
 
14
14
  if record.client_id
@@ -27,7 +27,7 @@ module Admin::EmployeeClientLaborRateHelper
27
27
  end
28
28
 
29
29
  select_tag(
30
- input_name,
30
+ options[:name],
31
31
  options_for_select(
32
32
  (Employee.find_active(
33
33
  :all,
@@ -41,7 +41,7 @@ module Admin::EmployeeClientLaborRateHelper
41
41
  )
42
42
  end
43
43
 
44
- def client_form_column(record, input_name)
44
+ def employee_client_labor_rate_client_form_column(record, options)
45
45
  unavail_emps = nil
46
46
 
47
47
  if record.employee_id
@@ -60,7 +60,7 @@ module Admin::EmployeeClientLaborRateHelper
60
60
  end
61
61
 
62
62
  select_tag(
63
- input_name,
63
+ options[:name],
64
64
  options_for_select(
65
65
  (Client.find(
66
66
  :all,
@@ -3,7 +3,13 @@ module Admin::EmployeesHelper
3
3
  include ExtensibleObjectHelper
4
4
 
5
5
  include Admin::IsActiveColumnHelper
6
+
7
+ alias :employee_is_active_form_column :is_active_form_column
8
+
6
9
  include Admin::HasCredentialColumnHelper
10
+
11
+ alias :employee_password_form_column :password_form_column
12
+ alias :employee_login_enabled_form_column :login_enabled_form_column
7
13
 
8
14
  handle_extensions
9
15
  end
@@ -12,27 +12,27 @@ module Admin::HasCredentialColumnHelper
12
12
  "});"
13
13
 
14
14
  def form_remote_tag(*args)
15
- post_script = ''
16
-
17
15
  if @record and !@record.new_record? and @record.password_hash
18
16
  args[0][:before] = "if (password_has_changed[%d] == false) { $('%s').value = ''; }" % [
19
17
  @record.id,
20
18
  password_input_id
21
19
  ]
22
20
 
23
- post_script =
21
+ concat(
24
22
  ('<script>'+
25
23
  'if (typeof(password_has_changed) == "undefined"){password_has_changed = [];old_password_values = [];};'+
26
24
  'password_has_changed[%d] = false;'+
27
25
  '</script>') % @record.id
26
+ )
28
27
  end
29
28
 
30
- super(*args)+post_script
29
+ super(*args)
31
30
  end
32
31
 
33
- def password_form_column(record, input_name)
32
+ def password_form_column(record, options)
33
+
34
34
  password_field_tag(
35
- input_name,
35
+ options[:name],
36
36
  ( record.password_hash ) ? 'secretsecret' : '',
37
37
  :id => password_input_id,
38
38
  :size => 20
@@ -41,9 +41,9 @@ module Admin::HasCredentialColumnHelper
41
41
  )
42
42
  end
43
43
 
44
- def login_enabled_form_column(record, input_name)
44
+ def login_enabled_form_column(record, options)
45
45
  select_tag(
46
- input_name,
46
+ options[:name],
47
47
  options_for_select(
48
48
  [ ["Yes", 'true'], ["No", 'false'] ],
49
49
  (record.login_enabled.nil?) ? 'false' : record.login_enabled.to_s
@@ -1,43 +1,98 @@
1
1
  module Admin::InvoicesHelper
2
2
 
3
- include Admin::IsActiveColumnHelper
4
-
5
- def active_scaffold_input_options(column, scope)
6
- options = super(column, scope)
3
+ def active_scaffold_input_options(column, scope = nil, options = {})
4
+ options = super(column, scope, options)
7
5
  options.merge! :include_seconds => true if column.name == :issued_on
8
6
  options
9
7
  end
10
8
 
11
- def is_published_form_column(column, input_name)
12
- select_tag input_name, options_for_select([['Yes', 1],['No',0]], (column.is_published) ? 1 : 0 )
9
+ def invoice_is_published_form_column(column, options)
10
+ select_tag options[:name], options_for_select([['Yes', 1],['No',0]], (column.is_published) ? 1 : 0 )
13
11
  end
14
12
 
15
- def is_published_column(record)
13
+ def invoice_is_published_column(record)
16
14
  record.is_published ? 'Yes' : 'No'
17
15
  end
18
16
 
19
- def is_paid_column(record)
20
- record.is_paid? ? 'Yes' : 'No'
17
+ def invoice_is_paid_column(record)
18
+ record.is_published ? (record.is_paid? ? 'Yes' : 'No') : '-'
21
19
  end
22
20
 
23
- def sub_total_column(record)
21
+ def invoice_sub_total_column(record)
24
22
  h_money record.sub_total
25
23
  end
26
24
 
27
- def taxes_total_column(record)
25
+ def invoice_taxes_total_column(record)
28
26
  h_money record.taxes_total
29
27
  end
30
28
 
31
- def amount_column(record)
29
+ def invoice_amount_column(record)
32
30
  h_money record.amount
33
31
  end
34
32
 
35
- def issued_on_column(record)
33
+ def invoice_issued_on_column(record)
36
34
  h record.issued_on.strftime((params[:action] == 'show') ? '%m/%d/%y %I:%M %p' : '%m/%d/%y')
37
35
  end
36
+
37
+ def invoice_payment_assignments_column(record)
38
+ record.payment_assignments.collect{ |asgn|
39
+ '%s from (Payment %d)' % [asgn.amount.format, asgn.payment_id ]
40
+ }.join ', '
41
+ end
42
+
43
+ def toggle_published_indicator
44
+ loading_indicator_tag :action => :toggle_published, :id => @record.id
45
+ end
46
+
47
+ def toggle_published_submit( label, is_focused, url_options = {} )
48
+ loading_indicator_id = loading_indicator_id(:action => :toggle_published, :id => @record.id)
49
+
50
+ button_to_remote(
51
+ label,
52
+ {
53
+ :url => {
54
+ :action => :toggle_published,
55
+ :id => @record.id,
56
+ :is_confirmed => 1
57
+ }.merge(url_options),
58
+ :loaded => [
59
+ 'Modalbox.hide()',
60
+ "$(%s).style.visibility = 'visible'" % loading_indicator_id.to_json
61
+ ].join(';'),
62
+ :before => [
63
+ "$(%s).style.visibility = 'visible'" % loading_indicator_id.to_json,
64
+ "$$('#MB_content input[type=button]').each(function(i){i.disable();} )",
65
+ "$('cancel_box').style.display = 'none'"
66
+ ].join(";"),
67
+ },
68
+ (is_focused) ? {:class => "MB_focusable"} : {}
69
+ )
70
+ end
71
+
72
+ # This let's us hook into the action_link names, so we can dynamically generate a label
73
+ # for the publish/unpublish row action
74
+ def render_action_link(link, url_options, record = nil, html_options = {})
75
+ # We don't want to modify the config itself, so we dup it before we start
76
+ # on changes
77
+ our_options = url_options.dup
78
+
79
+ if link.action == 'toggle_published'
80
+ our_options[:link] = (record.is_published) ? 'Un-Publish' : 'Publish'
81
+
82
+ html_options[:onclick] = "Modalbox.show(%s,%s); return false;" % [
83
+ url_for(:action => :toggle_published, :id => record.id).to_json,
84
+ {
85
+ :title => '%s confirmation' % [(record.is_published) ? 'Un-publish' : 'Publish'],
86
+ :width => 700
87
+ }.to_json
88
+ ]
89
+ end
90
+
91
+ super(link, our_options, record, html_options)
92
+ end
38
93
 
39
- # Shameless copy-paste:
40
- def activity_types_form_column(column, input_name)
94
+ # Shameless activescaffold copy-pasta:
95
+ def invoice_activity_types_form_column(column, options)
41
96
  available_types = ActivityType.find(:all)
42
97
 
43
98
  associated_ids = ( (@record.new_record?) ? available_types : @record.activity_types ).collect(&:id)
@@ -46,7 +101,7 @@ module Admin::InvoicesHelper
46
101
 
47
102
  html = '<ul class="checkbox-list">'
48
103
  available_types.each_with_index do |type, i|
49
- this_name = "#{input_name}[#{i}][id]"
104
+ this_name = "#{options[:name]}[#{i}][id]"
50
105
  html << "<li>"
51
106
  html << check_box_tag(this_name, type.id, associated_ids.include?(type.id))
52
107
  html << "<label for='#{this_name}'>"+type.to_label+"</label>"