bookyt 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/images/16x16/add.png +0 -0
- data/app/assets/images/16x16/alert.png +0 -0
- data/app/assets/images/16x16/combolink.png +0 -0
- data/app/assets/images/16x16/copy.png +0 -0
- data/app/assets/images/16x16/delete.png +0 -0
- data/app/assets/images/16x16/edit.png +0 -0
- data/app/assets/images/16x16/filter.png +0 -0
- data/app/assets/images/16x16/index.png +0 -0
- data/app/assets/images/16x16/notice.png +0 -0
- data/app/assets/images/16x16/pdf.png +0 -0
- data/app/assets/images/16x16/print.png +0 -0
- data/app/assets/images/16x16/show.png +0 -0
- data/app/assets/images/22x22/arrow-right.png +0 -0
- data/app/assets/images/22x22/edit.png +0 -0
- data/app/assets/images/22x22/insert_booking.png +0 -0
- data/app/assets/images/22x22/remove.png +0 -0
- data/app/assets/images/32x32/edit.png +0 -0
- data/app/assets/images/32x32/remove.png +0 -0
- data/app/assets/images/48x48/accounting.png +0 -0
- data/app/assets/images/48x48/basic_claims_data.png +0 -0
- data/app/assets/images/48x48/contacts.png +0 -0
- data/app/assets/images/48x48/invoicing.png +0 -0
- data/app/assets/images/48x48/nav_users.png +0 -0
- data/app/assets/images/48x48/settings.png +0 -0
- data/app/assets/images/48x48/store.png +0 -0
- data/app/assets/images/button_bg.png +0 -0
- data/app/assets/images/crystal-icons/16x16/filter.png +0 -0
- data/app/assets/images/down.png +0 -0
- data/app/assets/images/favicon.ico +0 -0
- data/app/assets/images/flavour-extended/48x48/invoice.png +0 -0
- data/app/assets/images/free-business-desktop-icons/48x48/business.png +0 -0
- data/app/assets/images/gnome-web-icons/48x48/Gnome-X-Office-Address-Book-48.png +0 -0
- data/app/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/app/assets/images/jquery-ui/ui-bg_flat_55_fbec88_40x100.png +0 -0
- data/app/assets/images/jquery-ui/ui-bg_glass_75_759fcf_1x400.png +0 -0
- data/app/assets/images/jquery-ui/ui-bg_glass_85_aeb9cf_1x400.png +0 -0
- data/app/assets/images/jquery-ui/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/app/assets/images/jquery-ui/ui-bg_gloss-wave_55_aeb9cf_500x100.png +0 -0
- data/app/assets/images/jquery-ui/ui-bg_inset-hard_100_759fcf_1x100.png +0 -0
- data/app/assets/images/jquery-ui/ui-bg_inset-hard_100_f6f6f6_1x100.png +0 -0
- data/app/assets/images/jquery-ui/ui-icons_217bc0_256x240.png +0 -0
- data/app/assets/images/jquery-ui/ui-icons_2e83ff_256x240.png +0 -0
- data/app/assets/images/jquery-ui/ui-icons_469bdd_256x240.png +0 -0
- data/app/assets/images/jquery-ui/ui-icons_6da8d5_256x240.png +0 -0
- data/app/assets/images/jquery-ui/ui-icons_cd0a0a_256x240.png +0 -0
- data/app/assets/images/jquery-ui/ui-icons_d8e7f3_256x240.png +0 -0
- data/app/assets/images/jquery-ui/ui-icons_f9bd01_256x240.png +0 -0
- data/app/assets/images/jquery/tooltip/black_arrow.png +0 -0
- data/app/assets/images/letter-logo.alpha.png +0 -0
- data/app/assets/images/letter-logo.big.png +0 -0
- data/app/assets/images/letter-logo.orig.png +0 -0
- data/app/assets/images/letter-logo.png +0 -0
- data/app/assets/images/loading.gif +0 -0
- data/app/assets/images/logo.png +0 -0
- data/app/assets/images/oxygen-icons/16x16/application-pdf.png +0 -0
- data/app/assets/images/oxygen-icons/16x16/document-preview.png +0 -0
- data/app/assets/images/oxygen-icons/16x16/document-print.png +0 -0
- data/app/assets/images/oxygen-icons/16x16/edit-copy.png +0 -0
- data/app/assets/images/oxygen-icons/16x16/go-next.png +0 -0
- data/app/assets/images/oxygen-icons/16x16/mail-mark-notjunk.png +0 -0
- data/app/assets/images/oxygen-icons/16x16/status_unknown.png +0 -0
- data/app/assets/images/oxygen-icons/48x48/system-users.png +0 -0
- data/app/assets/images/rails.png +0 -0
- data/app/assets/images/up.png +0 -0
- data/app/assets/javascripts/application.js +49 -0
- data/app/assets/javascripts/cyt.js +86 -0
- data/app/assets/javascripts/jquery-ui.js +11437 -0
- data/app/assets/javascripts/jquery.dirtyform.js +242 -0
- data/app/assets/javascripts/jquery.form.js +785 -0
- data/app/assets/javascripts/jquery.js +8936 -0
- data/app/assets/javascripts/jquery.meio.mask.js +683 -0
- data/app/assets/javascripts/jquery.remotipart.js +46 -0
- data/app/assets/javascripts/jquery.ui.combobox.js +77 -0
- data/app/assets/javascripts/jquery_ujs.js +316 -0
- data/app/assets/javascripts/nested_form.js +51 -0
- data/app/assets/javascripts/tooltip.js +343 -0
- data/app/assets/stylesheets/.gitkeep +0 -0
- data/app/assets/stylesheets/ie.scss +16 -0
- data/app/assets/stylesheets/ie6.scss +4 -0
- data/app/assets/stylesheets/partials/_base.sass +39 -0
- data/app/assets/stylesheets/partials/_content.sass +60 -0
- data/app/assets/stylesheets/partials/_jquery.sass +2 -0
- data/app/assets/stylesheets/partials/_layout.sass +21 -0
- data/app/assets/stylesheets/partials/_sidebar.sass +5 -0
- data/app/assets/stylesheets/partials/content/_accounting.sass +41 -0
- data/app/assets/stylesheets/partials/content/_ajax_indicator.sass +28 -0
- data/app/assets/stylesheets/partials/content/_app.sass +43 -0
- data/app/assets/stylesheets/partials/content/_combobox.sass +8 -0
- data/app/assets/stylesheets/partials/content/_cyt.sass +200 -0
- data/app/assets/stylesheets/partials/content/_fancy_buttons.sass +10 -0
- data/app/assets/stylesheets/partials/content/_flash_errors.sass +46 -0
- data/app/assets/stylesheets/partials/content/_form_view.sass +20 -0
- data/app/assets/stylesheets/partials/content/_icons.sass +35 -0
- data/app/assets/stylesheets/partials/content/_invoice.sass +6 -0
- data/app/assets/stylesheets/partials/content/_overview.sass +40 -0
- data/app/assets/stylesheets/partials/content/_pagination.sass +61 -0
- data/app/assets/stylesheets/partials/content/_person.sass +5 -0
- data/app/assets/stylesheets/partials/content/_scaffold.sass +67 -0
- data/app/assets/stylesheets/partials/content/_table_list.sass +26 -0
- data/app/assets/stylesheets/partials/content/formtastic/_formtastic.sass +201 -0
- data/app/assets/stylesheets/partials/content/formtastic/_formtastic_cyt.sass +90 -0
- data/app/assets/stylesheets/partials/formtastic/_custom_fields.sass +2 -0
- data/app/assets/stylesheets/partials/formtastic/_formtastic_base.sass +652 -0
- data/app/assets/stylesheets/partials/jquery/_jquery_ui.sass +1461 -0
- data/app/assets/stylesheets/partials/jquery/_tooltip.sass +21 -0
- data/app/assets/stylesheets/partials/layout/_header.sass +29 -0
- data/app/assets/stylesheets/partials/layout/_navigation.sass +2 -0
- data/app/assets/stylesheets/partials/layout/navigation/_main.sass +34 -0
- data/app/assets/stylesheets/partials/layout/navigation/_sidebar.sass +18 -0
- data/app/assets/stylesheets/partials/print/_app.sass +21 -0
- data/app/assets/stylesheets/partials/print/_layout.sass +24 -0
- data/app/assets/stylesheets/print.scss +5 -0
- data/app/assets/stylesheets/screen.scss +12 -0
- data/app/controllers/account_types_controller.rb +2 -0
- data/app/controllers/accounts_controller.rb +30 -0
- data/app/controllers/application_controller.rb +12 -0
- data/app/controllers/attachments_controller.rb +15 -0
- data/app/controllers/authorized_controller.rb +24 -0
- data/app/controllers/bank_accounts_controller.rb +2 -0
- data/app/controllers/booking_imports_controller.rb +2 -0
- data/app/controllers/booking_templates_controller.rb +8 -0
- data/app/controllers/bookings_controller.rb +64 -0
- data/app/controllers/charge_booking_templates_controller.rb +2 -0
- data/app/controllers/charge_rates_controller.rb +2 -0
- data/app/controllers/companies_controller.rb +8 -0
- data/app/controllers/credit_invoices_controller.rb +29 -0
- data/app/controllers/customers_controller.rb +12 -0
- data/app/controllers/debit_invoices_controller.rb +43 -0
- data/app/controllers/direct_bookings_controller.rb +17 -0
- data/app/controllers/employees_controller.rb +3 -0
- data/app/controllers/employments_controller.rb +2 -0
- data/app/controllers/invoices_controller.rb +21 -0
- data/app/controllers/notes_controller.rb +34 -0
- data/app/controllers/overview_controller.rb +6 -0
- data/app/controllers/people_controller.rb +13 -0
- data/app/controllers/salaries_controller.rb +46 -0
- data/app/controllers/tenants_controller.rb +39 -0
- data/app/controllers/users_controller.rb +26 -0
- data/app/helpers/application_helper.rb +52 -0
- data/app/helpers/booking_helper.rb +10 -0
- data/app/helpers/booking_template_helper.rb +17 -0
- data/app/helpers/charge_rate_helper.rb +5 -0
- data/app/helpers/invoice_helper.rb +9 -0
- data/app/helpers/vat_rate_helper.rb +10 -0
- data/app/inputs/combobox_input.rb +23 -0
- data/app/inputs/date_field_input.rb +5 -0
- data/app/inputs/hour_field_input.rb +5 -0
- data/app/models/ability.rb +34 -0
- data/app/models/attachment.rb +13 -0
- data/app/models/booking_import.rb +8 -0
- data/app/models/booking_import_observer.rb +7 -0
- data/app/models/booking_reference.rb +4 -0
- data/app/models/booking_template.rb +92 -0
- data/app/models/charge_booking_template.rb +57 -0
- data/app/models/charge_rate.rb +30 -0
- data/app/models/civil_status.rb +5 -0
- data/app/models/company.rb +5 -0
- data/app/models/credit_invoice.rb +32 -0
- data/app/models/customer.rb +4 -0
- data/app/models/debit_invoice.rb +24 -0
- data/app/models/employee.rb +6 -0
- data/app/models/employment.rb +28 -0
- data/app/models/invoice.rb +145 -0
- data/app/models/line_item.rb +22 -0
- data/app/models/note.rb +8 -0
- data/app/models/person.rb +65 -0
- data/app/models/product.rb +2 -0
- data/app/models/profit.rb +9 -0
- data/app/models/religion.rb +5 -0
- data/app/models/role.rb +9 -0
- data/app/models/salary.rb +93 -0
- data/app/models/tenant.rb +43 -0
- data/app/models/user.rb +44 -0
- data/app/models/vat_rate.rb +11 -0
- data/app/uploaders/attachment_uploader.rb +12 -0
- data/app/views/account_types/_account_type.html.haml +6 -0
- data/app/views/account_types/_form.html.haml +7 -0
- data/app/views/account_types/_list.html.haml +7 -0
- data/app/views/account_types/index.html.haml +6 -0
- data/app/views/account_types/show.html.haml +6 -0
- data/app/views/accounts/_account.html.haml +12 -0
- data/app/views/accounts/_booking_item.html.haml +15 -0
- data/app/views/accounts/_booking_list.html.haml +19 -0
- data/app/views/accounts/_booking_list_footer.html.haml +2 -0
- data/app/views/accounts/_booking_list_header.html.haml +8 -0
- data/app/views/accounts/_booking_list_paginate.html.haml +5 -0
- data/app/views/accounts/_booking_list_saldo.html.haml +8 -0
- data/app/views/accounts/_booking_list_turnover.html.haml +9 -0
- data/app/views/accounts/_carry_booking.html.haml +9 -0
- data/app/views/accounts/_form.html.haml +10 -0
- data/app/views/accounts/_list_footer.html.haml +2 -0
- data/app/views/accounts/_list_header.html.haml +5 -0
- data/app/views/accounts/index.html.haml +8 -0
- data/app/views/accounts/show.html.haml +10 -0
- data/app/views/application/_form.html.haml +7 -0
- data/app/views/application/_list.html.haml +15 -0
- data/app/views/application/_search_form.html.haml +5 -0
- data/app/views/application/_show.html.haml +2 -0
- data/app/views/application/create.js.erb +3 -0
- data/app/views/application/destroy.js.erb +2 -0
- data/app/views/application/edit.html.haml +5 -0
- data/app/views/application/edit.js.erb +3 -0
- data/app/views/application/index.html.haml +7 -0
- data/app/views/application/new.html.haml +5 -0
- data/app/views/application/new.js.erb +3 -0
- data/app/views/application/show.html.haml +5 -0
- data/app/views/application/update.js.erb +3 -0
- data/app/views/attachments/_attachment.html.haml +5 -0
- data/app/views/attachments/_form.html.haml +15 -0
- data/app/views/attachments/_list.html.haml +6 -0
- data/app/views/bank_accounts/_bank_account.html.haml +1 -0
- data/app/views/booking_imports/_booking_import.html.haml +5 -0
- data/app/views/booking_imports/_form.html.haml +6 -0
- data/app/views/booking_imports/_list.html.haml +7 -0
- data/app/views/booking_imports/create.js.erb +4 -0
- data/app/views/booking_imports/index.html.haml +6 -0
- data/app/views/booking_imports/show.html.haml +6 -0
- data/app/views/booking_templates/_booking_template.html.haml +16 -0
- data/app/views/booking_templates/_form.html.haml +12 -0
- data/app/views/booking_templates/_list.html.haml +10 -0
- data/app/views/booking_templates/index.html.haml +6 -0
- data/app/views/bookings/_booking.html.haml +17 -0
- data/app/views/bookings/_form.html.haml +14 -0
- data/app/views/bookings/_list.html.haml +11 -0
- data/app/views/bookings/_new_form.html.haml +8 -0
- data/app/views/bookings/_sidebar.html.haml +7 -0
- data/app/views/bookings/_simple_form.html.haml +12 -0
- data/app/views/bookings/index.html.haml +9 -0
- data/app/views/bookings/new.html.haml +8 -0
- data/app/views/bookings/select.html.haml +11 -0
- data/app/views/bookings/show.html.haml +27 -0
- data/app/views/bookings/simple_edit.html.haml +4 -0
- data/app/views/charge_booking_templates/_charge_booking_template.html.haml +15 -0
- data/app/views/charge_booking_templates/_form.html.haml +12 -0
- data/app/views/charge_booking_templates/_list.html.haml +10 -0
- data/app/views/charge_rates/_form.html.haml +14 -0
- data/app/views/companies/_company.html.haml +5 -0
- data/app/views/companies/_form.html.haml +8 -0
- data/app/views/companies/_list.html.haml +6 -0
- data/app/views/companies/index.html.haml +6 -0
- data/app/views/companies/show.html.haml +27 -0
- data/app/views/credit_invoices/_credit_invoice.html.haml +9 -0
- data/app/views/credit_invoices/_form.html.haml +41 -0
- data/app/views/credit_invoices/_list.html.haml +20 -0
- data/app/views/credit_invoices/index.html.haml +7 -0
- data/app/views/credit_invoices/show.html.haml +56 -0
- data/app/views/customers/_customer.html.haml +5 -0
- data/app/views/customers/_form.html.haml +8 -0
- data/app/views/customers/_list.html.haml +6 -0
- data/app/views/customers/index.html.haml +6 -0
- data/app/views/customers/show.html.haml +22 -0
- data/app/views/debit_invoices/_debit_invoice.html.haml +9 -0
- data/app/views/debit_invoices/_form.html.haml +38 -0
- data/app/views/debit_invoices/_invoice_body.html.haml +8 -0
- data/app/views/debit_invoices/_invoice_info.html.haml +10 -0
- data/app/views/debit_invoices/_invoice_parties.html.haml +9 -0
- data/app/views/debit_invoices/_list.html.haml +21 -0
- data/app/views/debit_invoices/index.html.haml +7 -0
- data/app/views/debit_invoices/letter.html.haml +9 -0
- data/app/views/debit_invoices/letter.pdf.prawn +57 -0
- data/app/views/debit_invoices/show.html.haml +56 -0
- data/app/views/devise/confirmations/new.html.haml +10 -0
- data/app/views/devise/mailer/confirmation_instructions.html.haml +6 -0
- data/app/views/devise/mailer/reset_password_instructions.html.haml +10 -0
- data/app/views/devise/mailer/unlock_instructions.html.haml +8 -0
- data/app/views/devise/passwords/edit.html.haml +15 -0
- data/app/views/devise/passwords/new.html.haml +11 -0
- data/app/views/devise/sessions/new.html.haml +13 -0
- data/app/views/devise/shared/_links.haml +15 -0
- data/app/views/devise/unlocks/new.html.haml +11 -0
- data/app/views/direct_bookings/_form.html.haml +12 -0
- data/app/views/direct_bookings/_item.html.haml +17 -0
- data/app/views/direct_bookings/_list.html.haml +10 -0
- data/app/views/direct_bookings/_list_footer.html.haml +6 -0
- data/app/views/direct_bookings/_show.html.haml +3 -0
- data/app/views/direct_bookings/_show_all.html.haml +8 -0
- data/app/views/direct_bookings/list.js.erb +2 -0
- data/app/views/direct_bookings/new.js.erb +2 -0
- data/app/views/employees/_employee.html.haml +5 -0
- data/app/views/employees/_form.html.haml +19 -0
- data/app/views/employees/_list.html.haml +6 -0
- data/app/views/employees/index.html.haml +6 -0
- data/app/views/employees/show.html.haml +31 -0
- data/app/views/employments/_employment.html.haml +10 -0
- data/app/views/employments/_form.html.haml +24 -0
- data/app/views/employments/_list.html.haml +11 -0
- data/app/views/employments/_show.html.haml +9 -0
- data/app/views/employments/index.html.haml +5 -0
- data/app/views/invoices/_form.html.haml +13 -0
- data/app/views/invoices/_invoice.html.haml +7 -0
- data/app/views/invoices/_list.html.haml +20 -0
- data/app/views/invoices/_sidebar.html.haml +11 -0
- data/app/views/invoices/index.html.haml +17 -0
- data/app/views/invoices/show.html.haml +56 -0
- data/app/views/layouts/_flash_new.html.haml +1 -0
- data/app/views/layouts/_list_item_actions_for.html.haml +3 -0
- data/app/views/layouts/application.html.haml +46 -0
- data/app/views/line_items/_form.html.haml +6 -0
- data/app/views/line_items/_line_item.html.haml +7 -0
- data/app/views/line_items/_list_footer.html.haml +7 -0
- data/app/views/notes/_form.html.haml +10 -0
- data/app/views/notes/_list.html.haml +15 -0
- data/app/views/notes/index.html.haml +9 -0
- data/app/views/notes/show.html.haml +12 -0
- data/app/views/overview/index.html.haml +14 -0
- data/app/views/people/_form.html.haml +8 -0
- data/app/views/people/_list.html.haml +7 -0
- data/app/views/people/_person.html.haml +6 -0
- data/app/views/people/_show.html.haml +6 -0
- data/app/views/people/show.html.haml +21 -0
- data/app/views/persons/_civil.html.haml +5 -0
- data/app/views/persons/_show.html.haml +6 -0
- data/app/views/salaries/_form.html.haml +14 -0
- data/app/views/salaries/_list.html.haml +12 -0
- data/app/views/salaries/_salary.html.haml +10 -0
- data/app/views/salaries/_salary_certificate.html.haml +25 -0
- data/app/views/salaries/payslip.html.haml +40 -0
- data/app/views/salaries/show.html.haml +30 -0
- data/app/views/salaries/statistics.html.haml +6 -0
- data/app/views/tenants/_account.html.haml +7 -0
- data/app/views/tenants/_account_group_sheet.html.haml +8 -0
- data/app/views/tenants/_form.html.haml +17 -0
- data/app/views/tenants/_list.html.haml +7 -0
- data/app/views/tenants/_tenant.html.haml +7 -0
- data/app/views/tenants/balance_sheet.html.haml +43 -0
- data/app/views/tenants/index.html.haml +6 -0
- data/app/views/tenants/new.js.erb +1 -0
- data/app/views/tenants/profit_sheet.html.haml +26 -0
- data/app/views/tenants/show.html.haml +18 -0
- data/app/views/users/_demo.de-CH.html.haml +7 -0
- data/app/views/users/_demo.de.html.haml +7 -0
- data/app/views/users/_demo.html.haml +7 -0
- data/app/views/users/_form.html.haml +17 -0
- data/app/views/users/_list.html.haml +9 -0
- data/app/views/users/_show.html.haml +13 -0
- data/app/views/users/_user.html.haml +7 -0
- data/app/views/users/index.html.haml +6 -0
- data/app/views/users/new.js.erb +1 -0
- data/app/views/users/show.html.haml +14 -0
- data/lib/acts_as_csv.rb +113 -0
- data/lib/bookyt/engine.rb +18 -0
- data/lib/bookyt/version.rb +3 -0
- data/lib/float.rb +17 -0
- data/lib/pagination_list_link_renderer.rb +63 -0
- data/lib/parse_date.rb +27 -0
- data/lib/prawn/letter_document.rb +136 -0
- data/lib/raiffeisen_importer.rb +15 -0
- data/lib/recipes/bookyt.rb +15 -0
- data/lib/simple_navigation/renderer/list.rb +20 -0
- data/lib/simple_navigation/renderer/overview.rb +46 -0
- data/lib/sqlite3_extensions.rb +45 -0
- data/lib/tasks/.gitkeep +0 -0
- data/lib/tasks/bookyt.rake +15 -0
- data/lib/tasks/cucumber.rake +53 -0
- data/lib/tasks/environment_seeds.rake +7 -0
- data/lib/tasks/users.rake +46 -0
- metadata +423 -0
@@ -0,0 +1,17 @@
|
|
1
|
+
class DirectBookingsController < InheritedResources::Base
|
2
|
+
def new
|
3
|
+
# Lookup and instantiate template
|
4
|
+
booking_template = BookingTemplate.find(params[:direct_booking][:booking_template_id])
|
5
|
+
@direct_booking = booking_template.build_booking(params[:direct_booking])
|
6
|
+
@direct_booking.value_date ||= Date.today
|
7
|
+
end
|
8
|
+
|
9
|
+
def create
|
10
|
+
@direct_booking = Booking.new(params[:direct_booking])
|
11
|
+
@direct_account = @direct_booking.balance_account
|
12
|
+
|
13
|
+
create! {
|
14
|
+
render 'list' and return
|
15
|
+
}
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class InvoicesController < AuthorizedController
|
2
|
+
# States
|
3
|
+
has_scope :by_state, :default => 'booked', :only => :index
|
4
|
+
has_scope :by_text
|
5
|
+
has_scope :overdue, :type => :boolean
|
6
|
+
|
7
|
+
respond_to :html, :pdf
|
8
|
+
|
9
|
+
# Actions
|
10
|
+
def new
|
11
|
+
invoice_params = params[:invoice] || {}
|
12
|
+
invoice_params.merge!(:company_id => current_tenant.company.id)
|
13
|
+
@invoice = Invoice.new(invoice_params)
|
14
|
+
|
15
|
+
new!
|
16
|
+
end
|
17
|
+
|
18
|
+
def letter
|
19
|
+
show!
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
class NotesController < AuthorizedController
|
2
|
+
belongs_to :employee, :polymorphic => true
|
3
|
+
|
4
|
+
def index
|
5
|
+
@note_of_sth = find_note_of_sth
|
6
|
+
@notes = @note_of_sth.notes.paginate(:page => params[:page])
|
7
|
+
|
8
|
+
index!
|
9
|
+
end
|
10
|
+
|
11
|
+
def new
|
12
|
+
@note = Note.new(:note_of_sth => parent, :user => current_user)
|
13
|
+
|
14
|
+
new!
|
15
|
+
end
|
16
|
+
|
17
|
+
def create
|
18
|
+
@note_of_sth = find_note_of_sth
|
19
|
+
@note = @note_of_sth.notes.build(params[:note])
|
20
|
+
|
21
|
+
create! do |format|
|
22
|
+
format.html { redirect_to eval("#{parent_type}_notes_path(@note_of_sth)") }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def find_note_of_sth
|
27
|
+
params.each do |name, value|
|
28
|
+
if name =~ /(.+)_id$/
|
29
|
+
return $1.classify.constantize.find(value)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
nil
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class PeopleController < AuthorizedController
|
2
|
+
def show
|
3
|
+
@credit_invoices = resource.credit_invoices
|
4
|
+
@debit_invoices = resource.debit_invoices
|
5
|
+
|
6
|
+
# Invoice scoping by state
|
7
|
+
by_state = params[:by_state] || 'all'
|
8
|
+
@credit_invoices = @credit_invoices.reorder('due_date DESC').by_state(by_state)
|
9
|
+
@debit_invoices = @debit_invoices.reorder('due_date DESC').by_state(by_state)
|
10
|
+
|
11
|
+
show!
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
class SalariesController < AuthorizedController
|
2
|
+
# Filter/Search
|
3
|
+
# =============
|
4
|
+
has_scope :by_state
|
5
|
+
has_scope :by_value_period, :using => [:from, :to], :default => proc { |c| c.session[:has_scope] }
|
6
|
+
has_scope :by_employee_id
|
7
|
+
|
8
|
+
# Actions
|
9
|
+
# =======
|
10
|
+
def statistics
|
11
|
+
index!
|
12
|
+
end
|
13
|
+
|
14
|
+
def new
|
15
|
+
# Allow pre-seeding some parameters
|
16
|
+
salary_params = {
|
17
|
+
:employer => current_tenant.company,
|
18
|
+
:state => 'booked',
|
19
|
+
:duration_from => Date.today,
|
20
|
+
:duration_to => Date.today.in(30.days).to_date
|
21
|
+
}
|
22
|
+
|
23
|
+
# Set default parameters
|
24
|
+
salary_params.merge!(params[:salary]) if params[:salary]
|
25
|
+
|
26
|
+
@salary = Salary.new(salary_params)
|
27
|
+
|
28
|
+
# Prebuild an empty attachment instance
|
29
|
+
@salary.attachments.build
|
30
|
+
|
31
|
+
new!
|
32
|
+
end
|
33
|
+
|
34
|
+
def create
|
35
|
+
@salary = Salary.new(params[:salary])
|
36
|
+
if @salary.valid?
|
37
|
+
@salary.build_booking
|
38
|
+
end
|
39
|
+
|
40
|
+
create!
|
41
|
+
end
|
42
|
+
|
43
|
+
def payslip
|
44
|
+
show!
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
class TenantsController < AuthorizedController
|
2
|
+
# Actions
|
3
|
+
def current
|
4
|
+
redirect_to current_user.tenant
|
5
|
+
end
|
6
|
+
|
7
|
+
def profit_sheet
|
8
|
+
@company = current_tenant.company
|
9
|
+
|
10
|
+
# use current date if not specified otherwise
|
11
|
+
params[:profit] ||= {}
|
12
|
+
|
13
|
+
# use current date if not specified otherwise
|
14
|
+
if params[:by_value_period]
|
15
|
+
@end_date = Date.parse(params[:by_value_period][:to])
|
16
|
+
@start_date = Date.parse(params[:by_value_period][:from])
|
17
|
+
@dates = [@start_date..@end_date]
|
18
|
+
elsif params[:years]
|
19
|
+
@dates = params[:years].map{|year| current_tenant.fiscal_period(year.to_i)[:from]..current_tenant.fiscal_period(year.to_i)[:to]}
|
20
|
+
else
|
21
|
+
@end_date = Date.today
|
22
|
+
@start_date = @end_date.to_time.advance(:years => -1, :days => 1).to_date
|
23
|
+
@dates = [@start_date..@end_date]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def balance_sheet
|
28
|
+
@company = current_tenant.company
|
29
|
+
|
30
|
+
# use current date if not specified otherwise
|
31
|
+
if params[:by_value_period]
|
32
|
+
@dates = [Date.parse(params[:by_value_period][:to])]
|
33
|
+
elsif params[:years]
|
34
|
+
@dates = params[:years].map{|year| current_tenant.fiscal_period(year.to_i)[:to]}
|
35
|
+
else
|
36
|
+
@dates = [Date.today]
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Users Controller
|
2
|
+
#
|
3
|
+
# Provides a user/account management interface.
|
4
|
+
class UsersController < AuthorizedController
|
5
|
+
# Actions
|
6
|
+
def update
|
7
|
+
@user = User.find(params[:id])
|
8
|
+
|
9
|
+
# Don't try to update password if not provided
|
10
|
+
if params[:user][:password].blank?
|
11
|
+
[:password, :password_confirmation, :current_password].collect{|p| params[:user].delete(p) }
|
12
|
+
end
|
13
|
+
|
14
|
+
# Test if user is allowed to change roles
|
15
|
+
params[:user].delete(:role_texts) unless can? :manage, Role
|
16
|
+
|
17
|
+
# Set the locale explicitly to the user cause it wasn't saved.
|
18
|
+
@user.locale = params[:user][:locale] if params[:user][:locale]
|
19
|
+
|
20
|
+
update!
|
21
|
+
end
|
22
|
+
|
23
|
+
def current
|
24
|
+
redirect_to current_user
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# Methods added to this helper will be available to all templates in the application.
|
2
|
+
module ApplicationHelper
|
3
|
+
# Plugins
|
4
|
+
def engine_stylesheet_link_tag(options = {})
|
5
|
+
Bookyt::Engine.engines.map {|engine|
|
6
|
+
stylesheet_link_tag engine, options
|
7
|
+
}.join.html_safe
|
8
|
+
end
|
9
|
+
|
10
|
+
# Tenancy
|
11
|
+
def current_tenant
|
12
|
+
current_user.tenant
|
13
|
+
end
|
14
|
+
|
15
|
+
include ActionView::Helpers::NumberHelper
|
16
|
+
def currency_fmt(value)
|
17
|
+
# We often do get -0.0 but don't like it
|
18
|
+
value = 0.0 if value.to_s.match %r{^-[0.]*$}
|
19
|
+
|
20
|
+
number = number_with_precision(value, :precision => 2, :separator => '.', :delimiter => "'")
|
21
|
+
end
|
22
|
+
|
23
|
+
# CRUD helpers
|
24
|
+
def icon_edit_link_to(path)
|
25
|
+
link_to t('bookyt.edit'), path, :method => :get, :class => 'icon-edit-text', :title => t('bookyt.edit')
|
26
|
+
end
|
27
|
+
|
28
|
+
def icon_delete_link_to(model, path)
|
29
|
+
link_to t('bookyt.destroy'), path, :remote => true, :method => :delete, :confirm => t_confirm_delete(model), :class => 'icon-delete-text', :title => t('bookyt.destroy')
|
30
|
+
end
|
31
|
+
|
32
|
+
def list_item_actions_for(resource)
|
33
|
+
model_name = resource.class.to_s.underscore
|
34
|
+
|
35
|
+
render 'layouts/list_item_actions_for', :model_name => model_name, :resource => resource
|
36
|
+
end
|
37
|
+
|
38
|
+
# Nested form helpers
|
39
|
+
def show_new_form(model)
|
40
|
+
model_name = model.to_s.underscore
|
41
|
+
|
42
|
+
output = <<EOF
|
43
|
+
$('##{model_name}_list').replaceWith('#{escape_javascript(render('form'))}');
|
44
|
+
addAutofocusBehaviour();
|
45
|
+
addAutocompleteBehaviour();
|
46
|
+
addDatePickerBehaviour();
|
47
|
+
addAutogrowBehaviour();
|
48
|
+
EOF
|
49
|
+
|
50
|
+
return output.html_safe
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module BookingTemplateHelper
|
2
|
+
def amount_relations_as_collection
|
3
|
+
relations = ['reference_amount', 'reference_balance', 'reference_amount_minus_balance']
|
4
|
+
relations.inject({}) do |result, relation|
|
5
|
+
result[t(relation, :scope => 'booking_template.relation')] = relation
|
6
|
+
result
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def amount_to_s(booking_template)
|
11
|
+
if booking_template.amount_relates_to.present?
|
12
|
+
return "%.2f%%" % (booking_template.amount.to_f * 100)
|
13
|
+
else
|
14
|
+
return currency_fmt(booking_template.amount)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class ComboboxInput < Formtastic::Inputs::SelectInput
|
2
|
+
include ActionView::Helpers::UrlHelper
|
3
|
+
|
4
|
+
def input_html_options
|
5
|
+
super.merge({:class => "#{super[:class]} combobox", :style => "width => 60%"})
|
6
|
+
end
|
7
|
+
|
8
|
+
def link_fragment
|
9
|
+
reference = object.send(reflection.name)
|
10
|
+
|
11
|
+
return unless reference
|
12
|
+
|
13
|
+
template.content_tag('span', template.link_to('show', @object.send(reflection.name), :class => 'icon-combolink-text'), :class => 'combobox-link')
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_html
|
17
|
+
input_wrapping do
|
18
|
+
label_html <<
|
19
|
+
(options[:group_by] ? grouped_select_html : select_html) <<
|
20
|
+
link_fragment
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# Defines abilities
|
2
|
+
#
|
3
|
+
# This class defines the abilities available to User Roles.
|
4
|
+
# Will be used by CanCan.
|
5
|
+
class Ability
|
6
|
+
# Aspects
|
7
|
+
include CanCan::Ability
|
8
|
+
|
9
|
+
# Available roles
|
10
|
+
def self.roles
|
11
|
+
['admin', 'accountant']
|
12
|
+
end
|
13
|
+
|
14
|
+
# Prepare roles to show in select inputs etc.
|
15
|
+
def self.roles_for_collection
|
16
|
+
self.roles.map{|role| [I18n.translate(role, :scope => 'cancan.roles'), role]}
|
17
|
+
end
|
18
|
+
|
19
|
+
# Main role/ability definitions.
|
20
|
+
def initialize(user)
|
21
|
+
user ||= User.new # guest user
|
22
|
+
|
23
|
+
alias_action :index, :to => :list
|
24
|
+
alias_action :current, :to => :show
|
25
|
+
|
26
|
+
if user.role? :admin
|
27
|
+
can :manage, :all
|
28
|
+
elsif user.role? :accountant
|
29
|
+
can :manage, [Account, BookingTemplate, Customer, Employee, Invoice, Product, AccountType, Booking, Company, Day, Employment, Person, Profit]
|
30
|
+
can [:show, :list], [Tenant], :users => {:id => user.id}
|
31
|
+
can [:show, :update], User, :id => user.id
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class Attachment < ActiveRecord::Base
|
2
|
+
# Association
|
3
|
+
belongs_to :object, :polymorphic => true
|
4
|
+
|
5
|
+
# Carrier Wave
|
6
|
+
validates_presence_of :file
|
7
|
+
mount_uploader :file, AttachmentUploader
|
8
|
+
|
9
|
+
# String
|
10
|
+
def to_s(format = :default)
|
11
|
+
title
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
class BookingImportObserver < ActiveRecord::Observer
|
2
|
+
def after_save(importer)
|
3
|
+
Rails.logger.info "Starting at #{start_time = Time.now} to import #{importer.csv_file_name} from #{importer.csv.url}."
|
4
|
+
end_time = Time.now - start_time
|
5
|
+
Rails.logger.info "Import ended in #{end_time}"
|
6
|
+
end
|
7
|
+
end
|