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.
- data/CHANGELOG +7 -0
- data/Gemfile +11 -0
- data/Gemfile.lock +55 -0
- data/TODO.txt +36 -67
- data/app/controllers/admin/activities_controller.rb +4 -3
- data/app/controllers/admin/activities_with_prices_controller.rb +28 -14
- data/app/controllers/admin/client_accounting_controller.rb +11 -8
- data/app/controllers/admin/client_representatives_controller.rb +34 -5
- data/app/controllers/admin/clients_controller.rb +1 -1
- data/app/controllers/admin/draft_invoices_controller.rb +92 -0
- data/app/controllers/admin/{employee_client_labor_rate_controller.rb → employee_client_labor_rates_controller.rb} +1 -1
- data/app/controllers/admin/employees_controller.rb +3 -4
- data/app/controllers/admin/invoices_controller.rb +111 -53
- data/app/controllers/admin/payments_controller.rb +168 -41
- data/app/controllers/authentication_controller.rb +3 -3
- data/app/helpers/admin/activities_helper.rb +16 -13
- data/app/helpers/admin/activities_helper/labor_helper.rb +4 -4
- data/app/helpers/admin/activities_helper/proposal_helper.rb +1 -1
- data/app/helpers/admin/activities_helper/slimtimer_helper.rb +1 -1
- data/app/helpers/admin/activities_with_prices_helper.rb +2 -2
- data/app/helpers/admin/activity_type_controller_helper.rb +6 -0
- data/app/helpers/admin/activity_type_field_helper.rb +9 -9
- data/app/helpers/admin/adjustments_helper.rb +9 -1
- data/app/helpers/admin/client_accounting_helper.rb +2 -2
- data/app/helpers/admin/client_financial_transactions_helper.rb +1 -1
- data/app/helpers/admin/client_representatives_helper.rb +16 -12
- data/app/helpers/admin/clients_helper.rb +2 -0
- data/app/helpers/admin/draft_invoices_helper.rb +24 -0
- data/app/helpers/admin/{employee_client_labor_rate_helper.rb → employee_client_labor_rates_helper.rb} +8 -8
- data/app/helpers/admin/employees_helper.rb +6 -0
- data/app/helpers/admin/has_credential_column_helper.rb +8 -8
- data/app/helpers/admin/invoices_helper.rb +71 -16
- data/app/helpers/admin/is_active_column_helper.rb +2 -2
- data/app/helpers/admin/labors_helper.rb +12 -1
- data/app/helpers/admin/labors_helper/slimtimer_helper.rb +1 -1
- data/app/helpers/admin/materials_helper.rb +11 -0
- data/app/helpers/admin/payments_helper.rb +204 -29
- data/app/helpers/admin/proposals_helper.rb +10 -0
- data/app/helpers/admin/settings_helper.rb +1 -1
- data/app/helpers/admin_layout_helper.rb +3 -6
- data/app/helpers/authentication_helper.rb +7 -10
- data/app/helpers/money_model_helper.rb +1 -2
- data/app/models/activity.rb +17 -7
- data/app/models/client.rb +35 -8
- data/app/{model_views → models}/client_financial_transaction.rb +0 -0
- data/app/models/client_representative.rb +6 -14
- data/app/models/credential.rb +1 -1
- data/app/models/employee.rb +9 -11
- data/app/models/invoice.rb +13 -9
- data/app/models/invoice_payment.rb +1 -1
- data/app/models/notifier.rb +2 -2
- data/app/models/payment.rb +51 -7
- data/app/models/setting.rb +3 -1
- data/app/views/active_scaffold_overrides/add_existing.js.rjs +25 -0
- data/app/views/admin/activities/_adjustment_column.html.erb +10 -0
- data/app/views/admin/activities/{_form.rhtml → _form.html.erb} +0 -0
- data/app/views/admin/activities/{_form_attribute.rhtml → _form_attribute.html.erb} +0 -0
- data/app/views/admin/activities/{_labor_column.rhtml → _labor_column.html.erb} +0 -0
- data/app/views/admin/activities/{_material_column.rhtml → _material_column.html.erb} +0 -0
- data/app/views/admin/activities/{_proposal_column.rhtml → _proposal_column.html.erb} +0 -0
- data/app/views/admin/activities_with_prices/{move_to_invoice.rhtml → move_to_invoice.html.erb} +2 -2
- data/app/views/admin/activities_with_prices/move_to_invoice.js.rjs +5 -0
- data/app/views/admin/draft_invoices/batch_create.html.erb +73 -0
- data/app/views/admin/draft_invoices/batch_create.js.rjs +5 -0
- data/app/views/admin/invoices/confirm_publish_modal.html.erb +48 -0
- data/app/views/admin/payments/commit_payment_warning.html.erb +8 -0
- data/app/views/admin/payments/observation_error.js.rjs +28 -0
- data/app/views/admin/payments/on_assignment_observation.js.rjs +28 -0
- data/app/views/authentication/{email.rjs → email.js.rjs} +0 -0
- data/app/views/authentication/{login.rhtml → login.html.erb} +21 -26
- data/app/views/authentication/{login.rjs → login.js.rjs} +0 -0
- data/app/views/authentication/{reset_password_via_token.rhtml → reset_password_via_token.html.erb} +0 -0
- data/app/views/authentication/{reset_password_via_token.rjs → reset_password_via_token.js.rjs} +0 -0
- data/app/views/authentication/{sign_in_error.rjs → sign_in_error.js.rjs} +0 -0
- data/app/views/layouts/{_navigation_tree.rhtml → _navigation_tree.html.erb} +0 -0
- data/app/views/layouts/{admin.rhtml → admin.html.erb} +0 -0
- data/app/views/layouts/{public.rhtml → public.html.erb} +0 -0
- data/app/views/notifier/{_email_footer.html.rhtml → _email_footer.html.erb} +0 -0
- data/app/views/notifier/{_email_footer.plain.rhtml → _email_footer.plain.erb} +0 -0
- data/app/views/notifier/{_email_header.html.rhtml → _email_header.html.erb} +0 -0
- data/app/views/notifier/invoice_available.html.erb +5 -0
- data/app/views/notifier/{invoice_available.plain.rhtml → invoice_available.plain.erb} +1 -1
- data/app/views/notifier/{reset_password_requested.html.rhtml → reset_password_requested.html.erb} +2 -2
- data/app/views/notifier/{reset_password_requested.plain.rhtml → reset_password_requested.plain.erb} +1 -1
- data/config/environment.rb +6 -5
- data/config/locale/en.rb +9 -0
- data/db/migrate/001_create_employees.rb +1 -1
- data/db/migrate/002_create_employee_slimtimers.rb +1 -1
- data/db/migrate/003_create_slimtimer_tasks.rb +1 -1
- data/db/migrate/004_create_slimtimer_time_entries.rb +1 -1
- data/db/migrate/005_create_clients.rb +1 -1
- data/db/migrate/006_create_client_representatives.rb +1 -1
- data/db/migrate/008_create_activities.rb +1 -1
- data/db/migrate/009_create_activity_labors.rb +1 -1
- data/db/migrate/010_create_employee_client_labor_rates.rb +1 -1
- data/db/migrate/011_create_activity_adjustments.rb +1 -1
- data/db/migrate/012_create_activity_materials.rb +1 -1
- data/db/migrate/013_create_activity_proposals.rb +1 -1
- data/db/migrate/014_create_invoices.rb +1 -1
- data/db/migrate/015_create_payments.rb +1 -1
- data/db/migrate/016_create_payment_methods.rb +1 -1
- data/db/migrate/017_create_invoice_payments.rb +1 -1
- data/db/migrate/018_create_activity_types.rb +2 -2
- data/db/migrate/019_create_settings.rb +1 -1
- data/db/migrate/023_create_credentials_migrate_representatives.rb +2 -2
- data/db/migrate/028_money_to_cents.rb +2 -2
- data/db/schema.rb +10 -10
- data/lib/brisk-bills.rb +2 -2
- data/lib/brisk-bills/initializer.rb +2 -2
- data/lib/generators/instance/templates/instance_environment.rb +1 -1
- data/lib/libpptable.rb +48 -0
- data/lib/tasks/create_last_months_invoices.rake +1 -14
- data/lib/tasks/first_time_setup.rake +2 -2
- data/lib/tasks/package.rake +2 -1
- data/lib/tasks/payment_assignment_consistency_check.rake +110 -0
- data/lib/utilities.rb +4 -4
- data/public/images/page-new.gif +0 -0
- data/public/javascripts/active_scaffold/default/active_scaffold.js +532 -430
- data/public/javascripts/active_scaffold/default/dhtml_history.js +1 -1
- data/public/javascripts/active_scaffold/default/form_enhancements.js +7 -4
- data/public/stylesheets/active_scaffold/default/stylesheet-ie.css +5 -5
- data/public/stylesheets/active_scaffold/default/stylesheet.css +54 -18
- data/public/stylesheets/admin/global.css +1 -1
- data/public/stylesheets/admin/pages.css +29 -0
- data/test/unit/activity/adjustment_test.rb +1 -1
- data/test/unit/activity/labor_test.rb +1 -1
- data/test/unit/activity/material_test.rb +1 -1
- data/test/unit/activity/proposal_test.rb +1 -1
- data/test/unit/activity_test.rb +1 -1
- data/test/unit/activity_type_test.rb +1 -1
- data/test/unit/client_eventlog_test.rb +1 -1
- data/test/unit/client_financial_transaction_test.rb +1 -1
- data/test/unit/client_representative_test.rb +1 -1
- data/test/unit/client_test.rb +37 -6
- data/test/unit/credential_test.rb +1 -1
- data/test/unit/employee/slimtimer_test.rb +1 -1
- data/test/unit/employee_client_labor_rate_test.rb +1 -1
- data/test/unit/employee_test.rb +1 -1
- data/test/unit/helpers/admin/draft_invoices_helper_test.rb +4 -0
- data/test/unit/invoice_payment_test.rb +90 -50
- data/test/unit/invoice_test.rb +48 -8
- data/test/unit/notifier_test.rb +1 -1
- data/test/unit/payment_method_test.rb +1 -1
- data/test/unit/payment_test.rb +7 -7
- data/test/unit/setting_test.rb +1 -1
- data/test/unit/slimtimer_task_test.rb +1 -1
- data/test/unit/slimtimer_time_entry_test.rb +1 -1
- data/vendor/plugins/active_scaffold/CHANGELOG +3 -1
- data/vendor/plugins/active_scaffold/README +18 -5
- data/vendor/plugins/active_scaffold/environment.rb +1 -1
- data/vendor/plugins/active_scaffold/frontends/default/javascripts/active_scaffold.js +532 -430
- data/vendor/plugins/active_scaffold/frontends/default/javascripts/dhtml_history.js +1 -1
- data/vendor/plugins/active_scaffold/frontends/default/javascripts/form_enhancements.js +7 -4
- data/vendor/plugins/active_scaffold/frontends/default/stylesheets/stylesheet-ie.css +5 -5
- data/vendor/plugins/active_scaffold/frontends/default/stylesheets/stylesheet.css +54 -18
- data/vendor/plugins/active_scaffold/frontends/default/views/_add_existing_form.html.erb +3 -7
- data/vendor/plugins/active_scaffold/frontends/default/views/_create_form.html.erb +10 -7
- data/vendor/plugins/active_scaffold/frontends/default/views/_field_search.html.erb +7 -12
- data/vendor/plugins/active_scaffold/frontends/default/views/_form.html.erb +3 -3
- data/vendor/plugins/active_scaffold/frontends/default/views/_form_association.html.erb +15 -20
- data/vendor/plugins/active_scaffold/frontends/default/views/_form_association_footer.html.erb +8 -10
- data/vendor/plugins/active_scaffold/frontends/default/views/_form_attribute.html.erb +5 -2
- data/vendor/plugins/active_scaffold/frontends/default/views/_form_hidden_attribute.html.erb +2 -1
- data/vendor/plugins/active_scaffold/frontends/default/views/_horizontal_subform.html.erb +19 -21
- data/vendor/plugins/active_scaffold/frontends/default/views/{_form_association_header.html.erb → _horizontal_subform_header.html.erb} +2 -2
- data/vendor/plugins/active_scaffold/frontends/default/views/_horizontal_subform_record.html.erb +31 -0
- data/vendor/plugins/active_scaffold/frontends/default/views/_list.html.erb +4 -18
- data/vendor/plugins/active_scaffold/frontends/default/views/_list_actions.html.erb +18 -5
- data/vendor/plugins/active_scaffold/frontends/default/views/_list_calculations.html.erb +2 -9
- data/vendor/plugins/active_scaffold/frontends/default/views/_list_column_headings.html.erb +4 -4
- data/vendor/plugins/active_scaffold/frontends/default/views/_list_header.html.erb +6 -6
- data/vendor/plugins/active_scaffold/frontends/default/views/_list_inline_adapter.html.erb +2 -1
- data/vendor/plugins/active_scaffold/frontends/default/views/_list_messages.html.erb +20 -0
- data/vendor/plugins/active_scaffold/frontends/default/views/_list_pagination.html.erb +11 -0
- data/vendor/plugins/active_scaffold/frontends/default/views/_list_pagination_links.html.erb +3 -5
- data/vendor/plugins/active_scaffold/frontends/default/views/_list_record.html.erb +2 -26
- data/vendor/plugins/active_scaffold/frontends/default/views/_list_record_columns.html.erb +9 -0
- data/vendor/plugins/active_scaffold/frontends/default/views/_nested.html.erb +3 -12
- data/vendor/plugins/active_scaffold/frontends/default/views/_render_fields.js.rjs +11 -0
- data/vendor/plugins/active_scaffold/frontends/default/views/_search.html.erb +17 -11
- data/vendor/plugins/active_scaffold/frontends/default/views/_show.html.erb +3 -3
- data/vendor/plugins/active_scaffold/frontends/default/views/_show_columns.html.erb +8 -7
- data/vendor/plugins/active_scaffold/frontends/default/views/_update_actions.html.erb +3 -3
- data/vendor/plugins/active_scaffold/frontends/default/views/_update_form.html.erb +9 -6
- data/vendor/plugins/active_scaffold/frontends/default/views/_vertical_subform.html.erb +7 -0
- data/vendor/plugins/active_scaffold/frontends/default/views/_vertical_subform_record.html.erb +38 -0
- data/vendor/plugins/active_scaffold/frontends/default/views/add_existing.js.rjs +2 -1
- data/vendor/plugins/active_scaffold/frontends/default/views/delete.html.erb +1 -1
- data/vendor/plugins/active_scaffold/frontends/default/views/destroy.js.rjs +2 -2
- data/vendor/plugins/active_scaffold/frontends/default/views/edit_associated.js.rjs +20 -15
- data/vendor/plugins/active_scaffold/frontends/default/views/list.html.erb +12 -8
- data/vendor/plugins/active_scaffold/frontends/default/views/list.js.rjs +1 -0
- data/vendor/plugins/active_scaffold/frontends/default/views/mark.js.rjs +6 -0
- data/vendor/plugins/active_scaffold/frontends/default/views/on_create.js.rjs +12 -8
- data/vendor/plugins/active_scaffold/frontends/default/views/on_update.js.rjs +13 -6
- data/vendor/plugins/active_scaffold/frontends/default/views/render_field.js.rjs +1 -0
- data/vendor/plugins/active_scaffold/frontends/default/views/search.html.erb +2 -2
- data/vendor/plugins/active_scaffold/frontends/default/views/update.html.erb +2 -2
- data/vendor/plugins/active_scaffold/frontends/default/views/update_column.js.rjs +4 -3
- data/vendor/plugins/active_scaffold/frontends/default/views/update_row.js.rjs +2 -0
- data/vendor/plugins/active_scaffold/init.rb +2 -2
- data/vendor/plugins/active_scaffold/install.rb +1 -2
- data/vendor/plugins/active_scaffold/install_assets.rb +1 -1
- data/vendor/plugins/active_scaffold/lib/active_record_permissions.rb +53 -42
- data/vendor/plugins/active_scaffold/lib/active_scaffold.rb +96 -23
- data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/common_search.rb +18 -0
- data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/core.rb +152 -102
- data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/create.rb +81 -49
- data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/delete.rb +44 -17
- data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/field_search.rb +60 -46
- data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/list.rb +42 -37
- data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/mark.rb +72 -0
- data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/nested.rb +94 -92
- data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/search.rb +54 -40
- data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/show.rb +30 -10
- data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/update.rb +62 -47
- data/vendor/plugins/active_scaffold/lib/active_scaffold/attribute_params.rb +187 -185
- data/vendor/plugins/active_scaffold/lib/active_scaffold/config/base.rb +28 -3
- data/vendor/plugins/active_scaffold/lib/active_scaffold/config/core.rb +43 -3
- data/vendor/plugins/active_scaffold/lib/active_scaffold/config/create.rb +8 -15
- data/vendor/plugins/active_scaffold/lib/active_scaffold/config/delete.rb +3 -4
- data/vendor/plugins/active_scaffold/lib/active_scaffold/config/field_search.rb +19 -17
- data/vendor/plugins/active_scaffold/lib/active_scaffold/config/form.rb +2 -9
- data/vendor/plugins/active_scaffold/lib/active_scaffold/config/list.rb +46 -9
- data/vendor/plugins/active_scaffold/lib/active_scaffold/config/nested.rb +17 -7
- data/vendor/plugins/active_scaffold/lib/active_scaffold/config/search.rb +36 -16
- data/vendor/plugins/active_scaffold/lib/active_scaffold/config/show.rb +5 -12
- data/vendor/plugins/active_scaffold/lib/active_scaffold/config/subform.rb +8 -6
- data/vendor/plugins/active_scaffold/lib/active_scaffold/config/update.rb +12 -8
- data/vendor/plugins/active_scaffold/lib/active_scaffold/configurable.rb +2 -2
- data/vendor/plugins/active_scaffold/lib/active_scaffold/constraints.rb +173 -178
- data/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/action_columns.rb +101 -97
- data/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/action_link.rb +29 -19
- data/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/column.rb +74 -34
- data/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/columns.rb +74 -74
- data/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/set.rb +57 -62
- data/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/sorting.rb +73 -3
- data/vendor/plugins/active_scaffold/lib/active_scaffold/finder.rb +304 -234
- data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/association_helpers.rb +40 -40
- data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/controller_helpers.rb +39 -24
- data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/country_helpers.rb +32 -28
- data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/form_column_helpers.rb +157 -86
- data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/id_helpers.rb +7 -7
- data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/list_column_helpers.rb +278 -85
- data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/pagination_helpers.rb +38 -12
- data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/search_column_helpers.rb +74 -35
- data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/show_column_helpers.rb +53 -46
- data/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/view_helpers.rb +51 -17
- data/vendor/plugins/active_scaffold/lib/active_scaffold/locale/de.yml +69 -0
- data/vendor/plugins/active_scaffold/lib/active_scaffold/locale/en.yml +72 -0
- data/vendor/plugins/active_scaffold/lib/active_scaffold/locale/es.yml +23 -13
- data/vendor/plugins/active_scaffold/lib/active_scaffold/locale/fr.yml +68 -0
- data/vendor/plugins/active_scaffold/lib/active_scaffold/locale/hu.yml +24 -14
- data/vendor/plugins/active_scaffold/lib/active_scaffold/locale/ja.yml +69 -0
- data/vendor/plugins/active_scaffold/lib/active_scaffold/locale/ru.yml +72 -0
- data/vendor/plugins/active_scaffold/lib/active_scaffold/marked_model.rb +38 -0
- data/vendor/plugins/active_scaffold/lib/bridges/calendar_date_select/lib/as_cds_bridge.rb +47 -13
- data/vendor/plugins/active_scaffold/lib/bridges/dependent_protect/bridge.rb +10 -0
- data/vendor/plugins/active_scaffold/lib/bridges/dependent_protect/lib/dependent_protect_bridge.rb +11 -0
- data/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/as_file_column_bridge.rb +3 -6
- data/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/form_ui.rb +10 -2
- data/vendor/plugins/active_scaffold/lib/bridges/paperclip/bridge.rb +13 -0
- data/vendor/plugins/active_scaffold/lib/bridges/paperclip/lib/form_ui.rb +20 -0
- data/vendor/plugins/active_scaffold/lib/bridges/paperclip/lib/list_ui.rb +16 -0
- data/vendor/plugins/active_scaffold/lib/bridges/paperclip/lib/paperclip_bridge.rb +32 -0
- data/vendor/plugins/active_scaffold/lib/bridges/paperclip/lib/paperclip_bridge_helpers.rb +18 -0
- data/vendor/plugins/active_scaffold/lib/bridges/record_select/bridge.rb +5 -0
- data/vendor/plugins/active_scaffold/lib/bridges/record_select/lib/record_select_bridge.rb +79 -0
- data/vendor/plugins/active_scaffold/lib/bridges/semantic_attributes/bridge.rb +5 -0
- data/vendor/plugins/active_scaffold/lib/bridges/semantic_attributes/lib/semantic_attributes_bridge.rb +20 -0
- data/vendor/plugins/active_scaffold/lib/bridges/tiny_mce/bridge.rb +5 -0
- data/vendor/plugins/active_scaffold/lib/bridges/tiny_mce/lib/tiny_mce_bridge.rb +57 -0
- data/vendor/plugins/active_scaffold/lib/bridges/unobtrusive_date_picker/bridge.rb +9 -0
- data/vendor/plugins/active_scaffold/lib/bridges/unobtrusive_date_picker/lib/form_ui.rb +14 -0
- data/vendor/plugins/active_scaffold/lib/bridges/unobtrusive_date_picker/lib/unobtrusive_date_picker_bridge.rb +15 -0
- data/vendor/plugins/active_scaffold/lib/bridges/unobtrusive_date_picker/lib/view_helpers.rb +16 -0
- data/vendor/plugins/active_scaffold/lib/bridges/validation_reflection/bridge.rb +9 -0
- data/vendor/plugins/active_scaffold/lib/bridges/validation_reflection/lib/validation_reflection_bridge.rb +19 -0
- data/vendor/plugins/active_scaffold/lib/extensions/action_view_rendering.rb +20 -8
- data/vendor/plugins/active_scaffold/lib/extensions/generic_view_paths.rb +2 -2
- data/vendor/plugins/active_scaffold/lib/extensions/paginator_extensions.rb +26 -0
- data/vendor/plugins/active_scaffold/lib/extensions/resources.rb +6 -5
- data/vendor/plugins/active_scaffold/lib/extensions/reverse_associations.rb +26 -20
- data/vendor/plugins/active_scaffold/lib/extensions/unsaved_associated.rb +1 -1
- data/vendor/plugins/active_scaffold/lib/paginator.rb +1 -1
- data/vendor/plugins/active_scaffold/lib/responds_to_parent.rb +1 -1
- data/vendor/plugins/active_scaffold/shoulda_macros/macros.rb +136 -0
- data/vendor/plugins/active_scaffold/test/bridges/active_scaffold_dependent_protect_test.rb +34 -0
- data/vendor/plugins/active_scaffold/test/bridges/bridge_test.rb +43 -0
- data/vendor/plugins/active_scaffold/test/bridges/company.rb +81 -0
- data/vendor/plugins/active_scaffold/test/bridges/paperclip_test.rb +68 -0
- data/vendor/plugins/active_scaffold/test/bridges/tiny_mce_test.rb +27 -0
- data/vendor/plugins/active_scaffold/test/bridges/unobtrusive_date_picker_test.rb +49 -0
- data/vendor/plugins/active_scaffold/test/bridges/validation_reflection_test.rb +57 -0
- data/vendor/plugins/active_scaffold/test/config/base_test.rb +15 -0
- data/vendor/plugins/active_scaffold/test/config/core_test.rb +58 -0
- data/vendor/plugins/active_scaffold/test/config/create_test.rb +9 -6
- data/vendor/plugins/active_scaffold/test/config/delete_test.rb +33 -0
- data/vendor/plugins/active_scaffold/test/config/field_search_test.rb +47 -0
- data/vendor/plugins/active_scaffold/test/config/list_test.rb +66 -11
- data/vendor/plugins/active_scaffold/test/config/nested_test.rb +62 -0
- data/vendor/plugins/active_scaffold/test/config/search_test.rb +60 -0
- data/vendor/plugins/active_scaffold/test/config/show_test.rb +43 -0
- data/vendor/plugins/active_scaffold/test/config/subform_test.rb +17 -0
- data/vendor/plugins/active_scaffold/test/config/update_test.rb +27 -4
- data/vendor/plugins/active_scaffold/test/data_structures/action_columns_test.rb +2 -8
- data/vendor/plugins/active_scaffold/test/data_structures/action_link_test.rb +11 -11
- data/vendor/plugins/active_scaffold/test/data_structures/action_links_test.rb +5 -5
- data/vendor/plugins/active_scaffold/test/data_structures/association_column_test.rb +4 -3
- data/vendor/plugins/active_scaffold/test/data_structures/column_test.rb +29 -5
- data/vendor/plugins/active_scaffold/test/data_structures/sorting_test.rb +31 -1
- data/vendor/plugins/active_scaffold/test/data_structures/standard_column_test.rb +3 -13
- data/vendor/plugins/active_scaffold/test/data_structures/virtual_column_test.rb +0 -11
- data/vendor/plugins/active_scaffold/test/extensions/{array.rb → array_test.rb} +0 -0
- data/vendor/plugins/active_scaffold/test/helpers/form_column_helpers_test.rb +31 -0
- data/vendor/plugins/active_scaffold/test/helpers/list_column_helpers_test.rb +42 -0
- data/vendor/plugins/active_scaffold/test/helpers/pagination_helpers_test.rb +59 -0
- data/vendor/plugins/active_scaffold/test/misc/active_record_permissions_test.rb +154 -0
- data/vendor/plugins/active_scaffold/test/misc/attribute_params_test.rb +146 -0
- data/vendor/plugins/active_scaffold/test/misc/configurable_test.rb +2 -2
- data/vendor/plugins/active_scaffold/test/misc/constraints_test.rb +26 -8
- data/vendor/plugins/active_scaffold/test/misc/finder_test.rb +41 -19
- data/vendor/plugins/active_scaffold/test/misc/lang_test.rb +5 -6
- data/vendor/plugins/active_scaffold/test/mock_app/app/controllers/application_controller.rb +10 -0
- data/vendor/plugins/active_scaffold/test/mock_app/app/helpers/application_helper.rb +3 -0
- data/vendor/plugins/active_scaffold/test/mock_app/config/boot.rb +110 -0
- data/vendor/plugins/active_scaffold/test/mock_app/config/environment.rb +43 -0
- data/vendor/plugins/active_scaffold/test/mock_app/config/environments/development.rb +17 -0
- data/vendor/plugins/active_scaffold/test/mock_app/config/environments/production.rb +28 -0
- data/vendor/plugins/active_scaffold/test/mock_app/config/environments/test.rb +28 -0
- data/vendor/plugins/active_scaffold/test/mock_app/config/initializers/backtrace_silencers.rb +7 -0
- data/vendor/plugins/active_scaffold/test/mock_app/config/initializers/inflections.rb +10 -0
- data/vendor/plugins/active_scaffold/test/mock_app/config/initializers/mime_types.rb +5 -0
- data/vendor/plugins/active_scaffold/test/mock_app/config/initializers/new_rails_defaults.rb +19 -0
- data/vendor/plugins/active_scaffold/test/mock_app/config/initializers/session_store.rb +15 -0
- data/vendor/plugins/active_scaffold/test/mock_app/config/locales/en.yml +5 -0
- data/vendor/plugins/active_scaffold/test/mock_app/config/routes.rb +43 -0
- data/vendor/plugins/active_scaffold/test/mock_app/db/test.sqlite3 +1 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/blank.html +33 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/DO_NOT_EDIT +2 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/default/add.gif +0 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/default/arrow_down.gif +0 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/default/arrow_up.gif +0 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/default/close.gif +0 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/default/cross.png +0 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/default/indicator-small.gif +0 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/default/indicator.gif +0 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/images/active_scaffold/default/magnifier.png +0 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/javascripts/active_scaffold/DO_NOT_EDIT +2 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/javascripts/active_scaffold/default/active_scaffold.js +532 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/javascripts/active_scaffold/default/dhtml_history.js +867 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/javascripts/active_scaffold/default/form_enhancements.js +117 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/javascripts/active_scaffold/default/rico_corner.js +370 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/stylesheets/active_scaffold/DO_NOT_EDIT +2 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/stylesheets/active_scaffold/default/stylesheet-ie.css +35 -0
- data/vendor/plugins/active_scaffold/test/mock_app/public/stylesheets/active_scaffold/default/stylesheet.css +845 -0
- data/vendor/plugins/active_scaffold/test/model_stub.rb +17 -1
- data/vendor/plugins/active_scaffold/test/test_helper.rb +31 -5
- data/vendor/plugins/active_scaffold/uninstall.rb +2 -1
- data/vendor/plugins/active_scaffold_form_observation/init.rb +1 -1
- data/vendor/plugins/active_scaffold_form_observation/lib/active_scaffold_form_observation.rb +1 -2
- data/vendor/plugins/active_scaffold_full_refresh/init.rb +2 -0
- data/vendor/plugins/active_scaffold_full_refresh/lib/active_scaffold_full_refresh.rb +29 -0
- data/vendor/plugins/acts_as_money/{tasks → lib/tasks}/money_tasks.rake +0 -0
- metadata +668 -563
- data/app/model_views/client_accounting.rb +0 -5
- data/app/model_views/invoices_with_total.rb +0 -41
- data/app/views/admin/activities/_adjustment_column.rhtml +0 -23
- data/app/views/admin/activities_with_prices/move_to_invoice.rjs +0 -9
- data/app/views/notifier/invoice_available.html.rhtml +0 -5
- data/public/javascripts/prototype.js-1.6.0.3 +0 -4320
- data/test/functional/admin/activities_controller_test.rb +0 -8
- data/test/functional/admin/adjustments_controller_test.rb +0 -8
- data/test/functional/admin/client_accounting_controller_test.rb +0 -8
- data/test/functional/admin/client_financial_transactions_controller_test.rb +0 -8
- data/test/functional/admin/client_representatives_controller_test.rb +0 -8
- data/test/functional/admin/clients_controller_test.rb +0 -8
- data/test/functional/admin/employee_client_labor_rate_controller_test.rb +0 -8
- data/test/functional/admin/employees/slimtimer_controller_test.rb +0 -8
- data/test/functional/admin/employees_controller_test.rb +0 -8
- data/test/functional/admin/invoices_controller_test.rb +0 -8
- data/test/functional/admin/labors_controller_test.rb +0 -8
- data/test/functional/admin/materials_controller_test.rb +0 -8
- data/test/functional/admin/payments_controller_test.rb +0 -8
- data/test/functional/admin/proposals_controller_test.rb +0 -8
- data/test/functional/admin/settings_controller_test.rb +0 -8
- data/test/functional/authentication_controller_test.rb +0 -8
- data/vendor/plugins/active_scaffold/frontends/default/views/_form_association_record.html.erb +0 -27
- data/vendor/plugins/active_scaffold/frontends/default/views/_live_search.html.erb +0 -25
- data/vendor/plugins/active_scaffold/frontends/default/views/form_messages_on_create.js.rjs +0 -2
- data/vendor/plugins/active_scaffold/frontends/default/views/form_messages_on_update.js.rjs +0 -2
- data/vendor/plugins/active_scaffold/lib/active_scaffold/actions/live_search.rb +0 -46
- data/vendor/plugins/active_scaffold/lib/active_scaffold/config/live_search.rb +0 -52
- data/vendor/plugins/active_scaffold/lib/active_scaffold/locale/en.rb +0 -66
- data/vendor/plugins/active_scaffold/lib/extensions/name_option_for_datetime.rb +0 -12
- data/vendor/plugins/active_scaffold/test/misc/active_record_permissions.rb +0 -154
@@ -1,7 +1,7 @@
|
|
1
1
|
module Admin::IsActiveColumnHelper
|
2
2
|
|
3
3
|
# This is for the Client and Employees controller itself:
|
4
|
-
def is_active_form_column(record,
|
4
|
+
def is_active_form_column(record, options)
|
5
5
|
input_id = 'record_is_active'
|
6
6
|
|
7
7
|
confirm_prompt =
|
@@ -14,7 +14,7 @@ module Admin::IsActiveColumnHelper
|
|
14
14
|
modalbox_params = { :title => 'Confirm De-activation', :width => 300}
|
15
15
|
|
16
16
|
select_tag(
|
17
|
-
|
17
|
+
options[:name],
|
18
18
|
options_for_select( [ ["Yes", 'true'], ["No", 'false'] ], record.is_active.to_s ),
|
19
19
|
:id => input_id
|
20
20
|
)+
|
@@ -2,7 +2,18 @@ module Admin::LaborsHelper
|
|
2
2
|
include ExtensibleObjectHelper
|
3
3
|
include Admin::ActivityTypeFieldHelper
|
4
4
|
|
5
|
-
|
5
|
+
alias :activity_labor_tax_column :tax_column
|
6
|
+
alias :activity_labor_cost_column :cost_column
|
7
|
+
|
8
|
+
alias :activity_labor_occurred_on_form_column :occurred_on_form_column
|
9
|
+
alias :activity_labor_client_form_column :client_form_column
|
10
|
+
alias :activity_labor_cost_form_column :cost_form_column
|
11
|
+
|
12
|
+
alias :activity_labor_tax_form_column :tax_form_column
|
13
|
+
alias :activity_labor_comments_form_column :comments_form_column
|
14
|
+
|
15
|
+
|
16
|
+
def activity_labor_duration_column(record)
|
6
17
|
h record.friendly_duration
|
7
18
|
end
|
8
19
|
|
@@ -2,4 +2,15 @@ module Admin::MaterialsHelper
|
|
2
2
|
include ::Admin::ActivityTypeFieldHelper
|
3
3
|
include ::Admin::ActivityTaxFieldHelper
|
4
4
|
|
5
|
+
alias :activity_material_tax_column :tax_column
|
6
|
+
alias :activity_material_cost_column :cost_column
|
7
|
+
|
8
|
+
alias :activity_material_occurred_on_form_column :occurred_on_form_column
|
9
|
+
alias :activity_material_client_form_column :client_form_column
|
10
|
+
alias :activity_material_cost_form_column :cost_form_column
|
11
|
+
|
12
|
+
alias :activity_material_tax_form_column :tax_form_column
|
13
|
+
alias :activity_material_comments_form_column :comments_form_column
|
14
|
+
|
15
|
+
alias :activity_material_apply_tax_form_column :apply_tax_form_column
|
5
16
|
end
|
@@ -1,47 +1,222 @@
|
|
1
1
|
module Admin::PaymentsHelper
|
2
2
|
include Admin::IsActiveColumnHelper
|
3
3
|
|
4
|
-
def
|
4
|
+
def payment_is_allocated_column(record)
|
5
|
+
record.is_allocated? ? 'Yes' : 'No'
|
6
|
+
end
|
7
|
+
|
8
|
+
def payment_amount_column(record)
|
5
9
|
h_money record.amount
|
6
10
|
end
|
11
|
+
|
12
|
+
def payment_client_form_column(record, options)
|
13
|
+
(record.new_record?) ?
|
14
|
+
select_tag(
|
15
|
+
"record[client][id]",
|
16
|
+
options_for_select(
|
17
|
+
[["- select -", nil]]+Client.find(:all, :order => 'company_name ASC').collect{|c| [c.company_name, c.id] },
|
18
|
+
record.client_id
|
19
|
+
),
|
20
|
+
options_for_column('client')
|
21
|
+
) :
|
22
|
+
span_field(h(record.client.company_name))
|
23
|
+
end
|
24
|
+
|
25
|
+
def payment_paid_on_form_column(record, options)
|
26
|
+
(record.new_record?) ?
|
27
|
+
input(:record, :paid_on, options_for_column('paid_on')) :
|
28
|
+
span_field(h(record.paid_on.strftime('%m/%d/%y %I:%M %p')))
|
29
|
+
end
|
7
30
|
|
8
|
-
def
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
31
|
+
def payment_amount_form_column(record, options)
|
32
|
+
(record.new_record?) ?
|
33
|
+
text_field_tag(
|
34
|
+
options[:name],
|
35
|
+
record.amount,
|
36
|
+
options_for_column('amount').merge( {:size => 8, :class=>'text-input' } )
|
37
|
+
) :
|
38
|
+
span_field(h_money(record.amount))
|
39
|
+
end
|
40
|
+
|
41
|
+
def payment_payment_method_form_column(record, options)
|
42
|
+
(record.new_record?) ?
|
43
|
+
select_tag(
|
44
|
+
"record[payment_method][id]",
|
45
|
+
options_for_select(
|
46
|
+
[["- select -", nil]]+PaymentMethod.find(:all, :order => 'name ASC').collect{|pm| [pm.name, pm.id] },
|
47
|
+
record.payment_method_id
|
48
|
+
),
|
49
|
+
options_for_column('payment_method')
|
50
|
+
) :
|
51
|
+
span_field(h(record.payment_method.name))
|
14
52
|
end
|
15
53
|
|
16
|
-
def
|
17
|
-
|
54
|
+
def payment_payment_method_identifier_form_column(record, options)
|
55
|
+
(record.new_record?) ?
|
56
|
+
text_field_tag(
|
57
|
+
options[:name],
|
58
|
+
record.payment_method_identifier,
|
59
|
+
options_for_column('payment_method_identifier').merge( {:size => 30, :class=>'text-input' } )
|
60
|
+
)+span_field(t(:payment_method_identifier_description), :class => "description") :
|
61
|
+
span_field(h(record.payment_method_identifier))
|
62
|
+
end
|
63
|
+
|
64
|
+
def payment_amount_unallocated_form_column(record, options)
|
65
|
+
span_field(
|
66
|
+
(record.amount) ? h_money(record.amount_unallocated) : t(:enter_a_payment_amount),
|
67
|
+
:id => ('record_amount_unallocated_%s' % record.id)
|
68
|
+
)
|
18
69
|
end
|
19
70
|
|
20
|
-
def
|
71
|
+
def payment_assignments_column(record)
|
21
72
|
record.invoice_assignments.collect{|ia|
|
22
73
|
'%s to Invoice %d' % [ia.amount.format, ia.invoice.id ]
|
23
74
|
}.join ', '
|
24
75
|
end
|
25
76
|
|
26
|
-
def
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
# '<ul class="checkbox-list">'+
|
31
|
-
# group.collect{ |client|
|
32
|
-
# list_i = (list_i) ? list_i+1 : 0
|
33
|
-
# chk_name = "%s[%d][id]" % [input_name, client.id]
|
34
|
-
#
|
35
|
-
# '<li>%s<label for="%s[%d][id]">%s</label></li>' % [
|
36
|
-
# check_box_tag(chk_name, client.id, record.client_ids.include?(client.id) ),
|
37
|
-
# chk_name,
|
38
|
-
# list_i,
|
39
|
-
# client.company_name
|
40
|
-
# ]
|
41
|
-
# }.join+
|
42
|
-
# '</ul>'
|
43
|
-
# }.join
|
44
|
-
'<div id="record_invoice_assignment_%s">%s</div>' % [record.id, '<span class="active-scaffold_detail_value">(Choose a Client)</span>']
|
77
|
+
def payment_invoice_assignments_column(record)
|
78
|
+
record.invoice_assignments.collect{ |asgn|
|
79
|
+
'%s to (Invoice %d)' % [asgn.amount.format, asgn.invoice_id ]
|
80
|
+
}.join ', '
|
45
81
|
end
|
82
|
+
|
83
|
+
def payment_assignments_form_column(record, options = nil)
|
84
|
+
content_tag(:div, :id => 'record_invoice_assignment_%s' % record.id ) do
|
85
|
+
if record.client
|
86
|
+
|
87
|
+
# First, we show the easy, upaid invoices. These should always be visible:
|
88
|
+
show_invoices = record.client.unpaid_invoices.to_a
|
89
|
+
|
90
|
+
# Now - we add any additional invoices that might be around from existing assignments (the case for an edit...)
|
91
|
+
record.invoice_assignments.each do |inv_asgn|
|
92
|
+
show_invoices << inv_asgn.invoice unless show_invoices.find{|show_inv| show_inv.id == inv_asgn.invoice_id}
|
93
|
+
end
|
94
|
+
|
95
|
+
# And now let's sort everything by the id
|
96
|
+
show_invoices = show_invoices.sort!{|a,b| a.id <=> b.id }
|
97
|
+
|
98
|
+
if show_invoices.length > 0
|
99
|
+
|
100
|
+
assignment_observation = @active_scaffold_observations.find{|o| o[:action] == :on_assignment_observation}.dup
|
101
|
+
|
102
|
+
assignment_observation[:fields] += show_invoices.collect{ |inv|
|
103
|
+
'invoice_assignments_%d_amount' % inv.id
|
104
|
+
}
|
105
|
+
|
106
|
+
# This is a look-up map that will tell us the field values to use below:
|
107
|
+
inv_assignments = record.invoice_assignments.inject({}){|ret,ia| ret.merge({ia.invoice_id => ia.amount}) }
|
108
|
+
|
109
|
+
content_tag(:ul, :class => 'invoice_assignment_inputs') do
|
110
|
+
show_invoices.collect{|inv|
|
111
|
+
col_name = 'invoice_assignments_%d_amount' % inv.id
|
112
|
+
|
113
|
+
assignment_amount = nil
|
114
|
+
assignment_amount = (inv_assignments.has_key? inv.id) ? inv_assignments[inv.id] : '0.00' if record.amount
|
46
115
|
|
116
|
+
'<li>%s%s %s</li>' % [
|
117
|
+
text_field_tag(
|
118
|
+
'record[invoice_assignments][%d][amount]' % inv.id,
|
119
|
+
assignment_amount,
|
120
|
+
:size => 8,
|
121
|
+
:class => 'text-input',
|
122
|
+
:id => options_for_column(col_name)[:id]
|
123
|
+
),
|
124
|
+
active_scaffold_observe_field(col_name,assignment_observation),
|
125
|
+
t(
|
126
|
+
:invoice_outstanding_details,
|
127
|
+
:inv_id => inv.id,
|
128
|
+
:issued_on => h(inv.issued_on.strftime('%m/%d/%y')),
|
129
|
+
:amount_outstanding => span_field(
|
130
|
+
h_money(invoice_amount_outstanding_for(inv, record.id,inv_assignments[inv.id])),
|
131
|
+
:id => ('%s_outstanding' % options_for_column(col_name)[:id])
|
132
|
+
)
|
133
|
+
)
|
134
|
+
]
|
135
|
+
}.join
|
136
|
+
end
|
137
|
+
else
|
138
|
+
span_field t(:no_outstanding_invoices_for_account)
|
139
|
+
end
|
140
|
+
else
|
141
|
+
span_field t(:choose_a_client)
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
end
|
146
|
+
|
147
|
+
# This keeps our rjs files a little DRY-er
|
148
|
+
def amount_field_id
|
149
|
+
"record_amount_%s" % @record.id
|
150
|
+
end
|
151
|
+
|
152
|
+
# This keeps our rjs files a little DRY-er
|
153
|
+
def amount_unallocated_field_id
|
154
|
+
"record_amount_unallocated_%s" % @record.id
|
155
|
+
end
|
156
|
+
|
157
|
+
# All this craziness exists to show a modal dialog asking the user to confirm any payment that isn't fully allocated.
|
158
|
+
def submit_tag(*args)
|
159
|
+
if (/\A(?:#{as_(:update)}|#{as_(:create)})\Z/.match args[0])
|
160
|
+
action = args[0] == as_(:update) ? :update : :create
|
161
|
+
|
162
|
+
button_to_function(
|
163
|
+
args[0],
|
164
|
+
"amt_unalloc = $$('#record_amount_unallocated_%s span');
|
165
|
+
if (amt_unalloc.length > 0 && amt_unalloc.first().innerHTML != '%s') {
|
166
|
+
show_modal_after_close(%s,%s);
|
167
|
+
} else {
|
168
|
+
$('%s').onsubmit();
|
169
|
+
}" % [
|
170
|
+
@record.id,
|
171
|
+
Money.new(0).format,
|
172
|
+
render(:file => 'admin/payments/commit_payment_warning.html.erb', :layout => false, :locals => {:action => action}).to_json,
|
173
|
+
{:title => 'Are you sure you wish to save?', :width => 600}.to_json,
|
174
|
+
element_form_id(:action => action)
|
175
|
+
],
|
176
|
+
args[1]
|
177
|
+
)
|
178
|
+
else
|
179
|
+
super(*args)
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
private
|
184
|
+
|
185
|
+
# This method is a little weird. But, its used in a couple places to determine what the amount oustanding
|
186
|
+
# is for an invoice, after the provided payment_id has been removied, and after the provided amount
|
187
|
+
# has been applied. Its not as efficient as I'd like. But, it works
|
188
|
+
def invoice_amount_outstanding_for(invoice, payment_id, amount = nil)
|
189
|
+
invoice.amount-(
|
190
|
+
invoice.payment_assignments.to_a.reject{|ip|
|
191
|
+
payment_id == ip.payment_id
|
192
|
+
}.inject(Money.new(0)){|ret, ip|
|
193
|
+
ret+ip.amount
|
194
|
+
}+(
|
195
|
+
(amount) ? amount : Money.new(0)
|
196
|
+
)
|
197
|
+
)
|
198
|
+
end
|
199
|
+
|
200
|
+
def span_field(content, options = {})
|
201
|
+
content_tag(
|
202
|
+
:span,
|
203
|
+
content,
|
204
|
+
{:class => 'active-scaffold_detail_value' }.merge(options)
|
205
|
+
)
|
206
|
+
end
|
207
|
+
|
208
|
+
# We write this as an overide on the default behavior. Nothing needs to change in the case that this is a
|
209
|
+
# new record. But, if we're editing, a number of our input fields aren't on the page. For this
|
210
|
+
# case, we need to not query these for their value
|
211
|
+
def active_scaffold_observe_field(col_name, observation)
|
212
|
+
unless @record.new_record?
|
213
|
+
# We won't be observing anything if its one of these columns
|
214
|
+
return %{} if /\A(?:client|amount)\Z/.match col_name
|
215
|
+
|
216
|
+
# Its an amount column. For these, just remove the $F reference to the removed fields
|
217
|
+
["client", "amount"].each{ |f| observation[:fields].delete f}
|
218
|
+
end
|
219
|
+
|
220
|
+
super col_name, observation
|
221
|
+
end
|
47
222
|
end
|
@@ -1,3 +1,13 @@
|
|
1
1
|
module Admin::ProposalsHelper
|
2
2
|
include Admin::ActivityTypeFieldHelper
|
3
|
+
|
4
|
+
alias :activity_proposal_tax_column :tax_column
|
5
|
+
alias :activity_proposal_cost_column :cost_column
|
6
|
+
|
7
|
+
alias :activity_proposal_occurred_on_form_column :occurred_on_form_column
|
8
|
+
alias :activity_proposal_client_form_column :client_form_column
|
9
|
+
alias :activity_proposal_cost_form_column :cost_form_column
|
10
|
+
|
11
|
+
alias :activity_proposal_tax_form_column :tax_form_column
|
12
|
+
alias :activity_proposal_comments_form_column :comments_form_column
|
3
13
|
end
|
@@ -54,7 +54,8 @@ module AdminLayoutHelper
|
|
54
54
|
end
|
55
55
|
|
56
56
|
admin.item 'Accounts Ledger', controller_url("Admin/Client_Accounting") do |accounting|
|
57
|
-
accounting.item 'Invoices', controller_url("Admin/Invoices")
|
57
|
+
accounting.item 'All Invoices', controller_url("Admin/Invoices")
|
58
|
+
accounting.item 'Draft Invoices', controller_url("Admin/draft_invoices")
|
58
59
|
accounting.item 'Payments', controller_url("Admin/Payments")
|
59
60
|
end
|
60
61
|
|
@@ -74,17 +75,13 @@ module AdminLayoutHelper
|
|
74
75
|
url_for :controller => for_controller, :only_path => true
|
75
76
|
end
|
76
77
|
|
77
|
-
def index_with_admin_helper
|
78
|
-
redirect_to :action => :list
|
79
|
-
end
|
80
|
-
|
81
78
|
def self.append_features(base)
|
82
79
|
super
|
83
80
|
|
84
81
|
base.class_eval do
|
85
82
|
layout 'admin'
|
86
83
|
|
87
|
-
|
84
|
+
|
88
85
|
end
|
89
86
|
end
|
90
87
|
|
@@ -39,15 +39,12 @@ module AuthenticationHelper
|
|
39
39
|
def welcome_form_box(name, &block)
|
40
40
|
logo_w=120
|
41
41
|
|
42
|
-
concat(
|
43
|
-
'
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
],
|
49
|
-
block.binding
|
50
|
-
)
|
42
|
+
concat('%s<div id="%s_welcome" class="welcome_box clearfix"><h1>%s</h1>%s' % [
|
43
|
+
image_tag('brisk-bills-logo.gif', :size => '%dx%d' % [logo_w, 300.to_f/316*logo_w], :alt => "Brisk Bills"),
|
44
|
+
name.underscore,
|
45
|
+
h(name),
|
46
|
+
image_tag('login-form-spinner.gif', :size => '32x32', :style => 'visibility: hidden', :id => 'loading_indicator')
|
47
|
+
])
|
51
48
|
form_remote_tag(
|
52
49
|
{
|
53
50
|
:url => url_for(:action => params[:action]),
|
@@ -55,7 +52,7 @@ module AuthenticationHelper
|
|
55
52
|
},
|
56
53
|
&block
|
57
54
|
)
|
58
|
-
concat
|
55
|
+
concat('</div>')
|
59
56
|
end
|
60
57
|
|
61
58
|
end
|
@@ -5,7 +5,6 @@ module MoneyModelHelper
|
|
5
5
|
super
|
6
6
|
|
7
7
|
base.class_eval do
|
8
|
-
super
|
9
8
|
|
10
9
|
# This prevents a NoMethodError: undefined method `amount_before_type_cast' error when validations kick-in
|
11
10
|
def method_missing(symbol, *params)
|
@@ -18,4 +17,4 @@ module MoneyModelHelper
|
|
18
17
|
|
19
18
|
end
|
20
19
|
end
|
21
|
-
end
|
20
|
+
end
|
data/app/models/activity.rb
CHANGED
@@ -81,28 +81,38 @@ class Activity < ActiveRecord::Base
|
|
81
81
|
end
|
82
82
|
|
83
83
|
def authorized_for?(options)
|
84
|
+
return true unless options.try(:[],:action)
|
85
|
+
|
84
86
|
case options[:action].to_s
|
85
|
-
when /^(
|
87
|
+
when /^(edit|delete)$/
|
86
88
|
(is_published?) ? false : true
|
87
89
|
else
|
88
90
|
true
|
89
91
|
end
|
90
92
|
end
|
91
93
|
|
92
|
-
def move_to_invoice(dest)
|
94
|
+
def move_to_invoice!(dest)
|
93
95
|
dest_invoice = (dest.class == Integer) ? Invoice.find(dest) : dest
|
94
96
|
|
95
97
|
raise StandardError, "Can't move an already-published activity." if is_published?
|
96
|
-
raise StandardError, "Can't move an activity to an already published invoice." if dest_invoice.is_published?
|
98
|
+
raise StandardError, "Can't move an activity to an already published invoice." if dest_invoice.try(:is_published?)
|
97
99
|
|
98
|
-
|
99
|
-
|
100
|
-
|
100
|
+
if dest_invoice.nil?
|
101
|
+
self.invoice_id = nil
|
102
|
+
|
103
|
+
# OMG - this took me forever to figure out. It *seems* there's some bug in rails 2.3.8 that's
|
104
|
+
# causing this not to update from the above statement, when we're setting the association to nil
|
105
|
+
# Weirder still - this only happens when transactions are enabled. (Such as when we're in test:units!)
|
106
|
+
@changed_attributes["invoice_id"] = nil
|
107
|
+
else
|
108
|
+
self.invoice_id = (dest_invoice.nil?) ? nil : dest_invoice.id
|
109
|
+
self.client_id = dest_invoice.client_id
|
110
|
+
end
|
101
111
|
|
102
112
|
@dont_validate_type_associations = true
|
103
113
|
save!
|
104
114
|
@dont_validate_type_associations = false
|
105
115
|
end
|
106
|
-
|
116
|
+
|
107
117
|
handle_extensions
|
108
118
|
end
|