├── log └── .gitkeep ├── lib ├── tasks │ ├── .gitkeep │ └── add_categories.rake ├── assets │ └── .gitkeep ├── services │ ├── quickbooks │ │ └── quickbook.rb │ └── freshbooks │ │ └── freshbook.rb └── const.rb ├── test ├── unit │ ├── .gitkeep │ ├── helpers │ │ ├── items_helper_test.rb │ │ ├── taxes_helper_test.rb │ │ ├── users_helper_test.rb │ │ ├── accounts_helper_test.rb │ │ ├── clients_helper_test.rb │ │ ├── invoices_helper_test.rb │ │ ├── payments_helper_test.rb │ │ ├── companies_helper_test.rb │ │ ├── payment_terms_helper_test.rb │ │ ├── client_contacts_helper_test.rb │ │ ├── company_profiles_helper_test.rb │ │ ├── email_templates_helper_test.rb │ │ ├── invoice_line_items_helper_test.rb │ │ ├── recurring_profiles_helper_test.rb │ │ ├── client_additional_contacts_helper_test.rb │ │ └── recurring_profile_line_items_helper_test.rb │ ├── item_test.rb │ ├── tax_test.rb │ ├── user_test.rb │ ├── client_test.rb │ ├── account_test.rb │ ├── category_test.rb │ ├── company_test.rb │ ├── currency_test.rb │ ├── invoice_test.rb │ ├── payment_test.rb │ ├── payment_term_test.rb │ ├── sent_email_test.rb │ ├── account_users_test.rb │ ├── client_contact_test.rb │ ├── company_entity_test.rb │ ├── credit_payment_test.rb │ ├── email_template_test.rb │ ├── invoice_line_item_test.rb │ ├── recurring_profile_test.rb │ ├── client_billing_info_test.rb │ ├── company_email_template_test.rb │ ├── client_additional_contact_test.rb │ └── recurring_profile_line_item_test.rb ├── fixtures │ ├── .gitkeep │ ├── accounts.yml │ ├── categories.yml │ ├── account_users.yml │ ├── taxes.yml │ ├── payment_terms.yml │ ├── credit_payments.yml │ ├── currencies.yml │ ├── company_email_templates.yml │ ├── sent_emails.yml │ ├── company_entities.yml │ ├── email_templates.yml │ ├── users.yml │ ├── recurring_profiles.yml │ ├── client_contacts.yml │ ├── recurring_profile_line_items.yml │ ├── items.yml │ ├── invoice_line_items.yml │ ├── payments.yml │ ├── client_additional_contacts.yml │ ├── invoices.yml │ └── client_billing_infos.yml ├── functional │ ├── .gitkeep │ ├── invoice_mailer_test.rb │ └── users_controller_test.rb ├── integration │ └── .gitkeep ├── performance │ └── browsing_test.rb └── test_helper.rb ├── app ├── mailers │ └── .gitkeep ├── models │ ├── .gitkeep │ ├── settings.rb │ ├── invoice_task.rb │ ├── expense_category.rb │ ├── team_member.rb │ ├── line_item_tax.rb │ ├── company_entity.rb │ ├── company_email_template.rb │ ├── project_task.rb │ ├── currency.rb │ ├── log.rb │ └── recurring_profile_line_item.rb ├── views │ ├── tasks │ │ ├── show.html.erb │ │ ├── new.html.erb │ │ ├── edit.html.erb │ │ ├── _paging.html.erb │ │ ├── _tasks_header.html.erb │ │ ├── create.js.erb │ │ └── undo_actions.js.erb │ ├── invoices │ │ ├── edit.js.erb │ │ ├── invoice_pdf.html.erb │ │ ├── selected_currency.js.erb │ │ ├── _paging.html.slim │ │ ├── dispute_invoice.js.erb │ │ ├── invoice_deleted_message.erb │ │ ├── new.js.erb │ │ ├── pay_with_credit_card.js.erb │ │ └── unpaid_invoices.js.erb │ ├── sub_users │ │ ├── destroy.js.erb │ │ ├── create.html.erb │ │ ├── update.html.erb │ │ ├── new.html.erb │ │ └── edit.html.erb │ ├── devise │ │ ├── inline_forms │ │ │ └── inline_forms.html.erb │ │ ├── mailer │ │ │ ├── confirmation_instructions.html.erb │ │ │ ├── unlock_instructions.html.erb │ │ │ └── reset_password_instructions.html.erb │ │ ├── unlocks │ │ │ └── new.html.erb │ │ └── confirmations │ │ │ └── new.html.erb │ ├── logs │ │ ├── new.html.erb │ │ ├── _basicWeek.html.erb │ │ ├── index.js.erb │ │ ├── _month.html.erb │ │ ├── update_tasks.js.erb │ │ ├── edit.js.erb │ │ ├── load_view.js.erb │ │ ├── events.json.jbuilder │ │ ├── destroy.js.erb │ │ ├── _tasks.html.erb │ │ ├── _logs_header.html.erb │ │ ├── create.js.erb │ │ ├── timer.html.erb │ │ ├── invoice_form.html.erb │ │ └── _logs_table.html.erb │ ├── calendar │ │ └── index.html.erb │ ├── reports │ │ ├── _report_body.html.erb │ │ ├── _criteria_controls.html.erb │ │ └── reports.html.erb │ ├── client_contacts │ │ ├── new.html.erb │ │ └── edit.html.erb │ ├── estimates │ │ ├── estimate_pdf.html.erb │ │ ├── selected_currency.js.erb │ │ └── undo_actions.js.erb │ ├── payments │ │ ├── enter_payment.js.erb │ │ ├── new.html.erb │ │ ├── _bulk_actions.erb │ │ ├── update_individual_payment.html.erb │ │ ├── edit.html.erb │ │ ├── _form.html.erb │ │ ├── delete_non_credit_payments.js.erb │ │ ├── payments_history.js.erb │ │ ├── invoice_payments_history.js.erb │ │ ├── _paging.html.erb │ │ ├── _payments_history_header.html.erb │ │ ├── undo_actions.js.erb │ │ ├── update_individual_payment.js.erb │ │ ├── enter_payment.html.erb │ │ └── index.js.erb │ ├── projects │ │ ├── show.html.erb │ │ ├── _task_list.html.erb │ │ ├── _project_header.html.erb │ │ ├── edit.html.erb │ │ └── undo_actions.js.erb │ ├── doorkeeper │ │ ├── applications │ │ │ ├── edit.html.erb │ │ │ ├── new.html.erb │ │ │ └── _delete_form.html.erb │ │ ├── authorizations │ │ │ ├── show.html.erb │ │ │ └── error.html.erb │ │ └── authorized_applications │ │ │ ├── _delete_form.html.erb │ │ │ └── index.html.erb │ ├── staffs │ │ ├── new.html.erb │ │ ├── edit.html.erb │ │ ├── _paging.html.erb │ │ ├── show.html.erb │ │ ├── _staffs_header.html.erb │ │ ├── create.js.erb │ │ └── undo_actions.js.erb │ ├── payment_terms │ │ ├── new.html.erb │ │ ├── edit.html.erb │ │ ├── create.js.erb │ │ └── show.html.erb │ ├── recurring_profile_line_items │ │ ├── new.html.erb │ │ ├── show.html.erb │ │ ├── edit.html.erb │ │ ├── _form.html.erb │ │ └── index.html.erb │ ├── companies │ │ ├── new.html.erb │ │ ├── edit.html.erb │ │ ├── _paging.html.erb │ │ ├── undo_actions.js.erb │ │ └── _companies_header.html.erb │ ├── invoice_line_items │ │ ├── new.html.erb │ │ └── edit.html.erb │ ├── clients │ │ ├── new.html.erb │ │ ├── create.js.erb │ │ ├── edit.html.erb │ │ └── undo_actions.js.erb │ ├── email_templates │ │ ├── index.js.erb │ │ ├── edit.html.erb │ │ ├── new.html.erb │ │ ├── _paging.html.erb │ │ └── _email_template_header.html.erb │ ├── import_data │ │ ├── _fb_connect.html.erb │ │ ├── _qb_connect.html.erb │ │ └── index.html.erb │ ├── taxes │ │ ├── edit.html.erb │ │ ├── new.html.erb │ │ ├── create.js.erb │ │ ├── show.html.erb │ │ ├── _tax_header.html.erb │ │ └── undo_actions.js.erb │ ├── invoice_mailer │ │ ├── dispute_invoice_email.html.erb │ │ ├── send_note_email.html.erb │ │ ├── new_invoice_email.html.erb │ │ ├── late_payment_reminder_email.html.erb │ │ └── response_to_client.html.erb │ ├── user_mailer │ │ └── new_user_account.html.erb │ ├── estimate_mailer │ │ └── new_estimate_email.html.erb │ ├── items │ │ ├── new.html.erb │ │ ├── edit.html.erb │ │ ├── new.js.erb │ │ ├── create.js.erb │ │ └── undo_actions.js.erb │ ├── payment_mailer │ │ └── payment_notification_email.html.erb │ ├── settings │ │ └── create.js.erb │ ├── accounts │ │ ├── new.html.erb │ │ └── edit.html.erb │ ├── recurring_profiles │ │ ├── selected_currency.js.erb │ │ ├── _paging.html.erb │ │ ├── new.js.erb │ │ └── edit.js.erb │ ├── dashboard │ │ ├── _osb_reports.html.erb │ │ ├── _getting_started.html.erb │ │ └── _chart_container.html.erb │ ├── sent_emails │ │ ├── index.js.erb │ │ ├── _sent_email_header.html.erb │ │ ├── show.html.erb │ │ └── _sent_emails.html.erb │ ├── expenses │ │ ├── edit.html.erb │ │ ├── new.html.erb │ │ └── undo_actions.js.erb │ ├── help │ │ └── index.html.erb │ └── application_partials │ │ └── _paging.html.erb ├── helpers │ ├── settings_helper.rb │ ├── devise_helper.rb~ │ ├── sub_users_helper.rb │ ├── email_templates_helper.rb │ ├── recurring_profile_line_items_helper.rb │ └── calendar_helper.rb ├── assets │ ├── images │ │ ├── ad.png │ │ ├── asc.png │ │ ├── bg.png │ │ ├── Thumbs.db │ │ ├── btn_x.png │ │ ├── bullet.png │ │ ├── cross.png │ │ ├── dd_02.png │ │ ├── dd_top.png │ │ ├── desc.png │ │ ├── draft.png │ │ ├── f_sep.png │ │ ├── graff.png │ │ ├── graph.png │ │ ├── less.png │ │ ├── logo.png │ │ ├── more.png │ │ ├── nav_bg.png │ │ ├── paid.png │ │ ├── rails.png │ │ ├── scrl.png │ │ ├── sent.png │ │ ├── sterik.png │ │ ├── sub_bg.png │ │ ├── viewed.png │ │ ├── body-bg.png │ │ ├── btn_plus.png │ │ ├── calendar.gif │ │ ├── dispute.png │ │ ├── disputed.png │ │ ├── glow_bg.png │ │ ├── grey_btm.png │ │ ├── grey_top.png │ │ ├── invalid.png │ │ ├── links_dd.png │ │ ├── paid_pmt.png │ │ ├── partial.png │ │ ├── sent_pmt.png │ │ ├── success.png │ │ ├── warning.png │ │ ├── _viewed_pmt.png │ │ ├── add_remove.png │ │ ├── btn_close.png │ │ ├── cross_btn.png │ │ ├── draft_pmt.png │ │ ├── footer_sep.png │ │ ├── freshbooks.png │ │ ├── grey_left.png │ │ ├── nav_hover.png │ │ ├── nsub_hover.png │ │ ├── partial_pmt.png │ │ ├── sort-arrow.gif │ │ ├── sorting_dn.png │ │ ├── sorting_up.png │ │ ├── sub_hover.png │ │ ├── top_arrow.png │ │ ├── top_corner.png │ │ ├── viewed_pmt.png │ │ ├── bkp_nav_hover.png │ │ ├── btn_close_bg.png │ │ ├── btn_x_client.png │ │ ├── calender_icon.png │ │ ├── chosen-sprite.png │ │ ├── dashboard_sep.png │ │ ├── disputed_pmt.png │ │ ├── draft_partial.png │ │ ├── payment_logo.png │ │ ├── preview_logo.png │ │ ├── sterik_small.png │ │ ├── sub_secondary.png │ │ ├── del-move-icons.png │ │ ├── graff_highlight.png │ │ ├── grid_control_sep.png │ │ ├── sub_secondary_02.png │ │ ├── draft_partial_pmt.png │ │ ├── grid_control_sep2.png │ │ ├── intimation_bullet.png │ │ ├── ui-icons_222222_256x240.png │ │ ├── ui-icons_454545_256x240.png │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ ├── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ └── ad.png~f5884857e2fb28c182ceccd49be1205a1b282c0d │ ├── stylesheets │ │ ├── staffs.scss │ │ ├── client_contacts.css.scss │ │ ├── email_template_editor.css │ │ ├── tasks.scss │ │ ├── show_email.css.scss │ │ ├── settings.scss │ │ ├── logs.css.scss │ │ ├── accounts.css.scss │ │ ├── taxes.css.scss │ │ ├── payment_terms.css.scss │ │ ├── settings.css.scss │ │ ├── sent_email.css.scss │ │ ├── bootstrap_and_overrides.css │ │ ├── revenue_by_client.css.scss │ │ ├── recurring_profile_line_items.css.scss │ │ ├── users.css.scss │ │ ├── payments_collected.css.scss │ │ ├── edit_payment.css.scss │ │ ├── unpaid_invoices.css.scss │ │ ├── new_item_form.css.scss │ │ └── payment_history.css.scss │ └── javascripts │ │ ├── bootstrap.js.coffee │ │ ├── client_contacts.js.coffee │ │ ├── client_additional_contacts.js.coffee │ │ ├── invoice_line_items.js.coffee │ │ ├── recurring_profile_line_items.js.coffee │ │ ├── jquery.ellipsis.min.js │ │ ├── reports.js.coffee │ │ ├── settings.coffee │ │ └── users.js.coffee └── controllers │ ├── calendar_controller.rb │ └── settings_controller.rb ├── vendor ├── plugins │ └── .gitkeep ├── assets │ ├── javascripts │ │ └── .gitkeep │ └── stylesheets │ │ └── .gitkeep └── engines │ └── osb_api │ ├── test │ ├── dummy │ │ ├── log │ │ │ └── .keep │ │ ├── app │ │ │ ├── mailers │ │ │ │ └── .keep │ │ │ ├── models │ │ │ │ ├── .keep │ │ │ │ └── concerns │ │ │ │ │ └── .keep │ │ │ ├── assets │ │ │ │ ├── images │ │ │ │ │ └── .keep │ │ │ │ └── javascripts │ │ │ │ │ └── application.js │ │ │ ├── controllers │ │ │ │ ├── concerns │ │ │ │ │ └── .keep │ │ │ │ └── application_controller.rb │ │ │ ├── helpers │ │ │ │ └── application_helper.rb │ │ │ └── views │ │ │ │ └── layouts │ │ │ │ └── application.html.erb │ │ ├── lib │ │ │ └── assets │ │ │ │ └── .keep │ │ ├── public │ │ │ └── favicon.ico │ │ ├── config │ │ │ ├── routes.rb │ │ │ ├── initializers │ │ │ │ ├── cookies_serializer.rb │ │ │ │ ├── session_store.rb │ │ │ │ ├── mime_types.rb │ │ │ │ ├── filter_parameter_logging.rb │ │ │ │ ├── assets.rb │ │ │ │ ├── backtrace_silencers.rb │ │ │ │ ├── wrap_parameters.rb │ │ │ │ └── inflections.rb │ │ │ ├── environment.rb │ │ │ ├── boot.rb │ │ │ ├── database.yml │ │ │ └── locales │ │ │ │ └── en.yml │ │ ├── bin │ │ │ ├── rake │ │ │ ├── bundle │ │ │ └── rails │ │ ├── config.ru │ │ ├── Rakefile │ │ └── README.rdoc │ ├── osb_api_test.rb │ ├── integration │ │ └── navigation_test.rb │ └── test_helper.rb │ ├── app │ ├── assets │ │ ├── images │ │ │ └── osb_api │ │ │ │ └── .keep │ │ └── javascripts │ │ │ └── osb_api │ │ │ └── application.js │ ├── helpers │ │ └── osb_api │ │ │ └── application_helper.rb │ ├── controllers │ │ └── osb_api │ │ │ └── application_controller.rb │ └── views │ │ └── layouts │ │ └── osb_api │ │ └── application.html.erb │ ├── README.rdoc │ ├── lib │ ├── osb_api │ │ ├── version.rb │ │ └── engine.rb │ ├── tasks │ │ └── osb_api_tasks.rake │ ├── osb_api.rb │ └── generators │ │ └── osb_api │ │ └── migration_generator.rb │ ├── config │ └── routes.rb │ ├── .gitignore │ ├── bin │ └── rails │ └── Gemfile ├── wiki └── images │ └── .gitkeep ├── public ├── favicon.ico ├── robots.txt └── 500.html ├── config ├── initializers │ ├── pdfkit.rb │ ├── time_formats.rb.rb │ ├── dj_mon.rb │ ├── smtp_settings.rb │ ├── services.rb │ ├── generator.rb │ ├── wicked_pdf.rb │ ├── delayed_job.rb │ ├── mime_types.rb │ ├── backtrace_silencers.rb │ ├── secret_token.rb │ ├── session_store.rb │ ├── wrap_parameters.rb │ ├── paypal.rb │ └── inflections.rb ├── environment.rb └── boot.rb ├── spec ├── controllers │ ├── settings_controller_spec.rb │ ├── companies_controller_spec.rb │ └── calendar_controller_spec.rb ├── models │ ├── log_spec.rb │ ├── staff_spec.rb │ ├── task_spec.rb │ ├── expense_spec.rb │ ├── project_spec.rb │ ├── team_member_spec.rb │ ├── invoice_task_spec.rb │ ├── line_item_tax_spec.rb │ ├── project_task_spec.rb │ ├── expense_category_spec.rb │ ├── client_additional_contact_spec.rb │ ├── category_spec.rb │ ├── client_contact_spec.rb │ └── company_entity_spec.rb ├── views │ ├── calendar │ │ └── index.html.erb_spec.rb │ ├── projects │ │ ├── show.html.all_spec.rb │ │ ├── index.html.all_spec.rb │ │ ├── new.html.all_spec.rb │ │ └── edit.html.all_spec.rb │ ├── tasks │ │ └── show.html.erb_spec.rb │ ├── expenses │ │ └── show.html.erb_spec.rb │ └── staffs │ │ └── show.html.erb_spec.rb ├── requests │ ├── tasks_spec.rb │ ├── staffs_spec.rb │ ├── expenses_spec.rb │ └── projects_spec.rb └── helpers │ ├── tasks_helper_spec.rb │ ├── staffs_helper_spec.rb │ ├── calendar_helper_spec.rb │ ├── expenses_helper_spec.rb │ ├── projects_helper_spec.rb │ └── settings_helper_spec.rb ├── config.ru ├── db └── migrate │ ├── 20150429054414_add_status_to_payment.rb │ ├── 20160412155145_add_company_id_to_staffs.rb │ ├── 20150331075423_add_column_to_line_item_tax.rb │ ├── 20160509124425_add_provider_to_tax.rb │ ├── 20160509124435_add_provider_to_item.rb │ ├── 20160510082726_add_provider_to_task.rb │ ├── 20160516130907_add_provider_to_log.rb │ ├── 20160516113923_add_provider_to_staffs.rb │ ├── 20160509110002_add_provider_into_client.rb │ ├── 20160509124445_add_provider_to_invoice.rb │ ├── 20160511121932_add_provider_to_expenses.rb │ ├── 20160516100615_add_provider_to_payments.rb │ ├── 20160516122508_add_provider_to_projects.rb │ ├── 20160512124933_add_provider_to_estimates.rb │ ├── 20150520131850_add_trackstamps_to_invoice.rb │ ├── 20160219082001_create_expense_categories.rb │ ├── 20150211112822_create_account_users.rb │ ├── 20160511121717_change_taxes_data_types_to_expenses.rb │ ├── 20150521105207_add_fields_to_recurring_profile.rb │ ├── 20160511113908_add_provider_to_expense_categories.rb │ ├── 20150304135920_add_column_currency_id_to_invoices_and_clients.rb │ ├── 20150331075044_add_acts_as_archival_to_line_item_tax.rb │ ├── 20150211113714_create_categories.rb │ ├── 20150330130413_create_line_item_taxes.rb │ ├── 20160302170954_create_logs.rb │ ├── 20160330110032_create_invoice_tasks.rb │ ├── 20150211114833_create_payment_terms.rb │ ├── 20160606082842_add_sessions_table.rb │ ├── 20150211114142_create_currencies.rb │ ├── 20150211113945_create_company_email_templates.rb │ ├── 20160303151412_create_team_members.rb │ ├── 20150211114014_create_company_entities.rb │ ├── 20160303083212_create_project_tasks.rb │ ├── 20160226125408_create_staffs.rb │ ├── 20150224123445_add_currency_id_to_recurring_profile.rb │ ├── 20150211114039_create_credit_payments.rb │ ├── 20160224125613_create_tasks.rb │ ├── 20150211115131_create_taxes.rb │ ├── 20150211115231_create_versions.rb │ ├── 20160215152715_create_expenses.rb │ ├── 20150403055445_create_settings.rb │ ├── 20150211113630_create_api_keys.rb │ ├── 20150211115032_create_sent_emails.rb │ ├── 20160224113217_create_projects.rb │ ├── 20150211113755_create_client_contacts.rb │ └── 20150211114331_create_email_templates.rb ├── bin ├── delayed_job └── rspec ├── script ├── delayed_job └── rails ├── doc └── README_FOR_APP └── Rakefile /log/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/tasks/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/unit/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/mailers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/models/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/plugins/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /wiki/images/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/functional/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/integration/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/views/tasks/show.html.erb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/views/invoices/edit.js.erb: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/views/sub_users/destroy.js.erb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/assets/javascripts/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/log/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/views/devise/inline_forms/inline_forms.html.erb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/app/mailers/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/app/models/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/lib/assets/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/public/favicon.ico: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/views/logs/new.html.erb: -------------------------------------------------------------------------------- 1 | <%= render 'form' %> 2 | 3 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/app/assets/images/osb_api/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/app/assets/images/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/app/models/concerns/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/helpers/settings_helper.rb: -------------------------------------------------------------------------------- 1 | module SettingsHelper 2 | end 3 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/app/controllers/concerns/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/helpers/devise_helper.rb~: -------------------------------------------------------------------------------- 1 | module ClientBillingInfosHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/sub_users_helper.rb: -------------------------------------------------------------------------------- 1 | module SubUsersHelper 2 | 3 | end 4 | -------------------------------------------------------------------------------- /app/views/calendar/index.html.erb: -------------------------------------------------------------------------------- 1 | 2 |
-------------------------------------------------------------------------------- /app/helpers/email_templates_helper.rb: -------------------------------------------------------------------------------- 1 | module EmailTemplatesHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/models/settings.rb: -------------------------------------------------------------------------------- 1 | class Settings < RailsSettings::CachedSettings 2 | 3 | end 4 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/README.rdoc: -------------------------------------------------------------------------------- 1 | = OsbApi 2 | 3 | This project rocks and uses MIT-LICENSE. -------------------------------------------------------------------------------- /app/views/logs/_basicWeek.html.erb: -------------------------------------------------------------------------------- 1 |
<%= render 'logs/form_week' %>
2 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/lib/osb_api/version.rb: -------------------------------------------------------------------------------- 1 | module OsbApi 2 | VERSION = "0.0.1" 3 | end 4 | -------------------------------------------------------------------------------- /app/helpers/recurring_profile_line_items_helper.rb: -------------------------------------------------------------------------------- 1 | module RecurringProfileLineItemsHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/views/logs/index.js.erb: -------------------------------------------------------------------------------- 1 | $('#task_body').html('<%= escape_javascript render('logs/logs') %>'); 2 | -------------------------------------------------------------------------------- /app/views/reports/_report_body.html.erb: -------------------------------------------------------------------------------- 1 | <%= render "reports/report_partials/#{@report.report_name}" %> -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/public/favicon.ico -------------------------------------------------------------------------------- /vendor/engines/osb_api/config/routes.rb: -------------------------------------------------------------------------------- 1 | OsbApi::Engine.routes.draw do 2 | mount V1::OSB => '/' 3 | end 4 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/app/helpers/application_helper.rb: -------------------------------------------------------------------------------- 1 | module ApplicationHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/models/invoice_task.rb: -------------------------------------------------------------------------------- 1 | class InvoiceTask < ActiveRecord::Base 2 | 3 | belongs_to :invoice 4 | 5 | end 6 | -------------------------------------------------------------------------------- /app/views/reports/_criteria_controls.html.erb: -------------------------------------------------------------------------------- 1 | <%= render "reports/criteria_partials/#{@report.report_name}" %> -------------------------------------------------------------------------------- /app/assets/images/ad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/ad.png -------------------------------------------------------------------------------- /app/assets/images/asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/asc.png -------------------------------------------------------------------------------- /app/assets/images/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/bg.png -------------------------------------------------------------------------------- /app/views/sub_users/create.html.erb: -------------------------------------------------------------------------------- 1 |

Users#create

2 |

Find me in app/views/users/create.html.erb

3 | -------------------------------------------------------------------------------- /app/views/sub_users/update.html.erb: -------------------------------------------------------------------------------- 1 |

Users#update

2 |

Find me in app/views/users/update.html.erb

3 | -------------------------------------------------------------------------------- /app/assets/images/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/Thumbs.db -------------------------------------------------------------------------------- /app/assets/images/btn_x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/btn_x.png -------------------------------------------------------------------------------- /app/assets/images/bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/bullet.png -------------------------------------------------------------------------------- /app/assets/images/cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/cross.png -------------------------------------------------------------------------------- /app/assets/images/dd_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/dd_02.png -------------------------------------------------------------------------------- /app/assets/images/dd_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/dd_top.png -------------------------------------------------------------------------------- /app/assets/images/desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/desc.png -------------------------------------------------------------------------------- /app/assets/images/draft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/draft.png -------------------------------------------------------------------------------- /app/assets/images/f_sep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/f_sep.png -------------------------------------------------------------------------------- /app/assets/images/graff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/graff.png -------------------------------------------------------------------------------- /app/assets/images/graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/graph.png -------------------------------------------------------------------------------- /app/assets/images/less.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/less.png -------------------------------------------------------------------------------- /app/assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/logo.png -------------------------------------------------------------------------------- /app/assets/images/more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/more.png -------------------------------------------------------------------------------- /app/assets/images/nav_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/nav_bg.png -------------------------------------------------------------------------------- /app/assets/images/paid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/paid.png -------------------------------------------------------------------------------- /app/assets/images/rails.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/rails.png -------------------------------------------------------------------------------- /app/assets/images/scrl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/scrl.png -------------------------------------------------------------------------------- /app/assets/images/sent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/sent.png -------------------------------------------------------------------------------- /app/assets/images/sterik.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/sterik.png -------------------------------------------------------------------------------- /app/assets/images/sub_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/sub_bg.png -------------------------------------------------------------------------------- /app/assets/images/viewed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/viewed.png -------------------------------------------------------------------------------- /app/views/logs/_month.html.erb: -------------------------------------------------------------------------------- 1 |
<%= render 'logs/form' %>
2 | 3 |
-------------------------------------------------------------------------------- /app/views/logs/update_tasks.js.erb: -------------------------------------------------------------------------------- 1 | $("#log_task_id").empty().append("<%= escape_javascript(render(partial: 'tasks')) %>"); -------------------------------------------------------------------------------- /app/assets/images/body-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/body-bg.png -------------------------------------------------------------------------------- /app/assets/images/btn_plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/btn_plus.png -------------------------------------------------------------------------------- /app/assets/images/calendar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/calendar.gif -------------------------------------------------------------------------------- /app/assets/images/dispute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/dispute.png -------------------------------------------------------------------------------- /app/assets/images/disputed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/disputed.png -------------------------------------------------------------------------------- /app/assets/images/glow_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/glow_bg.png -------------------------------------------------------------------------------- /app/assets/images/grey_btm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/grey_btm.png -------------------------------------------------------------------------------- /app/assets/images/grey_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/grey_top.png -------------------------------------------------------------------------------- /app/assets/images/invalid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/invalid.png -------------------------------------------------------------------------------- /app/assets/images/links_dd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/links_dd.png -------------------------------------------------------------------------------- /app/assets/images/paid_pmt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/paid_pmt.png -------------------------------------------------------------------------------- /app/assets/images/partial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/partial.png -------------------------------------------------------------------------------- /app/assets/images/sent_pmt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/sent_pmt.png -------------------------------------------------------------------------------- /app/assets/images/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/success.png -------------------------------------------------------------------------------- /app/assets/images/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/warning.png -------------------------------------------------------------------------------- /app/controllers/calendar_controller.rb: -------------------------------------------------------------------------------- 1 | class CalendarController < ApplicationController 2 | def index 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /test/unit/helpers/items_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class ItemsHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /test/unit/helpers/taxes_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class TaxesHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /test/unit/helpers/users_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class UsersHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /app/assets/images/_viewed_pmt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/_viewed_pmt.png -------------------------------------------------------------------------------- /app/assets/images/add_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/add_remove.png -------------------------------------------------------------------------------- /app/assets/images/btn_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/btn_close.png -------------------------------------------------------------------------------- /app/assets/images/cross_btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/cross_btn.png -------------------------------------------------------------------------------- /app/assets/images/draft_pmt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/draft_pmt.png -------------------------------------------------------------------------------- /app/assets/images/footer_sep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/footer_sep.png -------------------------------------------------------------------------------- /app/assets/images/freshbooks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/freshbooks.png -------------------------------------------------------------------------------- /app/assets/images/grey_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/grey_left.png -------------------------------------------------------------------------------- /app/assets/images/nav_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/nav_hover.png -------------------------------------------------------------------------------- /app/assets/images/nsub_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/nsub_hover.png -------------------------------------------------------------------------------- /app/assets/images/partial_pmt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/partial_pmt.png -------------------------------------------------------------------------------- /app/assets/images/sort-arrow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/sort-arrow.gif -------------------------------------------------------------------------------- /app/assets/images/sorting_dn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/sorting_dn.png -------------------------------------------------------------------------------- /app/assets/images/sorting_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/sorting_up.png -------------------------------------------------------------------------------- /app/assets/images/sub_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/sub_hover.png -------------------------------------------------------------------------------- /app/assets/images/top_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/top_arrow.png -------------------------------------------------------------------------------- /app/assets/images/top_corner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/top_corner.png -------------------------------------------------------------------------------- /app/assets/images/viewed_pmt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/viewed_pmt.png -------------------------------------------------------------------------------- /config/initializers/pdfkit.rb: -------------------------------------------------------------------------------- 1 | # PDFKit.configure do |config| 2 | # config.wkhtmltopdf = OSB::CONFIG::WKHTMTTOPDF_PATH 3 | # end 4 | -------------------------------------------------------------------------------- /config/initializers/time_formats.rb.rb: -------------------------------------------------------------------------------- 1 | Date::DATE_FORMATS[:month_and_year] = "%B %Y" 2 | Date::DATE_FORMATS[:short_mdy] = "%m %d %Y" -------------------------------------------------------------------------------- /test/unit/helpers/accounts_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class AccountsHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /test/unit/helpers/clients_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class ClientsHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /test/unit/helpers/invoices_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class InvoicesHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /test/unit/helpers/payments_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class PaymentsHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/app/helpers/osb_api/application_helper.rb: -------------------------------------------------------------------------------- 1 | module OsbApi 2 | module ApplicationHelper 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /app/assets/images/bkp_nav_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/bkp_nav_hover.png -------------------------------------------------------------------------------- /app/assets/images/btn_close_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/btn_close_bg.png -------------------------------------------------------------------------------- /app/assets/images/btn_x_client.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/btn_x_client.png -------------------------------------------------------------------------------- /app/assets/images/calender_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/calender_icon.png -------------------------------------------------------------------------------- /app/assets/images/chosen-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/chosen-sprite.png -------------------------------------------------------------------------------- /app/assets/images/dashboard_sep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/dashboard_sep.png -------------------------------------------------------------------------------- /app/assets/images/disputed_pmt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/disputed_pmt.png -------------------------------------------------------------------------------- /app/assets/images/draft_partial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/draft_partial.png -------------------------------------------------------------------------------- /app/assets/images/payment_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/payment_logo.png -------------------------------------------------------------------------------- /app/assets/images/preview_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/preview_logo.png -------------------------------------------------------------------------------- /app/assets/images/sterik_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/sterik_small.png -------------------------------------------------------------------------------- /app/assets/images/sub_secondary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/sub_secondary.png -------------------------------------------------------------------------------- /app/models/expense_category.rb: -------------------------------------------------------------------------------- 1 | class ExpenseCategory < ActiveRecord::Base 2 | has_many :expenses, foreign_key: 'category_id' 3 | end 4 | -------------------------------------------------------------------------------- /config/initializers/dj_mon.rb: -------------------------------------------------------------------------------- 1 | Osb::Application.config.dj_mon.username = "dj_mon" 2 | Osb::Application.config.dj_mon.password = "password" -------------------------------------------------------------------------------- /test/unit/helpers/companies_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class CompaniesHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /app/assets/images/del-move-icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/del-move-icons.png -------------------------------------------------------------------------------- /app/assets/images/graff_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/graff_highlight.png -------------------------------------------------------------------------------- /app/assets/images/grid_control_sep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/grid_control_sep.png -------------------------------------------------------------------------------- /app/assets/images/sub_secondary_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/sub_secondary_02.png -------------------------------------------------------------------------------- /app/assets/stylesheets/staffs.scss: -------------------------------------------------------------------------------- 1 | .staff { 2 | .grid_table table{ table-layout: auto;} 3 | .two,.three,.four,.five {width:23%} 4 | 5 | } -------------------------------------------------------------------------------- /test/unit/helpers/payment_terms_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class PaymentTermsHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/config/routes.rb: -------------------------------------------------------------------------------- 1 | Rails.application.routes.draw do 2 | 3 | mount OsbApi::Engine => "/osb_api" 4 | end 5 | -------------------------------------------------------------------------------- /app/assets/images/draft_partial_pmt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/draft_partial_pmt.png -------------------------------------------------------------------------------- /app/assets/images/grid_control_sep2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/grid_control_sep2.png -------------------------------------------------------------------------------- /app/assets/images/intimation_bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/intimation_bullet.png -------------------------------------------------------------------------------- /app/views/invoices/invoice_pdf.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <%= render :partial=>"show_invoice"%> 3 |
4 | -------------------------------------------------------------------------------- /test/unit/helpers/client_contacts_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class ClientContactsHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /test/unit/helpers/company_profiles_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class CompanyProfilesHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /test/unit/helpers/email_templates_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class EmailTemplatesHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/bin/rake: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require_relative '../config/boot' 3 | require 'rake' 4 | Rake.application.run 5 | -------------------------------------------------------------------------------- /app/assets/javascripts/bootstrap.js.coffee: -------------------------------------------------------------------------------- 1 | jQuery -> 2 | $("a[rel=popover]").popover() 3 | $(".tooltip").tooltip() 4 | $("a[rel=tooltip]").tooltip() -------------------------------------------------------------------------------- /app/models/team_member.rb: -------------------------------------------------------------------------------- 1 | class TeamMember < ActiveRecord::Base 2 | belongs_to :staff 3 | belongs_to :project 4 | 5 | acts_as_archival 6 | end 7 | -------------------------------------------------------------------------------- /app/views/client_contacts/new.html.erb: -------------------------------------------------------------------------------- 1 |

New client_contact

2 | 3 | <%= render 'form' %> 4 | 5 | <%= link_to 'Back', client_contacts_path %> 6 | -------------------------------------------------------------------------------- /app/views/estimates/estimate_pdf.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <%= render :partial=>"show_estimate"%> 3 |
4 | -------------------------------------------------------------------------------- /app/views/payments/enter_payment.js.erb: -------------------------------------------------------------------------------- 1 | jQuery("#paymentModal .modal-body").html("<%= escape_javascript(render(:partial=>"payments/enter_payment")) %>"); -------------------------------------------------------------------------------- /config/initializers/smtp_settings.rb: -------------------------------------------------------------------------------- 1 | ActionMailer::Base.smtp_settings = OSB::CONFIG::SMTP_SETTING.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo} 2 | -------------------------------------------------------------------------------- /spec/controllers/settings_controller_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe SettingsController, :type => :controller do 4 | 5 | end 6 | -------------------------------------------------------------------------------- /test/unit/helpers/invoice_line_items_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class InvoiceLineItemsHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /test/unit/helpers/recurring_profiles_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class RecurringProfilesHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/lib/tasks/osb_api_tasks.rake: -------------------------------------------------------------------------------- 1 | # desc "Explaining what the task does" 2 | # task :osb_api do 3 | # # Task goes here 4 | # end 5 | -------------------------------------------------------------------------------- /app/assets/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /app/assets/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /app/views/payments/new.html.erb: -------------------------------------------------------------------------------- 1 |

<%= t('header.links.payments.new') %>

2 | 3 | <%= render 'form' %> 4 | 5 | <%= link_to 'Back', payments_path %> 6 | -------------------------------------------------------------------------------- /lib/services/quickbooks/quickbook.rb: -------------------------------------------------------------------------------- 1 | module Services 2 | class Quickbook 3 | DATA_MODULES = ['Client', 'Item', 'Invoice', 'Estimate'] 4 | end 5 | end -------------------------------------------------------------------------------- /spec/controllers/companies_controller_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe CompaniesController, :type => :controller do 4 | 5 | end 6 | -------------------------------------------------------------------------------- /app/assets/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /app/models/line_item_tax.rb: -------------------------------------------------------------------------------- 1 | class LineItemTax < ActiveRecord::Base 2 | belongs_to :invoice_line_item 3 | acts_as_archival 4 | acts_as_paranoid 5 | end 6 | -------------------------------------------------------------------------------- /test/fixtures/accounts.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | : 5 | 6 | two: 7 | : 8 | -------------------------------------------------------------------------------- /app/assets/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /app/assets/images/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /app/assets/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /app/assets/images/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /app/assets/images/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /app/assets/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /config/initializers/services.rb: -------------------------------------------------------------------------------- 1 | # require all services files 2 | Dir["#{Rails.root}/lib/services/**/*.rb"].each{|f| require f} 3 | require "#{Rails.root}/lib/util.rb" -------------------------------------------------------------------------------- /spec/models/log_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe Log, :type => :model do 4 | pending "add some examples to (or delete) #{__FILE__}" 5 | end 6 | -------------------------------------------------------------------------------- /test/unit/helpers/client_additional_contacts_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class ClientAdditionalContactsHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /test/unit/item_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class ItemTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/unit/tax_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class TaxTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/unit/user_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class UserTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/app/controllers/osb_api/application_controller.rb: -------------------------------------------------------------------------------- 1 | module OsbApi 2 | class ApplicationController < ActionController::Base 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /app/views/projects/show.html.erb: -------------------------------------------------------------------------------- 1 |

<%= notice %>

2 | 3 | <%= link_to 'Edit', edit_project_path(@project) %> | 4 | <%= link_to 'Back', projects_path %> 5 | -------------------------------------------------------------------------------- /config.ru: -------------------------------------------------------------------------------- 1 | # This file is used by Rack-based servers to start the application. 2 | require ::File.expand_path('../config/environment', __FILE__) 3 | run Osb::Application 4 | -------------------------------------------------------------------------------- /config/initializers/generator.rb: -------------------------------------------------------------------------------- 1 | Rails.application.config.generators do |g| 2 | # ... 3 | g.template_engine :all 4 | g.fallbacks[:all] = :erb # or haml/slim etc 5 | end -------------------------------------------------------------------------------- /spec/models/staff_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe Staff, :type => :model do 4 | pending "add some examples to (or delete) #{__FILE__}" 5 | end 6 | -------------------------------------------------------------------------------- /spec/models/task_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe Task, :type => :model do 4 | pending "add some examples to (or delete) #{__FILE__}" 5 | end 6 | -------------------------------------------------------------------------------- /test/unit/client_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class ClientTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/unit/helpers/recurring_profile_line_items_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class RecurringProfileLineItemsHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /app/models/company_entity.rb: -------------------------------------------------------------------------------- 1 | class CompanyEntity < ActiveRecord::Base 2 | belongs_to :entity, :polymorphic => true 3 | belongs_to :parent, :polymorphic => true 4 | end 5 | -------------------------------------------------------------------------------- /app/views/doorkeeper/applications/edit.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 | <%= render 'form', application: @application %> 6 | -------------------------------------------------------------------------------- /app/views/doorkeeper/applications/new.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 | <%= render 'form', application: @application %> 6 | -------------------------------------------------------------------------------- /app/views/staffs/new.html.erb: -------------------------------------------------------------------------------- 1 |
2 |
3 |

New staff

4 |
5 |
6 | <%= render 'form' %> -------------------------------------------------------------------------------- /config/initializers/wicked_pdf.rb: -------------------------------------------------------------------------------- 1 | # WickedPdf.config = { 2 | # :wkhtmltopdf => OSB::CONFIG::WKHTMTTOPDF_PATH, 3 | # :exe_path => OSB::CONFIG::WKHTMTTOPDF_PATH 4 | # } 5 | -------------------------------------------------------------------------------- /spec/models/expense_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe Expense, :type => :model do 4 | pending "add some examples to (or delete) #{__FILE__}" 5 | end 6 | -------------------------------------------------------------------------------- /spec/models/project_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe Project, :type => :model do 4 | pending "add some examples to (or delete) #{__FILE__}" 5 | end 6 | -------------------------------------------------------------------------------- /test/unit/account_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class AccountTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/unit/category_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class CategoryTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/unit/company_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class CompanyTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/unit/currency_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class CurrencyTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/unit/invoice_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class InvoiceTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/unit/payment_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class PaymentTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /app/assets/images/ui-bg_highlight-soft_75_cccccc_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/ui-bg_highlight-soft_75_cccccc_1x100.png -------------------------------------------------------------------------------- /app/views/payment_terms/new.html.erb: -------------------------------------------------------------------------------- 1 |

<%= t('views.payment_terms.new') %>

2 | 3 | <%= render 'form' %> 4 | 5 | <%= link_to t('views.common.back'), payment_terms_path %> 6 | -------------------------------------------------------------------------------- /app/views/tasks/new.html.erb: -------------------------------------------------------------------------------- 1 |
2 |
3 |

New task

4 |
5 |
6 | 7 | <%= render 'form' %> 8 | -------------------------------------------------------------------------------- /lib/const.rb: -------------------------------------------------------------------------------- 1 | module CONST 2 | 3 | module BillingMethod 4 | TYPES = ["Hourly Staff Rate", "Hourly Task Rate", "Hourly Project Rate", "Flat Project Rate"] 5 | end 6 | 7 | end -------------------------------------------------------------------------------- /spec/models/team_member_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe TeamMember, :type => :model do 4 | pending "add some examples to (or delete) #{__FILE__}" 5 | end 6 | -------------------------------------------------------------------------------- /test/unit/payment_term_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class PaymentTermTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/unit/sent_email_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class SentEmailTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /app/views/logs/edit.js.erb: -------------------------------------------------------------------------------- 1 | $('#calendar_form').html('<%= escape_javascript render('logs/form') %>'); 2 | var view = $('#calendar').fullCalendar('getView'); 3 | $('#view').val(view.name); -------------------------------------------------------------------------------- /db/migrate/20150429054414_add_status_to_payment.rb: -------------------------------------------------------------------------------- 1 | class AddStatusToPayment < ActiveRecord::Migration 2 | def change 3 | add_column :payments, :status, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /spec/models/invoice_task_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe InvoiceTask, :type => :model do 4 | pending "add some examples to (or delete) #{__FILE__}" 5 | end 6 | -------------------------------------------------------------------------------- /spec/models/line_item_tax_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe LineItemTax, :type => :model do 4 | pending "add some examples to (or delete) #{__FILE__}" 5 | end 6 | -------------------------------------------------------------------------------- /spec/models/project_task_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe ProjectTask, :type => :model do 4 | pending "add some examples to (or delete) #{__FILE__}" 5 | end 6 | -------------------------------------------------------------------------------- /test/unit/account_users_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class AccountUsersTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/unit/client_contact_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class ClientContactTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/unit/company_entity_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class CompanyEntityTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/unit/credit_payment_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class CreditPaymentTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/unit/email_template_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class EmailTemplateTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/bin/bundle: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 3 | load Gem.bin_path('bundler', 'bundle') 4 | -------------------------------------------------------------------------------- /app/views/recurring_profile_line_items/new.html.erb: -------------------------------------------------------------------------------- 1 |

New recurring_profile_line_item

2 | 3 | <%= render 'form' %> 4 | 5 | <%= link_to 'Back', recurring_profile_line_items_path %> 6 | -------------------------------------------------------------------------------- /config/environment.rb: -------------------------------------------------------------------------------- 1 | # Load the rails application 2 | require File.expand_path('../application', __FILE__) 3 | 4 | # Initialize the rails application 5 | Osb::Application.initialize! 6 | 7 | -------------------------------------------------------------------------------- /spec/models/expense_category_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe ExpenseCategory, :type => :model do 4 | pending "add some examples to (or delete) #{__FILE__}" 5 | end 6 | -------------------------------------------------------------------------------- /test/functional/invoice_mailer_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class InvoiceMailerTest < ActionMailer::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/unit/invoice_line_item_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class InvoiceLineItemTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/unit/recurring_profile_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class RecurringProfileTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /app/assets/images/ad.png~f5884857e2fb28c182ceccd49be1205a1b282c0d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/open-source-billing/master/app/assets/images/ad.png~f5884857e2fb28c182ceccd49be1205a1b282c0d -------------------------------------------------------------------------------- /app/views/companies/new.html.erb: -------------------------------------------------------------------------------- 1 |
2 |
3 |

New Company

4 |
5 |
6 | <%= render 'form' %> 7 | -------------------------------------------------------------------------------- /app/views/invoice_line_items/new.html.erb: -------------------------------------------------------------------------------- 1 |

<%= t('views.invoice_line_item.new') %>

2 | 3 | <%= render 'form' %> 4 | 5 | <%= link_to t('views.common.back'), invoice_line_items_path %> 6 | -------------------------------------------------------------------------------- /app/views/logs/load_view.js.erb: -------------------------------------------------------------------------------- 1 | $('#calendar_form').html('<%= escape_javascript render("logs/#{@form_type}") %>'); 2 | $('#task_body').html('<%= escape_javascript render('logs/logs') %>'); 3 | 4 | -------------------------------------------------------------------------------- /db/migrate/20160412155145_add_company_id_to_staffs.rb: -------------------------------------------------------------------------------- 1 | class AddCompanyIdToStaffs < ActiveRecord::Migration 2 | def change 3 | add_column :staffs, :company_id, :integer 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /test/fixtures/categories.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | category: MyString 5 | 6 | two: 7 | category: MyString 8 | -------------------------------------------------------------------------------- /test/unit/client_billing_info_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class ClientBillingInfoTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /app/views/client_contacts/edit.html.erb: -------------------------------------------------------------------------------- 1 |

Editing client_contact

2 | 3 | <%= render 'form' %> 4 | 5 | <%= link_to 'Show', @client_contact %> | 6 | <%= link_to 'Back', client_contacts_path %> 7 | -------------------------------------------------------------------------------- /app/views/payments/_bulk_actions.erb: -------------------------------------------------------------------------------- 1 | <%= hidden_field_tag :page, params[:page] %> 2 |
  • <%= submit_tag t("views.payments.delete_forever"), :name => "destroy", :class => "top_links destroy" %>
  • 3 | -------------------------------------------------------------------------------- /test/unit/company_email_template_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class CompanyEmailTemplateTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/osb_api_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class OsbApiTest < ActiveSupport::TestCase 4 | test "truth" do 5 | assert_kind_of Module, OsbApi 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /app/models/company_email_template.rb: -------------------------------------------------------------------------------- 1 | class CompanyEmailTemplate < ActiveRecord::Base 2 | belongs_to :parent, :polymorphic => true 3 | belongs_to :email_template, :foreign_key => 'template_id' 4 | end 5 | -------------------------------------------------------------------------------- /spec/views/calendar/index.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe "calendar/index.html.erb", :type => :view do 4 | pending "add some examples to (or delete) #{__FILE__}" 5 | end 6 | -------------------------------------------------------------------------------- /test/unit/client_additional_contact_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class ClientAdditionalContactTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/.gitignore: -------------------------------------------------------------------------------- 1 | .bundle/ 2 | log/*.log 3 | pkg/ 4 | test/dummy/db/*.sqlite3 5 | test/dummy/db/*.sqlite3-journal 6 | test/dummy/log/*.log 7 | test/dummy/tmp/ 8 | test/dummy/.sass-cache 9 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/bin/rails: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | APP_PATH = File.expand_path('../../config/application', __FILE__) 3 | require_relative '../config/boot' 4 | require 'rails/commands' 5 | -------------------------------------------------------------------------------- /app/views/logs/events.json.jbuilder: -------------------------------------------------------------------------------- 1 | json.array! @logs do |log| 2 | #json.extract! log, :id, :name, :description 3 | json.title "#{log[1].to_f.round(3)}" 4 | json.start log[0].strftime('%Y-%m-%d') 5 | end -------------------------------------------------------------------------------- /app/views/payments/update_individual_payment.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    <%= params[:payments].inspect %>

    4 |
    5 |
    6 | -------------------------------------------------------------------------------- /bin/delayed_job: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment')) 4 | require 'delayed/command' 5 | Delayed::Command.new(ARGV).daemonize 6 | -------------------------------------------------------------------------------- /db/migrate/20150331075423_add_column_to_line_item_tax.rb: -------------------------------------------------------------------------------- 1 | class AddColumnToLineItemTax < ActiveRecord::Migration 2 | def change 3 | add_column :line_item_taxes, :deleted_at, :datetime 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /script/delayed_job: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment')) 4 | require 'delayed/command' 5 | Delayed::Command.new(ARGV).daemonize 6 | -------------------------------------------------------------------------------- /spec/models/client_additional_contact_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | describe ClientAdditionalContact do 4 | let(:client_additional_contact) do 5 | ClientAdditionalContact.new 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /test/unit/recurring_profile_line_item_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class RecurringProfileLineItemTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/config.ru: -------------------------------------------------------------------------------- 1 | # This file is used by Rack-based servers to start the application. 2 | 3 | require ::File.expand_path('../config/environment', __FILE__) 4 | run Rails.application 5 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/config/initializers/cookies_serializer.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | Rails.application.config.action_dispatch.cookies_serializer = :json -------------------------------------------------------------------------------- /app/views/payment_terms/edit.html.erb: -------------------------------------------------------------------------------- 1 |

    <%= t('views.payment_terms.editing') %>

    2 | 3 | <%= render 'form' %> 4 | 5 | <%= link_to 'Show', @payment_term %> | 6 | <%= link_to 'Back', payment_terms_path %> 7 | -------------------------------------------------------------------------------- /app/views/tasks/edit.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    <%= t('views.tasks.edit_task') %>

    4 |
    5 |
    6 | 7 | <%= render 'form' %> 8 | 9 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/config/initializers/session_store.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | Rails.application.config.session_store :cookie_store, key: '_dummy_session' 4 | -------------------------------------------------------------------------------- /app/views/companies/edit.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    Editing company

    4 |
    5 |
    6 | 7 | 8 | <%= render 'form' %> 9 | 10 | -------------------------------------------------------------------------------- /app/views/staffs/edit.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    <%= t('views.staffs.edit_staff') %>

    4 |
    5 |
    6 | 7 | <%= render 'form' %> 8 | 9 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/config/environment.rb: -------------------------------------------------------------------------------- 1 | # Load the Rails application. 2 | require File.expand_path('../application', __FILE__) 3 | 4 | # Initialize the Rails application. 5 | Rails.application.initialize! 6 | -------------------------------------------------------------------------------- /config/boot.rb: -------------------------------------------------------------------------------- 1 | require 'rubygems' 2 | 3 | # Set up gems listed in the Gemfile. 4 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 5 | 6 | require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE']) 7 | -------------------------------------------------------------------------------- /db/migrate/20160509124425_add_provider_to_tax.rb: -------------------------------------------------------------------------------- 1 | class AddProviderToTax < ActiveRecord::Migration 2 | def change 3 | add_column :taxes, :provider, :string 4 | add_column :taxes, :provider_id, :string 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20160509124435_add_provider_to_item.rb: -------------------------------------------------------------------------------- 1 | class AddProviderToItem < ActiveRecord::Migration 2 | def change 3 | add_column :items, :provider, :string 4 | add_column :items, :provider_id, :string 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20160510082726_add_provider_to_task.rb: -------------------------------------------------------------------------------- 1 | class AddProviderToTask < ActiveRecord::Migration 2 | def change 3 | add_column :tasks, :provider, :string 4 | add_column :tasks, :provider_id, :string 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20160516130907_add_provider_to_log.rb: -------------------------------------------------------------------------------- 1 | class AddProviderToLog < ActiveRecord::Migration 2 | def change 3 | add_column :logs, :provider, :string 4 | add_column :logs, :provider_id, :string 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /app/models/project_task.rb: -------------------------------------------------------------------------------- 1 | class ProjectTask < ActiveRecord::Base 2 | 3 | belongs_to :task 4 | belongs_to :project 5 | has_one :log, dependent: :destroy, foreign_key: :task_id 6 | 7 | acts_as_archival 8 | 9 | end 10 | -------------------------------------------------------------------------------- /app/views/clients/new.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    <%= t('views.clients.new_client') %>

    4 |
    5 |
    6 | <%= render :partial => 'form' %> 7 | 8 | -------------------------------------------------------------------------------- /app/views/doorkeeper/authorizations/show.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 |
    6 | <%= params[:code] %> 7 |
    8 | -------------------------------------------------------------------------------- /app/views/payments/edit.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    <%= t('views.payments.editing_payment') %>

    4 |
    5 |
    6 | 7 | <%= render 'form' %> 8 | 9 | -------------------------------------------------------------------------------- /app/views/sub_users/new.html.erb: -------------------------------------------------------------------------------- 1 | 2 |
    3 |
    4 |

    New User

    5 |
    6 |
    7 |
    8 | <%= render 'form' %> 9 |
    -------------------------------------------------------------------------------- /doc/README_FOR_APP: -------------------------------------------------------------------------------- 1 | Use this README file to introduce your application and point to useful places in the API for learning more. 2 | Run "rake doc:app" to generate API documentation for your models, controllers, helpers, and libraries. 3 | -------------------------------------------------------------------------------- /lib/services/freshbooks/freshbook.rb: -------------------------------------------------------------------------------- 1 | module Services 2 | class Freshbook 3 | DATA_MODULES = ['Client', 'Item', 'Tax','Task', 'Category', 'Expense', 'Invoice', 'Estimate', 'Payment', 'Staff', 'Project','TimeLog'] 4 | end 5 | end -------------------------------------------------------------------------------- /test/fixtures/account_users.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | user_id: 1 5 | company_id: 1 6 | 7 | two: 8 | user_id: 1 9 | company_id: 1 10 | -------------------------------------------------------------------------------- /app/views/doorkeeper/authorizations/error.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 |
    6 |
    <%= @pre_auth.error_response.body[:error_description] %>
    7 |
    8 | -------------------------------------------------------------------------------- /app/views/email_templates/index.js.erb: -------------------------------------------------------------------------------- 1 | jQuery('thead#email_template_head').html('<%= escape_javascript render "email_template_header"%>') 2 | jQuery('tbody#template_body').html('<%= escape_javascript render "email_templates" %>'); 3 | 4 | -------------------------------------------------------------------------------- /config/initializers/delayed_job.rb: -------------------------------------------------------------------------------- 1 | #Delayed::Worker.backend = :active_record 2 | class Delayed::Job < ActiveRecord::Base 3 | #attr_accessible :recurring_profile_id 4 | end 5 | Reporting::Reminder.delay.late_payment_reminder rescue nil 6 | -------------------------------------------------------------------------------- /db/migrate/20160516113923_add_provider_to_staffs.rb: -------------------------------------------------------------------------------- 1 | class AddProviderToStaffs < ActiveRecord::Migration 2 | def change 3 | add_column :staffs, :provider, :string 4 | add_column :staffs, :provider_id, :string 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file 2 | # 3 | # To ban all spiders from the entire site uncomment the next two lines: 4 | # User-Agent: * 5 | # Disallow: / 6 | -------------------------------------------------------------------------------- /test/fixtures/taxes.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | name: MyString 5 | percentage: 9.99 6 | 7 | two: 8 | name: MyString 9 | percentage: 9.99 10 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/config/initializers/mime_types.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new mime types for use in respond_to blocks: 4 | # Mime::Type.register "text/richtext", :rtf 5 | -------------------------------------------------------------------------------- /app/assets/stylesheets/client_contacts.css.scss: -------------------------------------------------------------------------------- 1 | // Place all the styles related to the client_contacts controller here. 2 | // They will automatically be included in application.css. 3 | // You can use Sass (SCSS) here: http://sass-lang.com/ 4 | -------------------------------------------------------------------------------- /app/assets/stylesheets/email_template_editor.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: Arial, Helvetica, sans-serif; 3 | font-size: 13px; 4 | color: #464646; 5 | padding: 0px; 6 | } 7 | 8 | p { 9 | margin-bottom: 0px; 10 | } 11 | -------------------------------------------------------------------------------- /app/views/import_data/_fb_connect.html.erb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/views/invoice_line_items/edit.html.erb: -------------------------------------------------------------------------------- 1 |

    Editing invoice_line_item

    2 | 3 | <%= render 'form' %> 4 | 5 | <%= link_to t('views.common.show'), @invoice_line_item %> | 6 | <%= link_to t('views.common.back'), invoice_line_items_path %> 7 | -------------------------------------------------------------------------------- /app/views/logs/destroy.js.erb: -------------------------------------------------------------------------------- 1 | $('#task_body').html('<%= escape_javascript render('logs/logs') %>'); 2 | $('#calendar').fullCalendar( 'refetchEvents' ); 3 | $(".alert.alert-success").show().find('span').html("Log was deleted successfully."); 4 | -------------------------------------------------------------------------------- /db/migrate/20160509110002_add_provider_into_client.rb: -------------------------------------------------------------------------------- 1 | class AddProviderIntoClient < ActiveRecord::Migration 2 | def change 3 | add_column :clients, :provider, :string 4 | add_column :clients, :provider_id, :string 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20160509124445_add_provider_to_invoice.rb: -------------------------------------------------------------------------------- 1 | class AddProviderToInvoice < ActiveRecord::Migration 2 | def change 3 | add_column :invoices, :provider, :string 4 | add_column :invoices, :provider_id, :string 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20160511121932_add_provider_to_expenses.rb: -------------------------------------------------------------------------------- 1 | class AddProviderToExpenses < ActiveRecord::Migration 2 | def change 3 | add_column :expenses, :provider, :string 4 | add_column :expenses, :provider_id, :string 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20160516100615_add_provider_to_payments.rb: -------------------------------------------------------------------------------- 1 | class AddProviderToPayments < ActiveRecord::Migration 2 | def change 3 | add_column :payments, :provider, :string 4 | add_column :payments, :provider_id, :string 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20160516122508_add_provider_to_projects.rb: -------------------------------------------------------------------------------- 1 | class AddProviderToProjects < ActiveRecord::Migration 2 | def change 3 | add_column :projects, :provider, :string 4 | add_column :projects, :provider_id, :string 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /app/views/taxes/edit.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    Editing tax

    4 |
    5 |
    6 |
    7 | <%= render 'form' %> 8 |
    9 | 10 | -------------------------------------------------------------------------------- /db/migrate/20160512124933_add_provider_to_estimates.rb: -------------------------------------------------------------------------------- 1 | class AddProviderToEstimates < ActiveRecord::Migration 2 | def change 3 | add_column :estimates, :provider, :string 4 | add_column :estimates, :provider_id, :string 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /app/models/currency.rb: -------------------------------------------------------------------------------- 1 | class Currency < ActiveRecord::Base 2 | validates :code,:title,:unit , presence: true 3 | 4 | def self.default_currency 5 | currency = Currency.where(unit: 'USD').first || Currency.first 6 | currency 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /app/views/logs/_tasks.html.erb: -------------------------------------------------------------------------------- 1 | <% if @tasks %> 2 | 3 | <% @tasks.each do |task| %> 4 | 7 | <% end %> 8 | <% end %> -------------------------------------------------------------------------------- /app/views/recurring_profile_line_items/show.html.erb: -------------------------------------------------------------------------------- 1 |

    <%= notice %>

    2 | 3 | 4 | <%= link_to 'Edit', edit_recurring_profile_line_item_path(@recurring_profile_line_item) %> | 5 | <%= link_to 'Back', recurring_profile_line_items_path %> 6 | -------------------------------------------------------------------------------- /db/migrate/20150520131850_add_trackstamps_to_invoice.rb: -------------------------------------------------------------------------------- 1 | class AddTrackstampsToInvoice < ActiveRecord::Migration 2 | def change 3 | add_column :invoices, :created_by, :integer 4 | add_column :invoices, :updated_by, :integer 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20160219082001_create_expense_categories.rb: -------------------------------------------------------------------------------- 1 | class CreateExpenseCategories < ActiveRecord::Migration 2 | def change 3 | create_table :expense_categories do |t| 4 | t.string :name 5 | t.timestamps 6 | end 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /app/views/sub_users/edit.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    Editing User

    4 |
    5 |
    6 |
    7 | <%= render 'edit_form' %> 8 |
    9 | 10 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/integration/navigation_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class NavigationTest < ActionDispatch::IntegrationTest 4 | fixtures :all 5 | 6 | # test "the truth" do 7 | # assert true 8 | # end 9 | end 10 | 11 | -------------------------------------------------------------------------------- /app/views/invoice_mailer/dispute_invoice_email.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | <%= @email_html_body.html_safe%> 8 | 9 | 10 | -------------------------------------------------------------------------------- /db/migrate/20150211112822_create_account_users.rb: -------------------------------------------------------------------------------- 1 | class CreateAccountUsers < ActiveRecord::Migration 2 | def change 3 | create_table :account_users, force: true do |t| 4 | t.integer :user_id 5 | t.integer :account_id 6 | end 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /db/migrate/20160511121717_change_taxes_data_types_to_expenses.rb: -------------------------------------------------------------------------------- 1 | class ChangeTaxesDataTypesToExpenses < ActiveRecord::Migration 2 | def change 3 | change_column :expenses, :tax_1, :integer 4 | change_column :expenses, :tax_2, :integer 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /test/fixtures/payment_terms.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | number_of_days: 1 5 | description: MyString 6 | 7 | two: 8 | number_of_days: 1 9 | description: MyString 10 | -------------------------------------------------------------------------------- /app/views/invoice_mailer/send_note_email.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | <%= @email_html_body.html_safe%> 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/views/user_mailer/new_user_account.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | <%= @email_html_body.html_safe%> 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/views/estimate_mailer/new_estimate_email.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | <%= @email_html_body.html_safe%> 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/views/invoice_mailer/new_invoice_email.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | <%= @email_html_body.html_safe%> 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /lib/tasks/add_categories.rake: -------------------------------------------------------------------------------- 1 | require 'rake' 2 | namespace :add_categories do 3 | task :category => :environment do 4 | CATEGORIES.each do |category| 5 | ExpenseCategory.create name: category unless ExpenseCategory.find_by_name category 6 | end 7 | end 8 | end -------------------------------------------------------------------------------- /app/views/devise/mailer/confirmation_instructions.html.erb: -------------------------------------------------------------------------------- 1 |

    Welcome <%= @email %>!

    2 | 3 |

    You can confirm your account email through the link below:

    4 | 5 |

    <%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @token) %>

    6 | -------------------------------------------------------------------------------- /app/views/items/new.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    New item

    4 |
    5 |
    6 |
    7 | <%= render 'form' %> 8 |
    9 | <%#= link_to 'Back', items_path %> 10 | -------------------------------------------------------------------------------- /app/views/payment_mailer/payment_notification_email.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | <%= @email_html_body.html_safe%> 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/views/taxes/new.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    New tax

    4 |
    5 |
    6 |
    7 | <%= render 'form' %> 8 |
    9 | <%#= link_to 'Back', taxes_path %> 10 | -------------------------------------------------------------------------------- /db/migrate/20150521105207_add_fields_to_recurring_profile.rb: -------------------------------------------------------------------------------- 1 | class AddFieldsToRecurringProfile < ActiveRecord::Migration 2 | def change 3 | add_column :recurring_profiles, :created_by, :integer 4 | add_column :recurring_profiles, :updated_by, :integer 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /test/fixtures/credit_payments.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | payment_id: 1 5 | invoice_id: 1 6 | amount: 9.99 7 | 8 | two: 9 | payment_id: 1 10 | invoice_id: 1 11 | amount: 9.99 12 | -------------------------------------------------------------------------------- /app/views/invoice_mailer/late_payment_reminder_email.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | <%= @email_html_body.html_safe%> 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/views/recurring_profile_line_items/edit.html.erb: -------------------------------------------------------------------------------- 1 |

    Editing recurring_profile_line_item

    2 | 3 | <%= render 'form' %> 4 | 5 | <%= link_to t('views.common.show'), @recurring_profile_line_item %> | 6 | <%= link_to t('views.common.back'), recurring_profile_line_items_path %> 7 | -------------------------------------------------------------------------------- /db/migrate/20160511113908_add_provider_to_expense_categories.rb: -------------------------------------------------------------------------------- 1 | class AddProviderToExpenseCategories < ActiveRecord::Migration 2 | def change 3 | add_column :expense_categories, :provider, :string 4 | add_column :expense_categories, :provider_id, :string 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /test/fixtures/currencies.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | title: MyString 5 | code: MyString 6 | unit: MyString 7 | 8 | two: 9 | title: MyString 10 | code: MyString 11 | unit: MyString 12 | -------------------------------------------------------------------------------- /app/assets/javascripts/client_contacts.js.coffee: -------------------------------------------------------------------------------- 1 | # Place all the behaviors and hooks related to the matching controller here. 2 | # All this logic will automatically be available in application.js. 3 | # You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ 4 | -------------------------------------------------------------------------------- /db/migrate/20150304135920_add_column_currency_id_to_invoices_and_clients.rb: -------------------------------------------------------------------------------- 1 | class AddColumnCurrencyIdToInvoicesAndClients < ActiveRecord::Migration 2 | def change 3 | add_column :clients, :currency_id, :integer 4 | add_column :invoices, :currency_id, :integer 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20150331075044_add_acts_as_archival_to_line_item_tax.rb: -------------------------------------------------------------------------------- 1 | class AddActsAsArchivalToLineItemTax < ActiveRecord::Migration 2 | def change 3 | add_column :line_item_taxes, :archive_number, :string 4 | add_column :line_item_taxes, :archived_at, :datetime 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/lib/osb_api.rb: -------------------------------------------------------------------------------- 1 | # requires all dependencies 2 | Gem.loaded_specs['osb_api'].dependencies.each do |d| 3 | require d.name unless d.name == 'rack-cors' 4 | end 5 | 6 | require "osb_api/engine" 7 | require 'rack/cors' 8 | 9 | module OsbApi 10 | 11 | end 12 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/config/initializers/filter_parameter_logging.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Configure sensitive parameters which will be filtered from the log file. 4 | Rails.application.config.filter_parameters += [:password] 5 | -------------------------------------------------------------------------------- /app/views/reports/reports.html.erb: -------------------------------------------------------------------------------- 1 | <% unless request.format.pdf? %> 2 | <%= render "criteria_controls" %> 3 | <% end %> 4 |
    5 | <%#= render "#{@report.report_name}" %> 6 | <%= render "report_body" %> 7 |
    8 | 9 | 10 | -------------------------------------------------------------------------------- /spec/models/category_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | describe Category do 4 | let(:category) do 5 | Category.new(category:'valid Category') 6 | end 7 | 8 | it '# has valid category name' do 9 | expect(category.category).to eq('valid Category') 10 | end 11 | end -------------------------------------------------------------------------------- /app/assets/javascripts/client_additional_contacts.js.coffee: -------------------------------------------------------------------------------- 1 | # Place all the behaviors and hooks related to the matching controller here. 2 | # All this logic will automatically be available in application.js. 3 | # You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ 4 | -------------------------------------------------------------------------------- /app/assets/javascripts/invoice_line_items.js.coffee: -------------------------------------------------------------------------------- 1 | # Place all the behaviors and hooks related to the matching controller here. 2 | # All this logic will automatically be available in application.js. 3 | # You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/assets/javascripts/recurring_profile_line_items.js.coffee: -------------------------------------------------------------------------------- 1 | # Place all the behaviors and hooks related to the matching controller here. 2 | # All this logic will automatically be available in application.js. 3 | # You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ 4 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/app/controllers/application_controller.rb: -------------------------------------------------------------------------------- 1 | class ApplicationController < ActionController::Base 2 | # Prevent CSRF attacks by raising an exception. 3 | # For APIs, you may want to use :null_session instead. 4 | protect_from_forgery with: :exception 5 | end 6 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env rake 2 | # Add your own tasks in files placed in lib/tasks ending in .rake, 3 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 4 | 5 | require File.expand_path('../config/application', __FILE__) 6 | 7 | Osb::Application.load_tasks 8 | -------------------------------------------------------------------------------- /spec/requests/tasks_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe "Tasks", :type => :request do 4 | describe "GET /tasks" do 5 | it "works! (now write some real specs)" do 6 | get tasks_path 7 | expect(response).to have_http_status(200) 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /spec/views/projects/show.html.all_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe "projects/show", :type => :view do 4 | before(:each) do 5 | @project = assign(:project, Project.create!()) 6 | end 7 | 8 | it "renders attributes in

    " do 9 | render 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /test/fixtures/company_email_templates.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | template_id: 1 5 | parent_id: 1 6 | parent_type: MyString 7 | 8 | two: 9 | template_id: 1 10 | parent_id: 1 11 | parent_type: MyString 12 | -------------------------------------------------------------------------------- /test/fixtures/sent_emails.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | date: 2013-02-01 5 | sender: MyString 6 | recipient: MyString 7 | 8 | two: 9 | date: 2013-02-01 10 | sender: MyString 11 | recipient: MyString 12 | -------------------------------------------------------------------------------- /app/views/logs/_logs_header.html.erb: -------------------------------------------------------------------------------- 1 | 2 | <%= "Project" %> 3 | <%= "Task" %> 4 | <%= "Notes" %> 5 | <%= 'Hours' %> 6 | Action(s) 7 | 8 | 9 | -------------------------------------------------------------------------------- /spec/requests/staffs_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe "Staffs", :type => :request do 4 | describe "GET /staffs" do 5 | it "works! (now write some real specs)" do 6 | get staffs_path 7 | expect(response).to have_http_status(200) 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/config/boot.rb: -------------------------------------------------------------------------------- 1 | # Set up gems listed in the Gemfile. 2 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../../Gemfile', __FILE__) 3 | 4 | require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) 5 | $LOAD_PATH.unshift File.expand_path('../../../../lib', __FILE__) 6 | -------------------------------------------------------------------------------- /app/assets/stylesheets/tasks.scss: -------------------------------------------------------------------------------- 1 | .task { 2 | col.one{ 3 | width: 3% !important; 4 | } 5 | .two, .three, .four, .five, .six { 6 | width: 16.5% 7 | } 8 | } 9 | .task_head tr th:first-child{ 10 | width: 10% !important; 11 | } 12 | .tasks_listing{ 13 | table-layout: auto !important; 14 | } -------------------------------------------------------------------------------- /app/views/doorkeeper/applications/_delete_form.html.erb: -------------------------------------------------------------------------------- 1 | <%- submit_btn_css ||= 'btn btn-link' %> 2 | <%= form_tag [:oauth, application] do %> 3 | 4 | <%= submit_tag 'Destroy', onclick: "return confirm('Are you sure?')", class: submit_btn_css %> 5 | <% end %> 6 | -------------------------------------------------------------------------------- /app/views/settings/create.js.erb: -------------------------------------------------------------------------------- 1 | jQuery(".alert.alert-success").show().find('span').html("Setting are successfully updated"); 2 | <% if @language_changed.present? and @language_changed == true %> 3 | window.location.href = "/<%= current_user.settings.language.to_sym %>/sub_users/user_settings"; 4 | <% end %> 5 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/Rakefile: -------------------------------------------------------------------------------- 1 | # Add your own tasks in files placed in lib/tasks ending in .rake, 2 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 3 | 4 | require File.expand_path('../config/application', __FILE__) 5 | 6 | Rails.application.load_tasks 7 | -------------------------------------------------------------------------------- /app/models/log.rb: -------------------------------------------------------------------------------- 1 | class Log < ActiveRecord::Base 2 | 3 | belongs_to :project 4 | belongs_to :task, class_name: 'ProjectTask', foreign_key: :task_id 5 | 6 | validates :project_id,:task_id,:date , presence: true 7 | 8 | def line_total 9 | (hours * task.rate).round(2) 10 | end 11 | 12 | end 13 | -------------------------------------------------------------------------------- /app/views/items/edit.html.erb: -------------------------------------------------------------------------------- 1 |

    2 |
    3 |

    Editing item

    4 |
    5 |
    6 |
    7 | <%= render 'form' %> 8 |
    9 | <%#= link_to 'Show', @item %> 10 | <%#= link_to 'Back', items_path %> 11 | -------------------------------------------------------------------------------- /db/migrate/20150211113714_create_categories.rb: -------------------------------------------------------------------------------- 1 | class CreateCategories < ActiveRecord::Migration 2 | def change 3 | create_table :categories do |t| 4 | t.string "category" 5 | t.datetime "created_at", null: false 6 | t.datetime "updated_at", null: false 7 | end 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /spec/requests/expenses_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe "Expenses", :type => :request do 4 | describe "GET /expenses" do 5 | it "works! (now write some real specs)" do 6 | get expenses_path 7 | expect(response).to have_http_status(200) 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /spec/requests/projects_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe "Projects", :type => :request do 4 | describe "GET /projects" do 5 | it "works! (now write some real specs)" do 6 | get projects_path 7 | expect(response).to have_http_status(200) 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /app/assets/stylesheets/show_email.css.scss: -------------------------------------------------------------------------------- 1 | .show_email{ 2 | .content_top{ 3 | border-bottom: 0px; 4 | } 5 | .help_page{ 6 | float: left; 7 | width: 95.3%; 8 | border: 1px solid #D7D7D7; 9 | border-radius: 4px; 10 | padding: 19px 18px 19px 18px; 11 | margin: 10px 0 0 0; 12 | } 13 | } -------------------------------------------------------------------------------- /app/views/payments/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= form_for(@payment) do |f| %> 2 | <%= render "edit_fields", :f => f, :payment => @payment, :index => 0 %> 3 |
    4 | <%= f.submit nil, :class => "btn_large submit",:id=>'submit_payment_edit_form' %> 5 |
    6 | <% end %> -------------------------------------------------------------------------------- /app/views/accounts/new.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    <%= t('views.accounts.account') %>

    4 |
    5 |
    6 | 7 | 8 |
    9 | <%= render 'form' %> 10 |
    11 | 12 | <%#= link_to 'Back', companies_path %> 13 | -------------------------------------------------------------------------------- /app/views/email_templates/edit.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    Edit Email Template

    4 |
    5 |
    6 | 7 | 8 | 9 | <%= render 'form' %> 10 | 11 | <%#= link_to 'Show', @email_template %> 12 | <%#= link_to 'Back', email_templates_path %> 13 | -------------------------------------------------------------------------------- /script/rails: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby.exe" 2 | # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application. 3 | 4 | APP_PATH = File.expand_path('../../config/application', __FILE__) 5 | require File.expand_path('../../config/boot', __FILE__) 6 | require 'rails/commands' 7 | -------------------------------------------------------------------------------- /spec/controllers/calendar_controller_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe CalendarController, :type => :controller do 4 | 5 | describe "GET index" do 6 | it "returns http success" do 7 | get :index 8 | expect(response).to have_http_status(:success) 9 | end 10 | end 11 | 12 | end 13 | -------------------------------------------------------------------------------- /app/views/estimates/selected_currency.js.erb: -------------------------------------------------------------------------------- 1 | window.currency_symbol = "<%= @currency.unit %>" 2 | $("#estimate_sub_total_lbl, #estimate_total_lbl, .tax_amount").formatCurrency({symbol: window.currency_symbol}) 3 | $('#discount_type').find('option:last').val("<%= @currency.unit %>").html("<%= @currency.unit %>").trigger("liszt:updated"); 4 | -------------------------------------------------------------------------------- /app/views/invoices/selected_currency.js.erb: -------------------------------------------------------------------------------- 1 | window.currency_symbol = "<%= @currency.unit %>" 2 | $("#invoice_sub_total_lbl, #invoice_total_lbl, .tax_amount").formatCurrency({symbol: window.currency_symbol}) 3 | $('#discount_type').find('option:last').val("<%= @currency.unit %>").html("<%= @currency.unit %>").trigger("liszt:updated"); 4 | -------------------------------------------------------------------------------- /app/views/logs/create.js.erb: -------------------------------------------------------------------------------- 1 | $('#task_body').html('<%= escape_javascript render('logs/logs') %>'); 2 | $('#calendar').fullCalendar( 'refetchEvents' ); 3 | $(".alert.alert-success").show().find('span').html("Log(s) created successfully."); 4 | $('#new_log')[0].reset(); 5 | $('#log_date').val($.datepicker.formatDate('yy-mm-dd', new Date()) ); -------------------------------------------------------------------------------- /app/views/payment_terms/create.js.erb: -------------------------------------------------------------------------------- 1 | <% inlineform_action = params[:add_more] ? "inlineform:save_and_add_more" : "inlineform:save" %> 2 | <%= "{\"action\": \"#{inlineform_action}\", \"record\": \"\"}".html_safe%> 3 | -------------------------------------------------------------------------------- /app/views/doorkeeper/authorized_applications/_delete_form.html.erb: -------------------------------------------------------------------------------- 1 | <%- submit_btn_css ||= 'btn btn-link' %> 2 | <%= form_tag oauth_authorized_application_path(application) do %> 3 | 4 | <%= submit_tag 'Revoke', onclick: "return confirm('Are you sure?')", class: submit_btn_css %> 5 | <% end %> 6 | -------------------------------------------------------------------------------- /app/views/invoices/_paging.html.slim: -------------------------------------------------------------------------------- 1 | td colspan="8" style="border-top: 1px solid #DDDDDD; text-align: left; " 2 | div class="paginator" 3 | = paginate @invoices, :remote => true 4 | div class="paging_info" 5 | - unless @invoices.blank? 6 | = page_entries_info @invoices 7 | = custom_per_page 8 | | per page 9 | -------------------------------------------------------------------------------- /app/views/recurring_profiles/selected_currency.js.erb: -------------------------------------------------------------------------------- 1 | window.currency_symbol = "<%= @currency.unit %>" 2 | $("#invoice_sub_total_lbl, #invoice_total_lbl, .tax_amount").formatCurrency({symbol: window.currency_symbol}) 3 | $('#discount_type').find('option:last').val("<%= @currency.unit %>").html("<%= @currency.unit %>").trigger("liszt:updated"); 4 | -------------------------------------------------------------------------------- /spec/views/projects/index.html.all_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe "projects/index", :type => :view do 4 | before(:each) do 5 | assign(:projects, [ 6 | Project.create!(), 7 | Project.create!() 8 | ]) 9 | end 10 | 11 | it "renders a list of projects" do 12 | render 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /test/fixtures/company_entities.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | entity_id: 1 5 | entity_type: MyString 6 | parent_id: 1 7 | parent_type: MyString 8 | 9 | two: 10 | entity_id: 1 11 | entity_type: MyString 12 | parent_id: 1 13 | parent_type: MyString 14 | -------------------------------------------------------------------------------- /app/assets/stylesheets/settings.scss: -------------------------------------------------------------------------------- 1 | // Place all the styles related to the settings controller here. 2 | // They will automatically be included in application.css. 3 | // You can use Sass (SCSS) here: http://sass-lang.com/ 4 | 5 | #import_links{padding:30px} 6 | #fb_link,#qb_link{float: left; width: 100px; margin: 20px 0 0 20px} 7 | #qb_link {padding-top:10px} -------------------------------------------------------------------------------- /db/migrate/20150330130413_create_line_item_taxes.rb: -------------------------------------------------------------------------------- 1 | class CreateLineItemTaxes < ActiveRecord::Migration 2 | def change 3 | create_table :line_item_taxes do |t| 4 | t.integer :invoice_line_item_id 5 | t.decimal :percentage 6 | t.string :name 7 | t.integer :tax_id 8 | t.timestamps 9 | end 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /app/views/clients/create.js.erb: -------------------------------------------------------------------------------- 1 | <% inlineform_action = params[:add_more] ? "inlineform:save_and_add_more" : "inlineform:save" %> 2 | <%= "{\"action\": \"#{inlineform_action}\", \"record\": \"\"}".html_safe%> 3 | -------------------------------------------------------------------------------- /test/fixtures/email_templates.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | template_type: MyString 5 | email_from: MyString 6 | subject: MyString 7 | body: MyText 8 | 9 | two: 10 | template_type: MyString 11 | email_from: MyString 12 | subject: MyString 13 | body: MyText 14 | -------------------------------------------------------------------------------- /app/views/payments/delete_non_credit_payments.js.erb: -------------------------------------------------------------------------------- 1 | jQuery(".alert").hide(); 2 | 3 | window.location.reload() 4 | 5 | jQuery('tbody#payment_body').html('<%= escape_javascript render("payment") %>'); 6 | jQuery("table.table_listing").trigger('update'); 7 | jQuery('#credit_payments').modal('hide'); 8 | bind_deleted_entry(); 9 | bind_edit_payment_links() 10 | -------------------------------------------------------------------------------- /app/assets/stylesheets/logs.css.scss: -------------------------------------------------------------------------------- 1 | .log_invoice_form{ 2 | .grid_summary { 3 | float: right; 4 | margin: 14px 25px 0; 5 | padding: 0 0 30px; 6 | width: 50%; 7 | } 8 | 9 | #log_invoice_grid_fields{ 10 | width: 100% !important; 11 | } 12 | } 13 | 14 | .log form textarea {max-width: 203px } 15 | #timer_wrapper textarea{max-width: 200px} -------------------------------------------------------------------------------- /app/views/accounts/edit.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    <%= t('views.accounts.account') %>

    4 |
    5 |
    6 | 7 | 8 |
    9 | <%= render 'form' %> 10 |
    11 | 12 | <%#= link_to 'Show', @company %> 13 | <%#= link_to 'Back', companies_path %> 14 | -------------------------------------------------------------------------------- /app/views/devise/mailer/unlock_instructions.html.erb: -------------------------------------------------------------------------------- 1 |

    Hello <%= @resource.email %>!

    2 | 3 |

    Your account has been locked due to an excessive number of unsuccessful sign in attempts.

    4 | 5 |

    Click the link below to unlock your account:

    6 | 7 |

    <%= link_to 'Unlock my account', unlock_url(@resource, :unlock_token => @resource.unlock_token) %>

    8 | -------------------------------------------------------------------------------- /app/views/invoices/dispute_invoice.js.erb: -------------------------------------------------------------------------------- 1 | jQuery('#dispute_invoice_popup').modal('hide') 2 | jQuery(".alert.alert-success").show().find('span').html("<%= escape_javascript @message %>"); 3 | jQuery('.response_to_client').html('<%= escape_javascript render("dispute_history") %>'); 4 | jQuery('#show_invoice_container').html('<%= escape_javascript render("show_invoice") %>'); -------------------------------------------------------------------------------- /db/migrate/20160302170954_create_logs.rb: -------------------------------------------------------------------------------- 1 | class CreateLogs < ActiveRecord::Migration 2 | def change 3 | create_table :logs do |t| 4 | t.integer :project_id 5 | t.integer :task_id 6 | t.float :hours 7 | t.string :notes 8 | t.date :date 9 | t.integer :company_id 10 | 11 | t.timestamps 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /db/migrate/20160330110032_create_invoice_tasks.rb: -------------------------------------------------------------------------------- 1 | class CreateInvoiceTasks < ActiveRecord::Migration 2 | def change 3 | create_table :invoice_tasks do |t| 4 | t.string :name 5 | t.string :description 6 | t.integer :rate 7 | t.float :hours 8 | t.integer :invoice_id 9 | 10 | t.timestamps 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /db/migrate/20150211114833_create_payment_terms.rb: -------------------------------------------------------------------------------- 1 | class CreatePaymentTerms < ActiveRecord::Migration 2 | def change 3 | create_table :payment_terms do |t| 4 | t.integer "number_of_days" 5 | t.string "description" 6 | t.datetime "created_at", null: false 7 | t.datetime "updated_at", null: false 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /spec/views/projects/new.html.all_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe "projects/new", :type => :view do 4 | before(:each) do 5 | assign(:project, Project.new()) 6 | end 7 | 8 | it "renders new project form" do 9 | render 10 | 11 | assert_select "form[action=?][method=?]", projects_path, "post" do 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/app/views/layouts/osb_api/application.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | OsbApi 5 | <%= stylesheet_link_tag "osb_api/application", media: "all" %> 6 | <%= javascript_include_tag "osb_api/application" %> 7 | <%= csrf_meta_tags %> 8 | 9 | 10 | 11 | <%= yield %> 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/assets/stylesheets/accounts.css.scss: -------------------------------------------------------------------------------- 1 | .companies-main{ 2 | .label_field.left{ 3 | width: 150px; 4 | } 5 | .label_field label{ 6 | width:130px; 7 | text-align: left; 8 | } 9 | #company_time_zone_chzn.chzn-container .chzn-results{ 10 | max-height: 120px; 11 | } 12 | select{ 13 | width: 226px; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/views/invoices/invoice_deleted_message.erb: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 |
    7 | <%= t('views.invoices.invoice_deleted') %> 8 |
    12 |
    13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/views/payments/payments_history.js.erb: -------------------------------------------------------------------------------- 1 | jQuery('#payments_history_header').html('<%=escape_javascript(render :partial =>"payments_history_header")%>') 2 | jQuery('#payment_body').html('<%= escape_javascript(render :partial=>"payments_history") %>'); 3 | jQuery('tfoot#paging_links').html('<%= escape_javascript render("application_partials/paging") %>'); 4 | bind_edit_payment_links() 5 | 6 | -------------------------------------------------------------------------------- /db/migrate/20160606082842_add_sessions_table.rb: -------------------------------------------------------------------------------- 1 | class AddSessionsTable < ActiveRecord::Migration 2 | def change 3 | create_table :sessions do |t| 4 | t.string :session_id, :null => false 5 | t.text :data 6 | t.timestamps 7 | end 8 | 9 | add_index :sessions, :session_id, :unique => true 10 | add_index :sessions, :updated_at 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /app/views/email_templates/new.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 |

    <%= t('views.email_templates.new') %>

    5 |
    6 |
    7 | 8 |
    9 | <%= render 'form' %> 10 |
    11 | 12 | 13 |
    14 | 15 | -------------------------------------------------------------------------------- /app/views/payments/invoice_payments_history.js.erb: -------------------------------------------------------------------------------- 1 | jQuery('#payments_history_header').html('<%=escape_javascript(render :partial =>"payments_history_header")%>') 2 | jQuery('#payment_body').html('<%= escape_javascript(render :partial=>"payments_history") %>'); 3 | jQuery('tfoot#paging_links').html('<%= escape_javascript render("application_partials/paging") %>'); 4 | bind_edit_payment_links() 5 | -------------------------------------------------------------------------------- /db/migrate/20150211114142_create_currencies.rb: -------------------------------------------------------------------------------- 1 | class CreateCurrencies < ActiveRecord::Migration 2 | def change 3 | create_table(:currencies, :options => 'ENGINE=InnoDB DEFAULT CHARSET=utf8') do |t| 4 | t.string "title" 5 | t.string "code" 6 | t.string "unit" 7 | t.datetime "created_at" 8 | t.datetime "updated_at" 9 | end 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /app/views/taxes/create.js.erb: -------------------------------------------------------------------------------- 1 | <%unless @tax_exists%> 2 | <% inlineform_action = params[:add_more] ? "inlineform:save_and_add_more" : "inlineform:save" %> 3 | <%= "{\"action\": \"#{inlineform_action}\", \"record\": \"\"}".html_safe%> 4 | <%else%> 5 | <%= "{\"exists\": \"#{@tax_exists}\"}".html_safe%> 6 | <%end%> -------------------------------------------------------------------------------- /spec/models/client_contact_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | describe ClientContact do 4 | let(:client) do 5 | FactoryGirl.create(:client) 6 | end 7 | 8 | let(:client_contact) do 9 | client.client_contacts.create(:client_contact) 10 | end 11 | 12 | it 'should belongs to client' do 13 | client_contact.client.count.should == 1 14 | end 15 | 16 | end 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/views/taxes/show.html.erb: -------------------------------------------------------------------------------- 1 |

    <%= notice %>

    2 | 3 |

    4 | <%= t('views.common.name') %>: 5 | <%= @taxis.name %> 6 |

    7 | 8 |

    9 | <%= t('views.common.percentage') %>: 10 | <%= @taxis.percentage %> 11 |

    12 | 13 | 14 | <%= link_to t('helpers.links.edit'), edit_taxis_path(@taxis) %> | 15 | <%= link_to t('views.common.back'), taxes_path %> 16 | -------------------------------------------------------------------------------- /spec/views/projects/edit.html.all_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe "projects/edit", :type => :view do 4 | before(:each) do 5 | @project = assign(:project, Project.create!()) 6 | end 7 | 8 | it "renders the edit project form" do 9 | render 10 | 11 | assert_select "form[action=?][method=?]", project_path(@project), "post" do 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /app/views/import_data/_qb_connect.html.erb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/views/tasks/_paging.html.erb: -------------------------------------------------------------------------------- 1 | 2 |
    3 | <%= paginate @tasks, :remote => true %> 4 |
    5 | <% unless @tasks.blank? %> 6 | <%= page_entries_info @tasks %> 7 | <%= custom_per_page %> per page 8 | <% end %> 9 |
    10 |
    11 | -------------------------------------------------------------------------------- /app/assets/stylesheets/taxes.css.scss: -------------------------------------------------------------------------------- 1 | .taxes{ 2 | 3 | .grid_table table col.one{ /*check box*/ 4 | width : 33px; 5 | } 6 | .grid_table table col.two{ /*name*/ 7 | width : 359px; 8 | } 9 | .grid_table table col.three{ /*percentage*/ 10 | width: 378px; 11 | } 12 | .grid_table table col.four{ /*actions*/ 13 | width : 70px; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /app/views/staffs/_paging.html.erb: -------------------------------------------------------------------------------- 1 | 2 |
    3 | <%= paginate @staffs, :remote => true %> 4 |
    5 | <% unless @staffs.blank? %> 6 | <%= page_entries_info @staffs %> 7 | <%= custom_per_page %> per page 8 | <% end %> 9 |
    10 |
    11 | -------------------------------------------------------------------------------- /app/views/staffs/show.html.erb: -------------------------------------------------------------------------------- 1 | p#notice = notice 2 | 3 | p 4 | strong Email: 5 | = @staff.email 6 | p 7 | strong Name: 8 | = @staff.name 9 | p 10 | strong Rate: 11 | = @staff.rate 12 | p 13 | strong Created by: 14 | = @staff.created_by 15 | p 16 | strong Updated by: 17 | = @staff.updated_by 18 | 19 | = link_to 'Edit', edit_staff_path(@staff) 20 | '| 21 | = link_to 'Back', staffs_path 22 | -------------------------------------------------------------------------------- /config/initializers/mime_types.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new mime types for use in respond_to blocks: 4 | # Mime::Type.register "text/richtext", :rtf 5 | # Mime::Type.register_alias "text/html", :iphone 6 | Mime::Type.register "application/xls", :xls 7 | Mime::Type.register "application/xlsx", :xlsx 8 | Mime::Type.register "application/pdf", :pdf 9 | 10 | -------------------------------------------------------------------------------- /app/assets/stylesheets/payment_terms.css.scss: -------------------------------------------------------------------------------- 1 | // Place all the styles related to the PaymentTerms controller here. 2 | // They will automatically be included in application.css. 3 | // You can use Sass (SCSS) here: http://sass-lang.com/ 4 | #create_term { 5 | .modal { 6 | tr:first-child { 7 | background: none; 8 | } 9 | .modal-body { 10 | min-height: 0; 11 | } 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /app/views/payments/_paging.html.erb: -------------------------------------------------------------------------------- 1 | 2 |
    3 | <%= paginate @payments, :remote => true %> 4 |
    5 | <% unless @payments.blank? %> 6 | <%= page_entries_info @payments %> 7 | <%= custom_per_page %> per page 8 | <% end %> 9 |
    10 |
    11 | -------------------------------------------------------------------------------- /app/views/companies/_paging.html.erb: -------------------------------------------------------------------------------- 1 | 2 |
    3 | <%= paginate @companies, :remote => true %> 4 |
    5 | <% unless @companies.blank? %> 6 | <%= page_entries_info @companies %> 7 | <%= custom_per_page %> per page 8 | <% end %> 9 |
    10 |
    11 | -------------------------------------------------------------------------------- /app/views/dashboard/_osb_reports.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    OSB Reports

    4 |
    5 |
    6 |

    7 | Payments Collection, Tax Summary, Revenue by Client and more insightful reports! 8 |

    9 | See my reports 10 |
    11 |
    -------------------------------------------------------------------------------- /test/fixtures/users.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | # This model initially had no columns defined. If you add columns to the 4 | # model remove the '{}' from the fixture names and add the columns immediately 5 | # below each fixture, per the syntax in the comments below 6 | # 7 | one: {} 8 | # column: value 9 | # 10 | two: {} 11 | # column: value 12 | -------------------------------------------------------------------------------- /db/migrate/20150211113945_create_company_email_templates.rb: -------------------------------------------------------------------------------- 1 | class CreateCompanyEmailTemplates < ActiveRecord::Migration 2 | def change 3 | create_table :company_email_templates do |t| 4 | t.integer "template_id" 5 | t.integer "parent_id" 6 | t.string "parent_type" 7 | t.datetime "created_at", null: false 8 | t.datetime "updated_at", null: false 9 | end 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/app/views/layouts/application.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Dummy 5 | <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> 6 | <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 7 | <%= csrf_meta_tags %> 8 | 9 | 10 | 11 | <%= yield %> 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/assets/stylesheets/settings.css.scss: -------------------------------------------------------------------------------- 1 | a.btn.active.btn-danger, a.btn.active.btn-success { 2 | color: #ffffff; 3 | background-color: #00BDE5; 4 | } 5 | a.btn.btn-default { 6 | color: #000000; 7 | background-color: #FFFFFF; 8 | background-position: 0px; 9 | z-index: 0; 10 | } 11 | .fields_content_container{ 12 | &.basic{ 13 | width: 500px; 14 | select{ 15 | width: 350px; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /db/migrate/20160303151412_create_team_members.rb: -------------------------------------------------------------------------------- 1 | class CreateTeamMembers < ActiveRecord::Migration 2 | def change 3 | create_table :team_members do |t| 4 | t.string :email 5 | t.string :name 6 | t.float :rate 7 | t.string :archive_number 8 | t.datetime :archived_at 9 | t.integer :project_id 10 | t.integer :staff_id 11 | 12 | t.timestamps 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /app/views/clients/edit.html.erb: -------------------------------------------------------------------------------- 1 | <%- model_class = Client -%> 2 |
    3 |
    4 |

    5 | <%= t '.title', :default => t('helpers.titles.edit', :model => model_class.model_name.human, 6 | :default => "Edit #{model_class.model_name.human}") %> 7 |

    8 |
    9 |
    10 | <%= render :partial => 'form' %> 11 | -------------------------------------------------------------------------------- /db/migrate/20150211114014_create_company_entities.rb: -------------------------------------------------------------------------------- 1 | class CreateCompanyEntities < ActiveRecord::Migration 2 | def change 3 | create_table :company_entities do |t| 4 | t.integer "entity_id" 5 | t.string "entity_type" 6 | t.integer "parent_id" 7 | t.string "parent_type" 8 | t.datetime "created_at", null: false 9 | t.datetime "updated_at", null: false 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /db/migrate/20160303083212_create_project_tasks.rb: -------------------------------------------------------------------------------- 1 | class CreateProjectTasks < ActiveRecord::Migration 2 | def change 3 | create_table :project_tasks do |t| 4 | t.string :name 5 | t.text :description 6 | t.float :rate 7 | t.string :archive_number 8 | t.datetime :archived_at 9 | t.integer :project_id 10 | t.integer :task_id 11 | 12 | t.timestamps 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /test/fixtures/recurring_profiles.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | # This model initially had no columns defined. If you add columns to the 4 | # model remove the '{}' from the fixture names and add the columns immediately 5 | # below each fixture, per the syntax in the comments below 6 | # 7 | one: {} 8 | # column: value 9 | # 10 | two: {} 11 | # column: value 12 | -------------------------------------------------------------------------------- /app/views/projects/_task_list.html.erb: -------------------------------------------------------------------------------- 1 |
  • 2 | <%= task.name %> 3 | 4 | <%= task.billable ? "billable" : "non billable"%> 5 | 6 |
  • -------------------------------------------------------------------------------- /test/fixtures/client_contacts.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | client_id: 1 5 | first_name: MyString 6 | last_name: MyString 7 | email: MyString 8 | phone1: MyString 9 | phone2: MyString 10 | 11 | two: 12 | client_id: 1 13 | first_name: MyString 14 | last_name: MyString 15 | email: MyString 16 | phone1: MyString 17 | phone2: MyString 18 | -------------------------------------------------------------------------------- /app/models/recurring_profile_line_item.rb: -------------------------------------------------------------------------------- 1 | class RecurringProfileLineItem < ActiveRecord::Base 2 | # associations 3 | belongs_to :recurring_profile 4 | belongs_to :item 5 | belongs_to :tax1, :foreign_key => 'tax_1', :class_name => 'Tax' 6 | belongs_to :tax2, :foreign_key => 'tax_2', :class_name => 'Tax' 7 | attr_accessor :tax_one, :tax_two 8 | 9 | # archive and delete 10 | acts_as_archival 11 | acts_as_paranoid 12 | end 13 | -------------------------------------------------------------------------------- /app/views/email_templates/_paging.html.erb: -------------------------------------------------------------------------------- 1 | 2 |
    3 | <%= paginate @email_templates, :remote => true %> 4 |
    5 | <% unless @email_templates.blank? %> 6 | <%= page_entries_info @email_templates %> 7 | <%= custom_per_page %> per page 8 | <% end %> 9 |
    10 |
    11 | -------------------------------------------------------------------------------- /test/fixtures/recurring_profile_line_items.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | # This model initially had no columns defined. If you add columns to the 4 | # model remove the '{}' from the fixture names and add the columns immediately 5 | # below each fixture, per the syntax in the comments below 6 | # 7 | one: {} 8 | # column: value 9 | # 10 | two: {} 11 | # column: value 12 | -------------------------------------------------------------------------------- /app/views/items/new.js.erb: -------------------------------------------------------------------------------- 1 | if (confirm('Your changes will be discarded by switching company. Are you sure you want to switch company?')) { 2 | // Set the session and reload the new item page 3 | jQuery.get("/application/new_selected_company_name?company_id=" + "<%= params[:company_id] %>", function(response) { 4 | jQuery("#current_selected_company").text(response); 5 | }); 6 | setTimeout(function(){location.reload();},1000); 7 | } 8 | -------------------------------------------------------------------------------- /bin/rspec: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # 3 | # This file was generated by Bundler. 4 | # 5 | # The application 'rspec' is installed as part of a gem, and 6 | # this file is here to facilitate running it. 7 | # 8 | 9 | require 'pathname' 10 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile", 11 | Pathname.new(__FILE__).realpath) 12 | 13 | require 'rubygems' 14 | require 'bundler/setup' 15 | 16 | load Gem.bin_path('rspec-core', 'rspec') 17 | -------------------------------------------------------------------------------- /db/migrate/20160226125408_create_staffs.rb: -------------------------------------------------------------------------------- 1 | class CreateStaffs < ActiveRecord::Migration 2 | def change 3 | create_table :staffs do |t| 4 | t.string :email 5 | t.string :name 6 | t.float :rate 7 | t.integer :created_by 8 | t.integer :updated_by 9 | t.string :archive_number 10 | t.datetime :archived_at 11 | t.time :deleted_at 12 | 13 | t.timestamps 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /app/views/recurring_profiles/_paging.html.erb: -------------------------------------------------------------------------------- 1 | 2 |
    3 | <%= paginate @recurring_profiles, :remote => true %> 4 |
    5 | <% unless @recurring_profiles.blank? %> 6 | <%= page_entries_info @recurring_profiles %> 7 | <%= custom_per_page %> per page 8 | <% end %> 9 |
    10 |
    11 | -------------------------------------------------------------------------------- /test/performance/browsing_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | require 'rails/performance_test_help' 3 | 4 | class BrowsingTest < ActionDispatch::PerformanceTest 5 | # Refer to the documentation for all available options 6 | # self.profile_options = { :runs => 5, :metrics => [:wall_time, :memory] 7 | # :output => 'tmp/performance', :formats => [:flat] } 8 | 9 | def test_homepage 10 | get '/' 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/config/initializers/assets.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Version of your assets, change this if you want to expire all your assets. 4 | Rails.application.config.assets.version = '1.0' 5 | 6 | # Precompile additional assets. 7 | # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. 8 | # Rails.application.config.assets.precompile += %w( search.js ) 9 | -------------------------------------------------------------------------------- /config/initializers/backtrace_silencers.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. 4 | # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } 5 | 6 | # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. 7 | # Rails.backtrace_cleaner.remove_silencers! 8 | -------------------------------------------------------------------------------- /app/assets/stylesheets/sent_email.css.scss: -------------------------------------------------------------------------------- 1 | .sent_email{ 2 | .grid_table{ 3 | padding: 35px 0 40px 0; 4 | table col.one{ /*subject*/ 5 | width : 330px; 6 | } 7 | table col.two{ /*receipt*/ 8 | width : 330px; 9 | } 10 | table col.three{ /*type*/ 11 | width: 90px; 12 | } 13 | table col.four{ /*date*/ 14 | width : 90px; 15 | } 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/views/invoices/new.js.erb: -------------------------------------------------------------------------------- 1 | //if (confirm('Your changes will be discarded by switching company. Are you sure you want to switch company?')) { 2 | // // Set the session and reload the new invoices page 3 | // jQuery.get("/application/new_selected_company_name?company_id=" + "<%= params[:company_id] %>", function(response) { 4 | // jQuery("#current_selected_company").text(response); 5 | // }); 6 | // setTimeout(function(){location.reload();},1000); 7 | //} 8 | -------------------------------------------------------------------------------- /app/views/payment_terms/show.html.erb: -------------------------------------------------------------------------------- 1 |

    <%= notice %>

    2 | 3 |

    4 | <%= t('views.payment_terms.number_of_days') %>: 5 | <%= @payment_term.number_of_days %> 6 |

    7 | 8 |

    9 | <%= t('views.common.description') %>: 10 | <%= @payment_term.description %> 11 |

    12 | 13 | 14 | <%= link_to t('helpers.links.edit'), edit_payment_term_path(@payment_term) %> | 15 | <%= link_to t('views.common.back'), payment_terms_path %> 16 | -------------------------------------------------------------------------------- /app/views/sent_emails/index.js.erb: -------------------------------------------------------------------------------- 1 | jQuery('thead#sent_emails_header').html('<%= escape_javascript render("sent_email_header") %>'); 2 | jQuery('tbody#email_body').html('<%= escape_javascript render("sent_emails") %>'); 3 | jQuery('tfoot#paging_links').html('<%= escape_javascript render("application_partials/paging") %>'); 4 | 5 | jQuery('#sort_direction').html('<%= params[:direction]%>'); 6 | window.history.pushState({html: $("body").html()},"","<%= request.original_url %>") 7 | -------------------------------------------------------------------------------- /app/views/tasks/_tasks_header.html.erb: -------------------------------------------------------------------------------- 1 | <% sort_class = params[:direction] == 'desc' ? 'sortdown' : 'sortup' %> 2 | 3 | <%= check_box_tag 'select_all' %> 4 | <%= "Name" %> 5 | "><%= t('views.tasks.rate') %> 7 | Action(s) 8 | -------------------------------------------------------------------------------- /app/views/tasks/create.js.erb: -------------------------------------------------------------------------------- 1 | <%unless @task_exists%> 2 | <% inlineform_action = params[:add_more] ? "inlineform:save_and_add_more" : "inlineform:save" %> 3 | <%= "{\"action\": \"#{inlineform_action}\",\"exists\": \"#{@task_exists}\", \"record\": \"\"}".html_safe%> 4 | <%else%> 5 | <%= "{\"exists\": \"#{@task_exists}\"}".html_safe%> 6 | <%end%> -------------------------------------------------------------------------------- /db/migrate/20150224123445_add_currency_id_to_recurring_profile.rb: -------------------------------------------------------------------------------- 1 | class AddCurrencyIdToRecurringProfile < ActiveRecord::Migration 2 | def self.up 3 | unless column_exists?(:recurring_profiles,:currency_id) 4 | add_column :recurring_profiles, :currency_id, :integer 5 | end 6 | end 7 | 8 | def self.down 9 | if column_exists? :recurring_profiles,:currency_id 10 | remove_column :recurring_profiles,:currency_id 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /app/views/devise/mailer/reset_password_instructions.html.erb: -------------------------------------------------------------------------------- 1 |

    Hello <%= @resource.email %>!

    2 | 3 |

    Someone has requested a link to change your password, and you can do this through the link below.

    4 | 5 |

    <%= link_to 'Change my password', edit_password_url(@resource, :reset_password_token => @token) %>

    6 | 7 |

    If you didn't request this, please ignore this email.

    8 |

    Your password won't change until you access the link above and create a new one.

    9 | -------------------------------------------------------------------------------- /app/views/items/create.js.erb: -------------------------------------------------------------------------------- 1 | <%unless @item_exists%> 2 | <% inlineform_action = params[:add_more] ? "inlineform:save_and_add_more" : "inlineform:save" %> 3 | <%= "{\"action\": \"#{inlineform_action}\",\"exists\": \"#{@item_exists}\", \"record\": \"\"}".html_safe%> 4 | <%else%> 5 | <%= "{\"exists\": \"#{@item_exists}\"}".html_safe%> 6 | <%end%> -------------------------------------------------------------------------------- /app/views/staffs/_staffs_header.html.erb: -------------------------------------------------------------------------------- 1 | <% sort_class = params[:direction] == 'desc' ? 'sortdown' : 'sortup' %> 2 | 3 | <%= check_box_tag 'select_all' %> 4 | <%= t('name') %> 5 | <%= t('views.staffs.email') %> 6 | <%= t('views.staffs.rate') %> 7 | Action(s) 8 | -------------------------------------------------------------------------------- /app/views/staffs/create.js.erb: -------------------------------------------------------------------------------- 1 | <%unless @staff_exists%> 2 | <% inlineform_action = params[:add_more] ? "inlineform:save_and_add_more" : "inlineform:save" %> 3 | <%= "{\"action\": \"#{inlineform_action}\",\"exists\": \"#{@staff_exists}\", \"record\": \"\"}".html_safe%> 4 | <%else%> 5 | <%= "{\"exists\": \"#{@staff_exists}\"}".html_safe%> 6 | <%end%> -------------------------------------------------------------------------------- /app/views/taxes/_tax_header.html.erb: -------------------------------------------------------------------------------- 1 | 2 | <%= check_box_tag 'select_all' %> 3 | <%= sortable('name',t('views.common.name')) %> 4 | <%= sortable('percentage',t('views.common.percentage')) %> 5 | <%= t '.actions', :default => t("helpers.actions") %> 6 | -------------------------------------------------------------------------------- /app/helpers/calendar_helper.rb: -------------------------------------------------------------------------------- 1 | module CalendarHelper 2 | 3 | def load_projects_for_log 4 | Project.unarchived.map{|p| [p.project_name, p.id]} 5 | end 6 | 7 | def load_projects_for_invoice 8 | Project.select{|p| p.logs.present?}.map{|p| [p.project_name, p.id]} 9 | end 10 | 11 | def load_tasks_for_log(log) 12 | if log.persisted? 13 | log.project.project_tasks.map{|p| [p.name, p.id]} 14 | else 15 | [] 16 | end 17 | end 18 | 19 | end 20 | -------------------------------------------------------------------------------- /app/views/payments/_payments_history_header.html.erb: -------------------------------------------------------------------------------- 1 | 2 | <%= t('invoice') %> 3 | <%= t('client') %> 4 | <%= t('views.common.type') %> 5 | <%= t('views.common.notes') %> 6 | <%= t('views.common.date') %> 7 | <%= t('views.dashboard.amount') %> 8 | -------------------------------------------------------------------------------- /app/views/expenses/edit.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    <%= t('views.expenses.edit_expense') %>

    4 |
    5 |
    6 | 7 | <%= render 'form' %> 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/views/import_data/index.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 |

    5 | <%= t('views.import_data.import_data') %> 6 |

    7 |
    8 |
    9 | 13 |
    14 | 15 | <%= render partial: 'freshbooks_popup'%> 16 | -------------------------------------------------------------------------------- /app/views/recurring_profiles/new.js.erb: -------------------------------------------------------------------------------- 1 | //if (confirm('Your changes will be discarded by switching company. Are you sure you want to switch company?')) { 2 | // 3 | // // Set the session and reload the new invoices page 4 | // jQuery.get("/application/new_selected_company_name?company_id=" + "<%= params[:company_id] %>", function(response) { 5 | // jQuery("#current_selected_company").text(response); 6 | // }); 7 | // setTimeout(function(){location.reload();},1000); 8 | //} 9 | -------------------------------------------------------------------------------- /app/assets/stylesheets/bootstrap_and_overrides.css: -------------------------------------------------------------------------------- 1 | /* 2 | =require twitter-bootstrap-static/bootstrap 3 | 4 | Use Font Awesome icons (default) 5 | To use Glyphicons sprites instead of Font Awesome, replace with "require twitter-bootstrap-static/sprites" 6 | =require twitter-bootstrap-static/fontawesome 7 | */ 8 | .table th, .table td { 9 | line-height: 30px; 10 | padding: 0 9px; 11 | } 12 | 13 | button, input, select, textarea{ 14 | vertical-align: none !important; 15 | } -------------------------------------------------------------------------------- /app/views/devise/unlocks/new.html.erb: -------------------------------------------------------------------------------- 1 |

    Resend unlock instructions

    2 | 3 | <%= form_for(resource, :as => resource_name, :url => unlock_path(resource_name), :html => {:method => :post}) do |f| %> 4 | <%= devise_error_messages! %> 5 | 6 |
    <%= f.label :email %> 7 |
    8 | <%= f.email_field :email, :autofocus => true %>
    9 | 10 |
    <%= f.submit "Resend unlock instructions" %>
    11 | <% end %> 12 | 13 | <%= render "devise/shared/links" %> 14 | -------------------------------------------------------------------------------- /app/views/expenses/new.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    <%= t('views.expenses.new_expense') %>

    4 |
    5 |
    6 | 7 | <%= render 'form' %> 8 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/views/invoice_mailer/response_to_client.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

    8 | <%= @invoice.client.organization_name %>, 9 |

    10 |

    11 | Invoice <%= @invoice.invoice_number%> has been undisputed by <%= @user.accounts.first.org_name %> for the following response: 12 |

    13 |

    14 | <%= @response%> 15 |

    16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/views/recurring_profiles/edit.js.erb: -------------------------------------------------------------------------------- 1 | if (confirm('Your changes will be discarded by switching company. Are you sure you want to switch company?')) { 2 | // Set the session and reload the new invoices page 3 | jQuery.get("/application/new_selected_company_name?company_id=" + "<%= params[:company_id] %>", function(response) { 4 | jQuery("#current_selected_company").text(response); 5 | }); 6 | setTimeout(function(){window.location.href = '/recurring_profiles';},1000); 7 | } 8 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/config/initializers/backtrace_silencers.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. 4 | # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } 5 | 6 | # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. 7 | # Rails.backtrace_cleaner.remove_silencers! 8 | -------------------------------------------------------------------------------- /app/views/payments/undo_actions.js.erb: -------------------------------------------------------------------------------- 1 | jQuery('tbody#payment_body').html('<%= escape_javascript render("payment") %>'); 2 | jQuery('tfoot#paging_links').html('<%= escape_javascript render("application_partials/paging") %>'); 3 | jQuery('#active_links').html('<%= escape_javascript render("filter_links") %>'); 4 | jQuery(".alert.alert-success").show().find('span').html("Payments are recovered successfully."); 5 | jQuery('#active_links a').removeClass('active'); 6 | jQuery('.get_actives').addClass('active'); -------------------------------------------------------------------------------- /db/migrate/20150211114039_create_credit_payments.rb: -------------------------------------------------------------------------------- 1 | class CreateCreditPayments < ActiveRecord::Migration 2 | def change 3 | create_table :credit_payments do |t| 4 | t.integer "payment_id" 5 | t.integer "invoice_id" 6 | t.decimal "amount", precision: 10, scale: 2 7 | t.datetime "created_at", null: false 8 | t.datetime "updated_at", null: false 9 | t.integer "credit_id" 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /test/fixtures/items.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | item_name: MyString 5 | item_description: MyString 6 | unit_cost: 9.99 7 | quantity: 1 8 | tax_1: 1 9 | tax_2: 1 10 | track_invetory: false 11 | inventory: 1 12 | 13 | two: 14 | item_name: MyString 15 | item_description: MyString 16 | unit_cost: 9.99 17 | quantity: 1 18 | tax_1: 1 19 | tax_2: 1 20 | track_invetory: false 21 | inventory: 1 22 | -------------------------------------------------------------------------------- /app/assets/stylesheets/revenue_by_client.css.scss: -------------------------------------------------------------------------------- 1 | .revenue_by_client { 2 | .grid_table table{ 3 | col.one{width: 220px} 4 | col.two{width: 155px} 5 | col.three{width: 155px} 6 | col.four{width: 155px} 7 | col.five{width: 155px} 8 | .col_hover, .row_hover{background-color: #F7F7F7;} 9 | 10 | tfoot tr td{ 11 | /*border-bottom: medium double #dadada;*/ 12 | &:first-child, &:last-child{ 13 | font-weight: bold; 14 | } 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /app/assets/stylesheets/recurring_profile_line_items.css.scss: -------------------------------------------------------------------------------- 1 | .recurring_profile_form{ 2 | .fre_select{ 3 | padding: 0 5px; 4 | select{ 5 | width: 90px; 6 | overflow: none; 7 | } 8 | } 9 | .fields_content_left{ 10 | .field_row.recurring{ 11 | .small_field{ 12 | input[type="text"]{ 13 | width: 80px; 14 | } 15 | } 16 | } 17 | .medium_field{ 18 | input[type="text"]{ 19 | width: 280px; 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/views/devise/confirmations/new.html.erb: -------------------------------------------------------------------------------- 1 |

    Resend confirmation instructions

    2 | 3 | <%= form_for(resource, :as => resource_name, :url => confirmation_path(resource_name), :html => {:method => :post}) do |f| %> 4 | <%= devise_error_messages! %> 5 | 6 |
    <%= f.label :email %> 7 |
    8 | <%= f.email_field :email, :autofocus => true %>
    9 | 10 |
    <%= f.submit "Resend confirmation instructions" %>
    11 | <% end %> 12 | 13 | <%= render "devise/shared/links" %> 14 | -------------------------------------------------------------------------------- /app/views/payments/update_individual_payment.js.erb: -------------------------------------------------------------------------------- 1 | jQuery("button[class=close]").click(); 2 | jQuery('tbody#invoice_body').html('<%= escape_javascript render("invoices/invoice") %>'); 3 | jQuery('.paginator').html('<%= escape_javascript(paginate(@invoices, :remote => true).to_s) %>' + 4 | '
    <%= page_entries_info @invoices %>
    '); 5 | jQuery(".alert.alert-success").show().find('span').html("Payment against selected invoice has been recorded successfully."); 6 | bind_edit_payment_links() 7 | -------------------------------------------------------------------------------- /db/migrate/20160224125613_create_tasks.rb: -------------------------------------------------------------------------------- 1 | class CreateTasks < ActiveRecord::Migration 2 | def change 3 | create_table :tasks do |t| 4 | t.string :name 5 | t.text :description 6 | t.boolean :billable 7 | t.float :rate 8 | t.string :archive_number 9 | t.datetime :archived_at 10 | t.time :deleted_at 11 | t.integer :updated_by 12 | t.integer :created_by 13 | t.integer :project_id 14 | 15 | t.timestamps 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /app/views/invoices/pay_with_credit_card.js.erb: -------------------------------------------------------------------------------- 1 | 2 | // If invoice is successfully paid then reload invoice preview with success message. 3 | <% if @result[:status].to_s == "SUCCESS" %> 4 | <% flash[:notice] = @result[:message] %> 5 | window.location = "/invoices/preview/?inv_id=<%= params[:invoice_id] %>"; 6 | <% else %> 7 | jQuery("#cc_popup_error.alert.alert-error").show().find("span").html("<%= @result[:message]%>"); 8 | jQuery("#cc_popup input[type=submit]").removeAttr("disabled"); 9 | <% end %> 10 | -------------------------------------------------------------------------------- /db/migrate/20150211115131_create_taxes.rb: -------------------------------------------------------------------------------- 1 | class CreateTaxes < ActiveRecord::Migration 2 | def change 3 | create_table :taxes do |t| 4 | t.string "name" 5 | t.decimal "percentage", precision: 10, scale: 2 6 | t.datetime "created_at", null: false 7 | t.datetime "updated_at", null: false 8 | t.string "archive_number" 9 | t.datetime "archived_at" 10 | t.datetime "deleted_at" 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /test/fixtures/invoice_line_items.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | invoice_id: 1 5 | item_id: 1 6 | item_name: MyString 7 | item_description: MyString 8 | item_unit_cost: 9.99 9 | item_quantity: 9.99 10 | tax_1: 1 11 | tax_2: 1 12 | 13 | two: 14 | invoice_id: 1 15 | item_id: 1 16 | item_name: MyString 17 | item_description: MyString 18 | item_unit_cost: 9.99 19 | item_quantity: 9.99 20 | tax_1: 1 21 | tax_2: 1 22 | -------------------------------------------------------------------------------- /spec/helpers/tasks_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | # Specs in this file have access to a helper object that includes 4 | # the TasksHelper. For example: 5 | # 6 | # describe TasksHelper do 7 | # describe "string concat" do 8 | # it "concats two strings with spaces" do 9 | # expect(helper.concat_strings("this","that")).to eq("this that") 10 | # end 11 | # end 12 | # end 13 | RSpec.describe TasksHelper, :type => :helper do 14 | pending "add some examples to (or delete) #{__FILE__}" 15 | end 16 | -------------------------------------------------------------------------------- /test/fixtures/payments.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | invoice_id: 1 5 | payment_amount: 6 | payment_method: MyString 7 | payment_date: 2013-01-08 8 | notes: MyText 9 | send_payment_notification: false 10 | paid_full: false 11 | 12 | two: 13 | invoice_id: 1 14 | payment_amount: 15 | payment_method: MyString 16 | payment_date: 2013-01-08 17 | notes: MyText 18 | send_payment_notification: false 19 | paid_full: false 20 | -------------------------------------------------------------------------------- /test/test_helper.rb: -------------------------------------------------------------------------------- 1 | ENV["RAILS_ENV"] = "test" 2 | require File.expand_path('../../config/environment', __FILE__) 3 | require 'rails/test_help' 4 | 5 | class ActiveSupport::TestCase 6 | # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order. 7 | # 8 | # Note: You'll currently still have to declare fixtures explicitly in integration tests 9 | # -- they do not yet inherit this setting 10 | fixtures :all 11 | 12 | # Add more helper methods to be used by all tests here... 13 | end 14 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/lib/osb_api/engine.rb: -------------------------------------------------------------------------------- 1 | module OsbApi 2 | class Engine < ::Rails::Engine 3 | isolate_namespace OsbApi 4 | config.paths.add File.join('app','api'), glob: File.join('**', '*.rb') 5 | config.autoload_paths += Dir[File.join('app','api', '*')] 6 | 7 | config.middleware.insert_before 0, "Rack::Cors" do 8 | allow do 9 | origins '*' 10 | resource '*', :headers => :any, :methods => [:get, :post, :delete, :patch, :put] 11 | end 12 | end 13 | 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /spec/helpers/staffs_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | # Specs in this file have access to a helper object that includes 4 | # the StaffsHelper. For example: 5 | # 6 | # describe StaffsHelper do 7 | # describe "string concat" do 8 | # it "concats two strings with spaces" do 9 | # expect(helper.concat_strings("this","that")).to eq("this that") 10 | # end 11 | # end 12 | # end 13 | RSpec.describe StaffsHelper, :type => :helper do 14 | pending "add some examples to (or delete) #{__FILE__}" 15 | end 16 | -------------------------------------------------------------------------------- /db/migrate/20150211115231_create_versions.rb: -------------------------------------------------------------------------------- 1 | class CreateVersions < ActiveRecord::Migration 2 | def change 3 | create_table :versions do |t| 4 | t.string "item_type", null: false 5 | t.integer "item_id", null: false 6 | t.string "event", null: false 7 | t.string "whodunnit" 8 | t.text "object" 9 | t.datetime "created_at" 10 | end 11 | add_index "versions", ["item_type", "item_id"], name: "index_versions_on_item_type_and_item_id", using: :btree 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /app/assets/stylesheets/users.css.scss: -------------------------------------------------------------------------------- 1 | .sub_user { 2 | .grid_table{ 3 | padding-top: 17px; 4 | } 5 | 6 | .grid_table table { 7 | //col.one { 8 | ///*email*/ 9 | // width: 33px; 10 | //} 11 | //col.two { 12 | ///*date*/ 13 | // width: 100px; 14 | //} 15 | col.four { 16 | /*actions*/ 17 | width: 120px; 18 | } 19 | 20 | } 21 | } 22 | #notify_user{ 23 | float: left; 24 | margin: 0 5px 0 0; 25 | } 26 | .user_email, .user_email:focus:required:invalid { 27 | color: #464646; 28 | } -------------------------------------------------------------------------------- /config/initializers/secret_token.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Your secret key for verifying the integrity of signed cookies. 4 | # If you change this key, all old signed cookies will become invalid! 5 | # Make sure the secret is at least 30 characters and all random, 6 | # no regular words or you'll be exposed to dictionary attacks. 7 | Osb::Application.config.secret_token = 'd058e184ca6116d62bd667e22759c07582b9075ef2e34712510607d881ea5cfaa3779c473968a458b1970c65e79f7e1e4edb7c6fe4ca0134744b9b6822a23e94' 8 | -------------------------------------------------------------------------------- /db/migrate/20160215152715_create_expenses.rb: -------------------------------------------------------------------------------- 1 | class CreateExpenses < ActiveRecord::Migration 2 | def change 3 | create_table :expenses do |t| 4 | t.float :amount 5 | t.datetime :expense_date 6 | t.integer :category_id 7 | t.text :note 8 | t.integer :client_id 9 | t.string :archive_number 10 | t.datetime :archived_at 11 | t.time :deleted_at 12 | t.float :tax_1 13 | t.float :tax_2 14 | t.integer :company_id 15 | 16 | t.timestamps 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /spec/helpers/calendar_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | # Specs in this file have access to a helper object that includes 4 | # the CalendarHelper. For example: 5 | # 6 | # describe CalendarHelper do 7 | # describe "string concat" do 8 | # it "concats two strings with spaces" do 9 | # expect(helper.concat_strings("this","that")).to eq("this that") 10 | # end 11 | # end 12 | # end 13 | RSpec.describe CalendarHelper, :type => :helper do 14 | pending "add some examples to (or delete) #{__FILE__}" 15 | end 16 | -------------------------------------------------------------------------------- /spec/helpers/expenses_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | # Specs in this file have access to a helper object that includes 4 | # the ExpensesHelper. For example: 5 | # 6 | # describe ExpensesHelper do 7 | # describe "string concat" do 8 | # it "concats two strings with spaces" do 9 | # expect(helper.concat_strings("this","that")).to eq("this that") 10 | # end 11 | # end 12 | # end 13 | RSpec.describe ExpensesHelper, :type => :helper do 14 | pending "add some examples to (or delete) #{__FILE__}" 15 | end 16 | -------------------------------------------------------------------------------- /spec/helpers/projects_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | # Specs in this file have access to a helper object that includes 4 | # the ProjectsHelper. For example: 5 | # 6 | # describe ProjectsHelper do 7 | # describe "string concat" do 8 | # it "concats two strings with spaces" do 9 | # expect(helper.concat_strings("this","that")).to eq("this that") 10 | # end 11 | # end 12 | # end 13 | RSpec.describe ProjectsHelper, :type => :helper do 14 | pending "add some examples to (or delete) #{__FILE__}" 15 | end 16 | -------------------------------------------------------------------------------- /spec/helpers/settings_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | # Specs in this file have access to a helper object that includes 4 | # the SettingsHelper. For example: 5 | # 6 | # describe SettingsHelper do 7 | # describe "string concat" do 8 | # it "concats two strings with spaces" do 9 | # expect(helper.concat_strings("this","that")).to eq("this that") 10 | # end 11 | # end 12 | # end 13 | RSpec.describe SettingsHelper, :type => :helper do 14 | pending "add some examples to (or delete) #{__FILE__}" 15 | end 16 | -------------------------------------------------------------------------------- /db/migrate/20150403055445_create_settings.rb: -------------------------------------------------------------------------------- 1 | class CreateSettings < ActiveRecord::Migration 2 | def self.up 3 | create_table :settings do |t| 4 | t.string :var, :null => false 5 | t.text :value, :null => true 6 | t.integer :thing_id, :null => true 7 | t.string :thing_type, :limit => 30, :null => true 8 | t.timestamps 9 | end 10 | 11 | add_index :settings, [ :thing_type, :thing_id, :var ], :unique => true 12 | end 13 | 14 | def self.down 15 | drop_table :settings 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /app/assets/stylesheets/payments_collected.css.scss: -------------------------------------------------------------------------------- 1 | .payments_collected { 2 | .grid_table table{ 3 | col.one {width: 115px;} 4 | col.two {width: 167px;} 5 | col.three{width: 102px;} 6 | col.four {width: 286px;} 7 | col.five {width: 92px;} 8 | col.six {width: 110px;} 9 | .col_hover, .row_hover, tfoot tr:hover{background-color: #F7F7F7;} 10 | tfoot tr td{ 11 | /*border-bottom: medium double #dadada;*/ 12 | &:first-child, &:last-child{ 13 | font-weight: bold; 14 | } 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /app/views/sent_emails/_sent_email_header.html.erb: -------------------------------------------------------------------------------- 1 | 2 | <%= sortable('subject',t('views.clients.subject')) %> 3 | <%= sortable('recipient',t('views.clients.recipient')) %> 4 | <%= sortable('type',t('views.clients.type')) %> 5 | <%= sortable('date',t('views.clients.date')) %> 6 | -------------------------------------------------------------------------------- /config/initializers/session_store.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | #Osb::Application.config.session_store :cookie_store, key: '_osb_session' 4 | Osb::Application.config.session_store :active_record_store, :key => '_osb_session' 5 | 6 | # Use the database for sessions instead of the cookie-based default, 7 | # which shouldn't be used to store highly confidential information 8 | # (create the session table with "rails generate session_migration") 9 | # Osb::Application.config.session_store :active_record_store 10 | -------------------------------------------------------------------------------- /app/assets/stylesheets/edit_payment.css.scss: -------------------------------------------------------------------------------- 1 | .edit_payment{ 2 | .label_field.left { 3 | width: 122px; 4 | } 5 | .medium_field input { 6 | width: 220px; 7 | padding-right: 6px; 8 | padding-left: 6px; 9 | } 10 | .label_field.right { 11 | padding-left: 25px; 12 | width: 122px; 13 | } 14 | 15 | input[type="radio"], input[type="checkbox"] { 16 | float: left; 17 | } 18 | .options_content{ 19 | margin-left: 121px; 20 | padding: 0px; 21 | } 22 | .radio, .checkbox{ 23 | padding-left: 13px; 24 | } 25 | } -------------------------------------------------------------------------------- /app/views/projects/_project_header.html.erb: -------------------------------------------------------------------------------- 1 | <% sort_class = params[:direction] == 'desc' ? 'sortdown' : 'sortup' %> 2 | 3 | <%= check_box_tag 'select_all' %> 4 | <%= t('project_name') %> 5 | <%= t('client') %> 6 | <%= t('manager') %> 7 | <%= t('views.projects.total_hours') %> 8 | Action(s) 9 | -------------------------------------------------------------------------------- /test/fixtures/client_additional_contacts.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | client_id: 1 5 | first_name: MyString 6 | last_name: MyString 7 | email: MyString 8 | phone_1: MyString 9 | phone_2: MyString 10 | user_name: MyString 11 | password: MyString 12 | 13 | two: 14 | client_id: 1 15 | first_name: MyString 16 | last_name: MyString 17 | email: MyString 18 | phone_1: MyString 19 | phone_2: MyString 20 | user_name: MyString 21 | password: MyString 22 | -------------------------------------------------------------------------------- /app/views/logs/timer.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 |
    5 | <%= link_to 'Start', 'javascript:start_timer()', class: 'btn_large'%> 6 | <%= link_to 'Stop', 'javascript:stop_timer()', class: 'btn_large'%> 7 | <%= link_to 'Reset', 'javascript:reset_timer()', class: 'btn_large'%> 8 |
    9 | 10 |
    11 |
    <%= render 'logs/form' %>
    12 |
    13 |
    14 | -------------------------------------------------------------------------------- /config/initializers/wrap_parameters.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | # 3 | # This file contains settings for ActionController::ParamsWrapper which 4 | # is enabled by default. 5 | 6 | # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. 7 | ActiveSupport.on_load(:action_controller) do 8 | wrap_parameters format: [:json] 9 | end 10 | 11 | # Disable root element in JSON by default. 12 | ActiveSupport.on_load(:active_record) do 13 | self.include_root_in_json = false 14 | end 15 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/bin/rails: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # This command will automatically be run when you run "rails" with Rails 4 gems installed from the root of your application. 3 | 4 | ENGINE_ROOT = File.expand_path('../..', __FILE__) 5 | ENGINE_PATH = File.expand_path('../../lib/osb_api/engine', __FILE__) 6 | 7 | # Set up gems listed in the Gemfile. 8 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 9 | require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) 10 | 11 | require 'rails/all' 12 | require 'rails/engine/commands' 13 | -------------------------------------------------------------------------------- /app/views/help/index.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    <%= t("views.help.help") %>

    4 |
    5 |
    6 | 7 | 8 |
    9 |
    10 |

    <%= t("views.help.help_yourself") %>

    11 | 12 |

    <%= t("views.help.we_hope_you_donot_need_help") %>

    13 | 14 |

    <%= t("views.help.never_mind_just_kidding") %>

    15 | 16 |

    <%= t("views.help.happy_invoicing") %>

    17 |
    18 |
    19 | 20 | 21 | -------------------------------------------------------------------------------- /app/views/taxes/undo_actions.js.erb: -------------------------------------------------------------------------------- 1 | jQuery('tbody#tax_body').html('<%= escape_javascript render("taxes") %>'); 2 | jQuery('tfoot#paging_links').html('<%= escape_javascript render("application_partials/paging") %>'); 3 | jQuery('#active_links').html('<%= escape_javascript render("filter_links") %>'); 4 | <% @recovered = params[:archived] ? 'archived' : 'deleted' %> 5 | jQuery(".alert.alert-success").show().find('span').html("Tax(es) are recovered from <%= @recovered %> successfully."); 6 | jQuery('#active_links a').removeClass('active'); 7 | jQuery('.get_actives').addClass('active'); -------------------------------------------------------------------------------- /app/views/items/undo_actions.js.erb: -------------------------------------------------------------------------------- 1 | jQuery('tbody#item_body').html('<%= escape_javascript render("items") %>'); 2 | jQuery('tfoot#paging_links').html('<%= escape_javascript render("application_partials/paging") %>'); 3 | jQuery('#active_links').html('<%= escape_javascript render("filter_links") %>'); 4 | <% @recovered = params[:archived] ? 'archived' : 'deleted' %> 5 | jQuery(".alert.alert-success").show().find('span').html("Item(s) are recovered from <%= @recovered %> successfully."); 6 | jQuery('#active_links a').removeClass('active'); 7 | jQuery('.get_actives').addClass('active'); -------------------------------------------------------------------------------- /app/views/clients/undo_actions.js.erb: -------------------------------------------------------------------------------- 1 | jQuery('tbody#client_body').html('<%= escape_javascript render("clients") %>'); 2 | jQuery('tfoot#paging_links').html('<%= escape_javascript render("application_partials/paging") %>'); 3 | jQuery('#active_links').html('<%= escape_javascript render("filter_links") %>'); 4 | <% @recovered = params[:archived] ? 'archived' : 'deleted' %> 5 | jQuery(".alert.alert-success").show().find('span').html("Client(s) are recovered from <%= @recovered %> successfully."); 6 | jQuery('#active_links a').removeClass('active'); 7 | jQuery('.get_actives').addClass('active'); -------------------------------------------------------------------------------- /app/views/logs/invoice_form.html.erb: -------------------------------------------------------------------------------- 1 | <%- model_class = Invoice -%> 2 | 3 |
    4 |
    5 |

    <%= t '.title', :default => t('helpers.titles.new', :model => model_class.model_name.human, 6 | :default => "New #{model_class.model_name.human}") %>

    7 |
    8 |
    9 | 10 | <%= render :partial => 'logs/form_invoice' %> 11 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /db/migrate/20150211113630_create_api_keys.rb: -------------------------------------------------------------------------------- 1 | class CreateApiKeys < ActiveRecord::Migration 2 | def change 3 | create_table :api_keys do |t| 4 | t.string "access_token" 5 | t.datetime "expires_at" 6 | t.integer "user_id" 7 | t.boolean "active" 8 | t.datetime "created_at" 9 | t.datetime "updated_at" 10 | end 11 | add_index "api_keys", ["access_token"], name: "index_api_keys_on_access_token", unique: true, using: :btree 12 | add_index "api_keys", ["user_id"], name: "index_api_keys_on_user_id", using: :btree 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/lib/generators/osb_api/migration_generator.rb: -------------------------------------------------------------------------------- 1 | require 'rails/generators/active_record' 2 | 3 | class OsbApi::MigrationGenerator < ::Rails::Generators::Base 4 | include Rails::Generators::Migration 5 | source_root File.expand_path('../templates', __FILE__) 6 | desc 'Installs Doorkeeper migration file.' 7 | 8 | def install 9 | migration_template 'migration.rb', 'db/migrate/create_doorkeeper_tables.rb' 10 | end 11 | 12 | def self.next_migration_number(dirname) 13 | ActiveRecord::Generators::Base.next_migration_number(dirname) 14 | end 15 | end -------------------------------------------------------------------------------- /spec/views/tasks/show.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe "tasks/show", :type => :view do 4 | before(:each) do 5 | @task = assign(:task, Task.create!( 6 | :name => "Name", 7 | :description => "Description", 8 | :billable => false, 9 | :rate => "9.99" 10 | )) 11 | end 12 | 13 | it "renders attributes in

    " do 14 | render 15 | expect(rendered).to match(/Name/) 16 | expect(rendered).to match(/Description/) 17 | expect(rendered).to match(/false/) 18 | expect(rendered).to match(/9.99/) 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /spec/models/company_entity_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | describe CompanyEntity do 4 | 5 | let(:client) do 6 | FactoryGirl.create(:client) 7 | end 8 | 9 | let(:account) do 10 | FactoryGirl.create(:account) 11 | end 12 | 13 | let(:company_entity) { FactoryGirl.create(:company_entity, parent: account) } 14 | let(:company_entity) { FactoryGirl.create(:company_entity, entity: client) } 15 | 16 | subject{ company_entity } 17 | 18 | it { should be_valid } 19 | it { should respond_to(:parent) } 20 | it { should respond_to(:entity) } 21 | 22 | end 23 | 24 | -------------------------------------------------------------------------------- /spec/views/expenses/show.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe "expenses/show", :type => :view do 4 | before(:each) do 5 | @expense = assign(:expense, Expense.create!( 6 | :amount => 1.5, 7 | :category => "Category", 8 | :note => "MyText", 9 | :client_id => 1 10 | )) 11 | end 12 | 13 | it "renders attributes in

    " do 14 | render 15 | expect(rendered).to match(/1.5/) 16 | expect(rendered).to match(/Category/) 17 | expect(rendered).to match(/MyText/) 18 | expect(rendered).to match(/1/) 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /db/migrate/20150211115032_create_sent_emails.rb: -------------------------------------------------------------------------------- 1 | class CreateSentEmails < ActiveRecord::Migration 2 | def change 3 | create_table :sent_emails do |t| 4 | t.date "date" 5 | t.string "sender" 6 | t.string "recipient" 7 | t.string "type" 8 | t.string "subject" 9 | t.text "content" 10 | t.datetime "created_at", null: false 11 | t.datetime "updated_at", null: false 12 | t.integer "notification_id" 13 | t.string "notification_type" 14 | t.integer "company_id" 15 | end 16 | end 17 | end 18 | 19 | -------------------------------------------------------------------------------- /db/migrate/20160224113217_create_projects.rb: -------------------------------------------------------------------------------- 1 | class CreateProjects < ActiveRecord::Migration 2 | def change 3 | create_table :projects do |t| 4 | t.string :project_name 5 | t.integer :client_id 6 | t.integer :manager_id 7 | t.string :billing_method 8 | t.text :description 9 | t.integer :total_hours 10 | t.integer :company_id 11 | t.integer :updated_by 12 | t.integer :created_by 13 | t.string :archive_number 14 | t.datetime :archived_at 15 | t.datetime :deleted_at 16 | 17 | t.timestamps 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /app/views/email_templates/_email_template_header.html.erb: -------------------------------------------------------------------------------- 1 | 2 | <%= sortable('template_type', t('views.email_templates.template_type')) %> 3 | <%= sortable('subject', t('views.email_templates.subject')) %> 4 | <%= sortable('status', t('views.email_templates.status')) %> 5 | <%= t '.actions', :default => t("helpers.actions") %> 6 | -------------------------------------------------------------------------------- /db/migrate/20150211113755_create_client_contacts.rb: -------------------------------------------------------------------------------- 1 | class CreateClientContacts < ActiveRecord::Migration 2 | def change 3 | create_table :client_contacts do |t| 4 | t.integer "client_id" 5 | t.string "first_name" 6 | t.string "last_name" 7 | t.string "email" 8 | t.string "home_phone" 9 | t.string "mobile_number" 10 | t.string "archive_number" 11 | t.datetime "archived_at" 12 | t.datetime "deleted_at" 13 | t.datetime "created_at", null: false 14 | t.datetime "updated_at", null: false 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | # Declare your gem's dependencies in osb_api.gemspec. 4 | # Bundler will treat runtime dependencies like base dependencies, and 5 | # development dependencies will be added by default to the :development group. 6 | gemspec 7 | 8 | # Declare any dependencies that are still in development here instead of in 9 | # your gemspec. These might include edge Rails or gems from your path or 10 | # Git. Remember to move these dependencies to your gemspec before releasing 11 | # your gem to rubygems.org. 12 | 13 | # To use debugger 14 | # gem 'debugger' 15 | -------------------------------------------------------------------------------- /app/assets/javascripts/jquery.ellipsis.min.js: -------------------------------------------------------------------------------- 1 | /*! jQuery ellipsis - v1.0.7 - 2013-02-15 2 | * https://github.com/STAR-ZERO/jquery-ellipsis 3 | * Copyright (c) 2013 Kenji Abe; Licensed MIT */ 4 | (function(e){e.fn.ellipsis=function(t){var n={row:1,"char":"..."};return t=e.extend(n,t),this.each(function(){var n=e(this),r=n.text();n.text("a");var i=n.height();n.text("");var s=1,o=!1,u=0;for(var a=0;at.row){o=!0;break}}}if(o){r=n.text();for(;;){r=r.substring(0,r.length-1),n.text(r+t.char),u=n.height();if(u 2 | 3 |

    4 |

    Getting Started

    5 |
    6 |
    7 | 13 |
    14 | -------------------------------------------------------------------------------- /app/views/recurring_profile_line_items/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= form_for(@recurring_profile_line_item) do |f| %> 2 | <% if @recurring_profile_line_item.errors.any? %> 3 |
    4 |

    <%= pluralize(@recurring_profile_line_item.errors.count, "error") %> prohibited this recurring_profile_line_item from being saved:

    5 | 6 | 11 |
    12 | <% end %> 13 | 14 |
    15 | <%= f.submit %> 16 |
    17 | <% end %> 18 | -------------------------------------------------------------------------------- /spec/views/staffs/show.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe "staffs/show", :type => :view do 4 | before(:each) do 5 | @staff = assign(:staff, Staff.create!( 6 | :email => "Email", 7 | :name => "Name", 8 | :rate => "9.99", 9 | :created_by => 1, 10 | :updated_by => 2 11 | )) 12 | end 13 | 14 | it "renders attributes in

    " do 15 | render 16 | expect(rendered).to match(/Email/) 17 | expect(rendered).to match(/Name/) 18 | expect(rendered).to match(/9.99/) 19 | expect(rendered).to match(/1/) 20 | expect(rendered).to match(/2/) 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/config/initializers/wrap_parameters.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # This file contains settings for ActionController::ParamsWrapper which 4 | # is enabled by default. 5 | 6 | # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. 7 | ActiveSupport.on_load(:action_controller) do 8 | wrap_parameters format: [:json] if respond_to?(:wrap_parameters) 9 | end 10 | 11 | # To enable root element in JSON for ActiveRecord objects. 12 | # ActiveSupport.on_load(:active_record) do 13 | # self.include_root_in_json = true 14 | # end 15 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/README.rdoc: -------------------------------------------------------------------------------- 1 | == README 2 | 3 | This README would normally document whatever steps are necessary to get the 4 | application up and running. 5 | 6 | Things you may want to cover: 7 | 8 | * Ruby version 9 | 10 | * System dependencies 11 | 12 | * Configuration 13 | 14 | * Database creation 15 | 16 | * Database initialization 17 | 18 | * How to run the test suite 19 | 20 | * Services (job queues, cache servers, search engines, etc.) 21 | 22 | * Deployment instructions 23 | 24 | * ... 25 | 26 | 27 | Please feel free to use a different markup language if you do not plan to run 28 | rake doc:app. 29 | -------------------------------------------------------------------------------- /app/views/invoices/unpaid_invoices.js.erb: -------------------------------------------------------------------------------- 1 | jQuery(".modal-body").html("<%= escape_javascript(render(:partial=>"unpaid_invoices")) %>"); 2 | 3 | jQuery('#invoice_selection').submit(function() { 4 | var flag, invoices; 5 | invoices = jQuery("table.table_listing tbody"); 6 | return flag = invoices.find('tr.no-invoices').length ? (jQuery(".invoice_popup_error").show().find('span').html('There are no unpaid invoices to enter payment against.'), false) : invoices.find(":checked").length === 0 ? (jQuery(".invoice_popup_error").show().find('span').html("You haven't selected any invoice. Please select one or more invoices and try again."), false) : true; 7 | }); -------------------------------------------------------------------------------- /config/initializers/paypal.rb: -------------------------------------------------------------------------------- 1 | ActiveMerchant::Billing::Base.mode = OSB::CONFIG::ACTIVEMERCHANT_BILLING_MODE 2 | 3 | module OSB 4 | module Paypal 5 | URL = OSB::CONFIG::PAYPAL_URL 6 | module TransStatus 7 | SUCCESS = :SUCCESS 8 | FAILED = :FAILED 9 | INVALID_CARD = :INVALID_CARD 10 | ALREADY_PAID = :ALREADY_PAID 11 | end 12 | 13 | def self.gateway 14 | ActiveMerchant::Billing::PaypalGateway.new( 15 | :login => OSB::CONFIG::PAYPAL_LOGIN, 16 | :password => OSB::CONFIG::PAYPAL_PASSWORD, 17 | :signature => OSB::CONFIG::PAYPAL_SIGNATURE 18 | ) 19 | end 20 | end 21 | end -------------------------------------------------------------------------------- /app/assets/stylesheets/unpaid_invoices.css.scss: -------------------------------------------------------------------------------- 1 | .unpaid_invoice{ 2 | 3 | .grid_table table col.one{ 4 | width : 33px; 5 | } 6 | .grid_table table col.two{ 7 | width : 82px; 8 | } 9 | .grid_table table col.three{ 10 | width: 200px; 11 | } 12 | .grid_table table col.four{ 13 | width : 125px; 14 | } 15 | .grid_table table col.five{ 16 | width : 140px; 17 | } 18 | .grid_table table col.six{ 19 | width : 130px; 20 | } 21 | .grid_table table col.seven{ 22 | width : 130px; 23 | } 24 | .grid_table{ 25 | padding-top: 0px; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /app/views/sent_emails/show.html.erb: -------------------------------------------------------------------------------- 1 |

    2 |

    <%= notice %>

    3 |
    4 |
    5 |

    Email Contents

    6 |
    7 |
    8 | 9 | 10 |
    11 |
    12 | <%= @sent_email.content.html_safe unless @sent_email.content.blank? %> 13 |
    14 |
    15 | <%= link_to 'Back', :controller => "sent_emails" %> 16 |
    17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /app/views/application_partials/_paging.html.erb: -------------------------------------------------------------------------------- 1 | <% 2 | colspan = { 'sent_emails' => '5', 'payments' => '7', 'companies' => '6'} 3 | listing = '@'+ controller_name 4 | %> 5 | 6 |
    7 | <%= paginate eval(listing), :window => 9 , :remote => true %> 8 |
    9 | <% unless eval(listing).blank? %> 10 | <%= page_entries_info eval(listing) %> 11 | <%= custom_per_page %> per page 12 | <% end %> 13 |
    14 |
    15 | 16 | 19 | -------------------------------------------------------------------------------- /app/views/tasks/undo_actions.js.erb: -------------------------------------------------------------------------------- 1 | jQuery('tbody#task_body').html('<%= escape_javascript render 'tasks' %>'); 2 | jQuery('tfoot#paging_links').html('<%= escape_javascript render('application_partials/paging') %>'); 3 | jQuery('#active_links').html('<%= escape_javascript render('filter_links') %>'); 4 | <% @recovered = params[:archived] ? 'archived' : 'deleted' %> 5 | jQuery(".alert.alert-success").show().find('span').html("Tasks are recovered from <%= @recovered %> successfully."); 6 | jQuery('#active_links a').removeClass('active'); 7 | jQuery('.get_actives').addClass('active'); 8 | jQuery('.recover_deleted, .recover_archived').hide(); 9 | jQuery('.archive').show(); 10 | -------------------------------------------------------------------------------- /app/views/staffs/undo_actions.js.erb: -------------------------------------------------------------------------------- 1 | jQuery('tbody#staff_body').html('<%= escape_javascript render 'staffs' %>'); 2 | jQuery('tfoot#paging_links').html('<%= escape_javascript render('application_partials/paging') %>'); 3 | jQuery('#active_links').html('<%= escape_javascript render('filter_links') %>'); 4 | <% @recovered = params[:archived] ? 'archived' : 'deleted' %> 5 | jQuery(".alert.alert-success").show().find('span').html("Staffs are recovered from <%= @recovered %> successfully."); 6 | jQuery('#active_links a').removeClass('active'); 7 | jQuery('.get_actives').addClass('active'); 8 | jQuery('.recover_deleted, .recover_archived').hide(); 9 | jQuery('.archive').show(); 10 | -------------------------------------------------------------------------------- /app/views/companies/undo_actions.js.erb: -------------------------------------------------------------------------------- 1 | jQuery('tbody#company_body').html('<%= escape_javascript render 'company' %>'); 2 | jQuery('tfoot#paging_links').html('<%= escape_javascript render("application_partials/paging") %>'); 3 | jQuery('#active_links').html('<%= escape_javascript render("filter_links") %>'); 4 | <% @recovered = params[:archived] ? 'archived' : 'deleted' %> 5 | jQuery(".alert.alert-success").show().find('span').html("Companies are recovered from <%= @recovered %> successfully."); 6 | jQuery('#active_links a').removeClass('active'); 7 | jQuery('.get_actives').addClass('active'); 8 | jQuery('.recover_deleted, .recover_archived').hide(); 9 | jQuery('.archive').show(); 10 | -------------------------------------------------------------------------------- /app/views/expenses/undo_actions.js.erb: -------------------------------------------------------------------------------- 1 | jQuery('tbody#expense_body').html('<%= escape_javascript render 'expenses' %>'); 2 | jQuery('tfoot#paging_links').html('<%= escape_javascript render("application_partials/paging") %>'); 3 | jQuery('#active_links').html('<%= escape_javascript render("filter_links") %>'); 4 | <% @recovered = params[:archived] ? 'archived' : 'deleted' %> 5 | jQuery(".alert.alert-success").show().find('span').html("Expenses are recovered from <%= @recovered %> successfully."); 6 | jQuery('#active_links a').removeClass('active'); 7 | jQuery('.get_actives').addClass('active'); 8 | jQuery('.recover_deleted, .recover_archived').hide(); 9 | jQuery('.archive').show(); 10 | -------------------------------------------------------------------------------- /app/assets/javascripts/reports.js.coffee: -------------------------------------------------------------------------------- 1 | # Place all the behaviors and hooks related to the matching controller here. 2 | # All this logic will automatically be available in application.js. 3 | # You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ 4 | 5 | jQuery -> 6 | jQuery(".reports #from_date, .reports #to_date").datepicker dateFormat: DateFormats.format() 7 | jQuery(".reports table.table_listing:not(.aged_accounts_listing, .client_report_listing, .item_sales_listing)").tablesorter() 8 | jQuery(".aged_accounts_listing, .client_report_listing, .item_sales_listing").tablesorter textExtraction: (node) -> 9 | node.getAttribute('data-sort_val') 10 | -------------------------------------------------------------------------------- /app/views/logs/_logs_table.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    Time logs for <%=@date%>

    4 |
    5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | <%= render partial: 'logs_header' %> 16 | 17 | 18 | <%= render 'logs' %> 19 | 20 | 21 |
    22 |
    23 | -------------------------------------------------------------------------------- /app/views/payments/enter_payment.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    <%= t('views.invoices.enter_payment') %>

    4 |
    5 |
    6 | 7 | <%= form_tag "update_individual_payment", :method => :put, :novalidate => "", :id => "payments_form" do %> 8 | <%= render "enter_payment" %> 9 |
    10 | 11 |
    12 | <% if params[:from_invoices] %> 13 | <%= hidden_field_tag :from_invoices %> 14 | <% end %> 15 | <% end %> 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/views/projects/edit.html.erb: -------------------------------------------------------------------------------- 1 | <%- model_class = Project -%> 2 | 3 |
    4 |
    5 |

    <%= t '.title', :default => t('helpers.titles.new', :model => model_class.model_name.human, 6 | :default => "Edit #{model_class.model_name.human}") %>

    7 |
    8 |
    9 | 10 | <%= render :partial => 'form' %> 11 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /app/assets/javascripts/settings.coffee: -------------------------------------------------------------------------------- 1 | # Place all the behaviors and hooks related to the matching controller here. 2 | # All this logic will automatically be available in application.js. 3 | # You can use CoffeeScript in this file: http://coffeescript.org/ 4 | #jQuery -> 5 | # jQuery('.currency_select').change -> 6 | # status = $('.currency_select').attr('checked')=='checked' 7 | # jQuery.ajax '/settings', 8 | # type: 'POST' 9 | # data: 'status' 10 | # dataType: 'html' 11 | # error: (jqXHR, textStatus, errorThrown) -> 12 | # alert "Error: #{textStatus}" 13 | # success: (data, textStatus, jqXHR) -> 14 | # data = JSON.parse(data) 15 | # console.log(data) -------------------------------------------------------------------------------- /db/migrate/20150211114331_create_email_templates.rb: -------------------------------------------------------------------------------- 1 | class CreateEmailTemplates < ActiveRecord::Migration 2 | def change 3 | create_table :email_templates do |t| 4 | t.string "template_type" 5 | t.string "email_from" 6 | t.string "subject" 7 | t.text "body" 8 | t.datetime "created_at", null: false 9 | t.datetime "updated_at", null: false 10 | t.string "status" 11 | t.integer "torder" 12 | t.boolean "send_email", default: true 13 | t.integer "no_of_days" 14 | t.boolean "is_late_payment_reminder", default: false 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/app/assets/javascripts/osb_api/application.js: -------------------------------------------------------------------------------- 1 | // This is a manifest file that'll be compiled into application.js, which will include all the files 2 | // listed below. 3 | // 4 | // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, 5 | // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. 6 | // 7 | // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 8 | // compiled file. 9 | // 10 | // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details 11 | // about supported directives. 12 | // 13 | //= require_tree . 14 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/config/database.yml: -------------------------------------------------------------------------------- 1 | # SQLite version 3.x 2 | # gem install sqlite3 3 | # 4 | # Ensure the SQLite 3 gem is defined in your Gemfile 5 | # gem 'sqlite3' 6 | # 7 | default: &default 8 | adapter: sqlite3 9 | pool: 5 10 | timeout: 5000 11 | 12 | development: 13 | <<: *default 14 | database: db/development.sqlite3 15 | 16 | # Warning: The database defined as "test" will be erased and 17 | # re-generated from your development database when you run "rake". 18 | # Do not set this db to the same as development or production. 19 | test: 20 | <<: *default 21 | database: db/test.sqlite3 22 | 23 | production: 24 | <<: *default 25 | database: db/production.sqlite3 26 | -------------------------------------------------------------------------------- /app/assets/stylesheets/new_item_form.css.scss: -------------------------------------------------------------------------------- 1 | .new_item_form{ 2 | .fields_content_container{ 3 | width: 500px; 4 | } 5 | .fields_content_data{ 6 | padding: 0px; 7 | } 8 | .large_field input, .large_field textarea,{ 9 | width: 350px; 10 | &.submit_currency{ 11 | width: 176px; 12 | } 13 | } 14 | .large_field input[type="password"]{ 15 | padding: 4px 9px ; 16 | } 17 | .small_field input{ 18 | width: 107px; 19 | } 20 | .label_field.right{ 21 | width: 102px; 22 | padding-left: 10px; 23 | padding-right: 10px; 24 | } 25 | .small_field select.extra_small{ 26 | width: 180px; 27 | } 28 | .field_row:last-child{ 29 | min-height: 30px; 30 | } 31 | } -------------------------------------------------------------------------------- /app/views/projects/undo_actions.js.erb: -------------------------------------------------------------------------------- 1 | jQuery('tbody#project_body').html('<%= escape_javascript render("project") %>'); 2 | jQuery('tfoot#paging_links').html('<%= escape_javascript render("application_partials/paging") %>'); 3 | jQuery('#active_links').html('<%= escape_javascript render("filter_links") %>'); 4 | <% @recovered = params[:archived] ? 'archived' : 'deleted' %> 5 | jQuery(".alert.alert-success").show().find('span').html("Project(s) are recovered from <%= @recovered %> successfully."); 6 | jQuery('#active_links a').removeClass('active'); 7 | jQuery('.get_actives').addClass('active'); 8 | jQuery('.recover_deleted, .recover_archived').hide(); 9 | jQuery('.archive,.payment').show(); 10 | bind_deleted_entry(); -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/app/assets/javascripts/application.js: -------------------------------------------------------------------------------- 1 | // This is a manifest file that'll be compiled into application.js, which will include all the files 2 | // listed below. 3 | // 4 | // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, 5 | // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. 6 | // 7 | // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 8 | // compiled file. 9 | // 10 | // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details 11 | // about supported directives. 12 | // 13 | //= require_tree . 14 | -------------------------------------------------------------------------------- /test/fixtures/invoices.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | invoice_number: MyString 5 | invoice_date: 2012-12-26 21:45:36 6 | po_number: MyString 7 | discount_percentage: 9.99 8 | client_id: 1 9 | tems: MyText 10 | notes: MyText 11 | status: MyString 12 | sub_total: 9.99 13 | discount_amount: 9.99 14 | tax_amount: 9.99 15 | 16 | two: 17 | invoice_number: MyString 18 | invoice_date: 2012-12-26 21:45:36 19 | po_number: MyString 20 | discount_percentage: 9.99 21 | client_id: 1 22 | tems: MyText 23 | notes: MyText 24 | status: MyString 25 | sub_total: 9.99 26 | discount_amount: 9.99 27 | tax_amount: 9.99 28 | -------------------------------------------------------------------------------- /app/views/payments/index.js.erb: -------------------------------------------------------------------------------- 1 | jQuery('thead#payments_header').html('<%= escape_javascript render("payments_header") %>'); 2 | jQuery('tbody#payment_body').html('<%= escape_javascript render("payment") %>'); 3 | jQuery('tfoot#paging_links').html('<%= escape_javascript render("application_partials/paging") %>'); 4 | jQuery('#bulk_actions').html('<%= escape_javascript render("bulk_actions") %>'); 5 | jQuery("table.table_listing").trigger('update'); 6 | jQuery(".payment_listing .text-overflow-class").ellipsis({row:2}); 7 | 8 | jQuery('#sort_direction').html('<%= params[:direction]%>'); 9 | window.history.pushState({html: $("body").html()},"","<%= request.original_url %>") 10 | bind_edit_payment_links(); 11 | bind_edit_payment_links() 12 | -------------------------------------------------------------------------------- /config/initializers/inflections.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new inflection rules using the following format 4 | # (all these examples are active by default): 5 | # ActiveSupport::Inflector.inflections do |inflect| 6 | # inflect.plural /^(ox)$/i, '\1en' 7 | # inflect.singular /^(ox)en/i, '\1' 8 | # inflect.irregular 'person', 'people' 9 | # inflect.uncountable %w( fish sheep ) 10 | # end 11 | # 12 | # These inflection rules are supported but not enabled by default: 13 | # ActiveSupport::Inflector.inflections do |inflect| 14 | # inflect.acronym 'RESTful' 15 | # end 16 | ActiveSupport::Inflector.inflections(:en) do |inflect| 17 | inflect.acronym 'OpenSourceBilling' 18 | end 19 | -------------------------------------------------------------------------------- /app/views/recurring_profile_line_items/index.html.erb: -------------------------------------------------------------------------------- 1 |

    Listing recurring_profile_line_items

    2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | <% @recurring_profile_line_items.each do |recurring_profile_line_item| %> 11 | 12 | 13 | 14 | 15 | 16 | <% end %> 17 |
    <%= link_to 'Show', recurring_profile_line_item %><%= link_to 'Edit', edit_recurring_profile_line_item_path(recurring_profile_line_item) %><%= link_to 'Destroy', recurring_profile_line_item, method: :delete, data: { confirm: 'Are you sure?' } %>
    18 | 19 |
    20 | 21 | <%= link_to 'New Recurring profile line item', new_recurring_profile_line_item_path %> 22 | -------------------------------------------------------------------------------- /app/views/doorkeeper/authorized_applications/index.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 |
    6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | <% @applications.each do |application| %> 17 | 18 | 19 | 20 | 21 | 22 | <% end %> 23 | 24 |
    ApplicationCreated At
    <%= application.name %><%= application.created_at.strftime('%Y-%m-%d %H:%M:%S') %><%= render 'delete_form', application: application %>
    25 |
    26 | -------------------------------------------------------------------------------- /app/controllers/settings_controller.rb: -------------------------------------------------------------------------------- 1 | class SettingsController < ApplicationController 2 | def create 3 | user = current_user 4 | @language_changed = false 5 | if params[:currency_select].present? 6 | user.settings.currency = "On" 7 | else 8 | user.settings.currency = "Off" 9 | end 10 | if params[:date_format].present? 11 | user.settings.date_format = params[:date_format] 12 | end 13 | if params[:records_per_page].present? 14 | user.settings.records_per_page = params[:records_per_page] 15 | end 16 | if params[:locale].present? 17 | user.settings.language = params[:locale] 18 | @language_changed = true 19 | end 20 | respond_to { |format| format.js } 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /test/functional/users_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class UsersControllerTest < ActionController::TestCase 4 | test "should get index" do 5 | get :index 6 | assert_response :success 7 | end 8 | 9 | test "should get new" do 10 | get :new 11 | assert_response :success 12 | end 13 | 14 | test "should get create" do 15 | get :create 16 | assert_response :success 17 | end 18 | 19 | test "should get edit" do 20 | get :edit 21 | assert_response :success 22 | end 23 | 24 | test "should get update" do 25 | get :update 26 | assert_response :success 27 | end 28 | 29 | test "should get destroy" do 30 | get :destroy 31 | assert_response :success 32 | end 33 | 34 | end 35 | -------------------------------------------------------------------------------- /app/views/companies/_companies_header.html.erb: -------------------------------------------------------------------------------- 1 | 2 | <%= check_box_tag 'select_all' %> 3 | <%= sortable('company_name', t('views.companies.name')) %> 4 | <%= sortable('contact_name', t('views.clients.contact_name')) %> 5 | <%= sortable('email', t('views.common.email')) %> 6 | <%= sortable('country', t('views.common.country')) %> 7 | <%= t '.actions', :default => t("helpers.actions") %> 8 | -------------------------------------------------------------------------------- /public/500.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | We're sorry, but something went wrong (500) 5 | 17 | 18 | 19 | 20 | 21 |
    22 |

    We're sorry, but something went wrong.

    23 |
    24 | 25 | 26 | -------------------------------------------------------------------------------- /app/views/dashboard/_chart_container.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 |

    5 | <%= t('invoices') %> 6 |

    7 | <% if current_user.settings.currency.present? and current_user.settings.currency == "On" %> 8 | <%= select_tag :currency, options_from_collection_for_select(currencies, :id, :unit,@currency.try(:id)),class: "currency" %> 9 | <% end %> 10 |

    <%= t('views.dashboard.view_chart_detail') %>

    11 |
    12 |
    13 |
    14 | <%#= image_tag "graph.png", :size => "447x191", :alt => "" %> 15 |
    16 |
    17 |
    -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/config/initializers/inflections.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new inflection rules using the following format. Inflections 4 | # are locale specific, and you may define rules for as many different 5 | # locales as you wish. All of these examples are active by default: 6 | # ActiveSupport::Inflector.inflections(:en) do |inflect| 7 | # inflect.plural /^(ox)$/i, '\1en' 8 | # inflect.singular /^(ox)en/i, '\1' 9 | # inflect.irregular 'person', 'people' 10 | # inflect.uncountable %w( fish sheep ) 11 | # end 12 | 13 | # These inflection rules are supported but not enabled by default: 14 | # ActiveSupport::Inflector.inflections(:en) do |inflect| 15 | # inflect.acronym 'RESTful' 16 | # end 17 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/test_helper.rb: -------------------------------------------------------------------------------- 1 | # Configure Rails Environment 2 | ENV["RAILS_ENV"] = "test" 3 | 4 | require File.expand_path("../../test/dummy/config/environment.rb", __FILE__) 5 | ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)] 6 | ActiveRecord::Migrator.migrations_paths << File.expand_path('../../db/migrate', __FILE__) 7 | require "rails/test_help" 8 | 9 | Rails.backtrace_cleaner.remove_silencers! 10 | 11 | # Load support files 12 | Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f } 13 | 14 | # Load fixtures from the engine 15 | if ActiveSupport::TestCase.method_defined?(:fixture_path=) 16 | ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__) 17 | end 18 | -------------------------------------------------------------------------------- /app/assets/javascripts/users.js.coffee: -------------------------------------------------------------------------------- 1 | jQuery -> 2 | 3 | jQuery('#sub_user_form').submit -> 4 | new validateForms(jQuery(this).attr('id')).validateRequired() 5 | 6 | jQuery('#change_password_form').submit -> 7 | new validateForms(jQuery(this).attr('id')).validateCurrentPassword() 8 | 9 | jQuery('#update_sub_user_form').submit -> 10 | new validateForms(jQuery(this).attr('id')).validateUpdatePassword() 11 | 12 | jQuery('#send_password,#user_login').submit -> 13 | new validateForms(jQuery(this).attr('id')).validateEmail() 14 | 15 | jQuery('#new_user').submit -> 16 | new validateForms(jQuery(this).attr('id')).validateRequired() 17 | 18 | jQuery('#forgot_password').submit -> 19 | new validateForms(jQuery(this).attr('id')).validatePassword() 20 | -------------------------------------------------------------------------------- /app/views/sent_emails/_sent_emails.html.erb: -------------------------------------------------------------------------------- 1 | <% if @sent_emails.length > 0 %> 2 | <% @sent_emails.each do |sent_email| %> 3 | 4 | <%= link_to sent_email.subject, {:controller => 'sent_emails', :action => 'show', :id => sent_email.id}, :class => "sent_email_link" %> 5 | <%= sent_email.recipient %> 6 | <%= sent_email.type %> 7 | <%= sent_email.date.strftime(get_date_format) %> 8 | 9 | <% end %> 10 | <% else %> 11 | 12 | 13 |
    <%= t('views.clients.no_sent_emails') %>
    14 | 15 | 16 | <% end %> 17 | 18 | -------------------------------------------------------------------------------- /test/fixtures/client_billing_infos.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 2 | 3 | one: 4 | country: MyString 5 | street_address_1: MyString 6 | street_address_2: MyString 7 | city: MyString 8 | province_or_state: MyString 9 | postal_or_zip_code: MyString 10 | phone_business: MyString 11 | phone_mobile: MyString 12 | phone_home: MyString 13 | fax: MyString 14 | notes: MyString 15 | 16 | two: 17 | country: MyString 18 | street_address_1: MyString 19 | street_address_2: MyString 20 | city: MyString 21 | province_or_state: MyString 22 | postal_or_zip_code: MyString 23 | phone_business: MyString 24 | phone_mobile: MyString 25 | phone_home: MyString 26 | fax: MyString 27 | notes: MyString 28 | -------------------------------------------------------------------------------- /app/assets/stylesheets/payment_history.css.scss: -------------------------------------------------------------------------------- 1 | .payment_history{ 2 | 3 | .grid_table{ 4 | padding-top:35px; 5 | 6 | table{ 7 | col.one{ /*invoice*/ 8 | width : 94px; 9 | } 10 | col.two{ /*client*/ 11 | width : 214px; 12 | } 13 | col.three{ /*type*/ 14 | width : 82px; 15 | } 16 | col.four{ /*notes*/ 17 | width : 286px; 18 | } 19 | col.five{ /*date*/ 20 | width : 82px; 21 | } 22 | col.six{ /*amount*/ 23 | width : 82px; 24 | } 25 | } 26 | } 27 | 28 | .content_bottom{ 29 | height: 65px; 30 | } 31 | } 32 | 33 | -------------------------------------------------------------------------------- /vendor/engines/osb_api/test/dummy/config/locales/en.yml: -------------------------------------------------------------------------------- 1 | # Files in the config/locales directory are used for internationalization 2 | # and are automatically loaded by Rails. If you want to use locales other 3 | # than English, add the necessary files in this directory. 4 | # 5 | # To use the locales, use `I18n.t`: 6 | # 7 | # I18n.t 'hello' 8 | # 9 | # In views, this is aliased to just `t`: 10 | # 11 | # <%= t('hello') %> 12 | # 13 | # To use a different locale, set it with `I18n.locale`: 14 | # 15 | # I18n.locale = :es 16 | # 17 | # This would use the information in config/locales/es.yml. 18 | # 19 | # To learn more, please read the Rails Internationalization guide 20 | # available at http://guides.rubyonrails.org/i18n.html. 21 | 22 | en: 23 | hello: "Hello world" 24 | -------------------------------------------------------------------------------- /app/views/estimates/undo_actions.js.erb: -------------------------------------------------------------------------------- 1 | jQuery('tbody#estimate_body').html('<%= escape_javascript render("estimate") %>'); 2 | jQuery('tfoot#paging_links').html('<%= escape_javascript render("application_partials/paging") %>'); 3 | jQuery('#active_links').html('<%= escape_javascript render("filter_links") %>'); 4 | <% @recovered = params[:archived] ? 'archived' : 'deleted' %> 5 | jQuery(".alert.alert-success").show().find('span').html("Estimate(s) are recovered from <%= @recovered %> successfully."); 6 | jQuery('#active_links a').removeClass('active'); 7 | jQuery('.get_actives').addClass('active'); 8 | jQuery('.recover_deleted, .recover_archived').hide(); 9 | jQuery('.archive,.destroy,.convert_to_invoice,.send').show(); 10 | jQuery('.get_actives').addClass('active'); 11 | bind_deleted_entry(); --------------------------------------------------------------------------------