├── .github ├── CODE_OF_CONDUCT.md ├── ISSUE_TEMPLATE │ ├── Bug_report.md │ └── Feature_request.md ├── PULL_REQUEST_TEMPLATE.md └── SECURITY.md ├── .gitignore ├── CHANGELOG.md ├── LICENSE.txt ├── README.md ├── composer.json ├── composer.lock └── src ├── components ├── _includes │ ├── Administrator.php │ ├── Client.php │ ├── Company.php │ ├── Core.php │ ├── CoreMenu.php │ ├── CoreTheme.php │ ├── Creditnote.php │ ├── Cronjob.php │ ├── Expense.php │ ├── Help.php │ ├── Invoice.php │ ├── Otherincome.php │ ├── Payment.php │ ├── Report.php │ ├── Schedule.php │ ├── Setup.php │ ├── Supplier.php │ ├── User.php │ ├── Voucher.php │ └── Workorder.php ├── administrator │ ├── acl.php │ ├── config.php │ ├── phpinfo.php │ └── update.php ├── client │ ├── delete.php │ ├── details.php │ ├── edit.php │ ├── new.php │ ├── note_delete.php │ ├── note_edit.php │ ├── note_new.php │ └── search.php ├── company │ ├── business_hours.php │ └── edit.php ├── core │ ├── 403.php │ ├── 404.php │ ├── blocks │ │ ├── theme_debug_block.php │ │ ├── theme_footer_block.php │ │ ├── theme_header_block.php │ │ ├── theme_header_theme_off_block.php │ │ └── theme_menu_block.php │ ├── dashboard.php │ ├── error.php │ ├── home.php │ └── maintenance.php ├── creditnote │ ├── cancel.php │ ├── delete.php │ ├── details.php │ ├── edit.php │ ├── email.php │ ├── new.php │ ├── print.php │ ├── search.php │ └── status.php ├── cronjob │ ├── details.php │ ├── edit.php │ ├── overview.php │ ├── run.php │ └── unlock.php ├── expense │ ├── cancel.php │ ├── delete.php │ ├── details.php │ ├── edit.php │ ├── new.php │ ├── search.php │ └── status.php ├── help │ ├── about.php │ ├── attribution.php │ └── license.php ├── invoice │ ├── cancel.php │ ├── delete.php │ ├── details.php │ ├── edit.php │ ├── email.php │ ├── new.php │ ├── overview.php │ ├── prefill_items.php │ ├── print.php │ ├── search.php │ └── status.php ├── otherincome │ ├── cancel.php │ ├── delete.php │ ├── details.php │ ├── edit.php │ ├── new.php │ ├── search.php │ └── status.php ├── payment │ ├── cancel.php │ ├── delete.php │ ├── details.php │ ├── edit.php │ ├── methods │ │ ├── PaymentMethod.php │ │ ├── PaymentMethodBankTransfer.php │ │ ├── PaymentMethodCard.php │ │ ├── PaymentMethodCash.php │ │ ├── PaymentMethodCheque.php │ │ ├── PaymentMethodCreditnote.php │ │ ├── PaymentMethodDirectdebit.php │ │ ├── PaymentMethodOther.php │ │ ├── PaymentMethodPaypal.php │ │ └── PaymentMethodVoucher.php │ ├── new.php │ ├── options.php │ ├── search.php │ ├── status.php │ └── types │ │ ├── PaymentType.php │ │ ├── PaymentTypeCreditnote.php │ │ ├── PaymentTypeExpense.php │ │ ├── PaymentTypeInvoice.php │ │ └── PaymentTypeOtherincome.php ├── report │ ├── basic_stats.php │ └── financial.php ├── schedule │ ├── day.php │ ├── delete.php │ ├── details.php │ ├── edit.php │ ├── icalendar.php │ ├── new.php │ └── search.php ├── setup │ ├── choice.php │ ├── install.php │ ├── migrate.php │ └── upgrade.php ├── supplier │ ├── cancel.php │ ├── delete.php │ ├── details.php │ ├── edit.php │ ├── new.php │ ├── search.php │ └── status.php ├── user │ ├── delete.php │ ├── details.php │ ├── edit.php │ ├── login.php │ ├── new.php │ ├── reset.php │ └── search.php ├── voucher │ ├── delete.php │ ├── details.php │ ├── edit.php │ ├── email.php │ ├── new.php │ ├── print.php │ ├── search.php │ └── status.php └── workorder │ ├── autosuggest_scope.php │ ├── delete.php │ ├── details.php │ ├── details_edit_comment.php │ ├── details_edit_description.php │ ├── details_edit_resolution.php │ ├── new.php │ ├── note_delete.php │ ├── note_edit.php │ ├── note_new.php │ ├── overview.php │ ├── print.php │ ├── search.php │ └── status.php ├── cron.php ├── favicon.ico ├── htaccess.txt ├── htpasswd.txt ├── index.php ├── language ├── _gettext_only │ ├── pages.php │ └── system_variables.php └── en_GB │ └── LC_MESSAGES │ ├── site.mo │ └── site.po ├── libraries ├── custom │ └── smarty │ │ └── plugins │ │ ├── block.t.php │ │ ├── function.locale.php │ │ ├── modifier.creditnoteadinfodisplay.php │ │ ├── modifier.invoiceadinfodisplay.php │ │ ├── modifier.paymentadinfodisplay.php │ │ ├── modifier.redemptions.php │ │ └── modifier.vouchers.php └── qframework │ ├── Sections │ ├── Components.php │ ├── Modules.php │ ├── Plugins.php │ └── System.php │ ├── System │ ├── Communication.php │ ├── Email.php │ ├── General.php │ ├── Page.php │ ├── Pdf.php │ ├── QError.php │ ├── Router.php │ ├── Security.php │ └── Variables.php │ ├── includes │ ├── CMSApplication.php │ ├── Factory.php │ ├── defines.php │ └── loader.php │ └── joomla │ ├── libraries │ ├── fof │ │ └── input │ │ │ └── jinput │ │ │ ├── cookie.php │ │ │ └── input.php │ ├── joomla │ │ └── session │ │ │ ├── handler │ │ │ ├── interface.php │ │ │ ├── joomla.php │ │ │ └── native.php │ │ │ ├── storage.php │ │ │ └── storage │ │ │ ├── database.php │ │ │ └── none.php │ ├── src │ │ ├── Authentication │ │ │ ├── Authentication.php │ │ │ └── AuthenticationResponse.php │ │ ├── Crypt │ │ │ └── Crypt.php │ │ ├── Filter │ │ │ └── InputFilter.php │ │ ├── Input │ │ │ ├── Cookie.php │ │ │ └── Input.php │ │ ├── Session │ │ │ └── Session.php │ │ └── User │ │ │ ├── User.php │ │ │ ├── UserHelper.php │ │ │ └── UserWrapper.php │ └── vendor │ │ └── joomla │ │ ├── application │ │ └── src │ │ │ └── Web │ │ │ └── WebClient.php │ │ ├── filter │ │ └── src │ │ │ └── InputFilter.php │ │ ├── input │ │ └── src │ │ │ └── Input.php │ │ ├── registry │ │ └── src │ │ │ └── Registry.php │ │ └── string │ │ └── src │ │ ├── StringHelper.php │ │ └── phputf8 │ │ └── native │ │ └── core.php │ └── plugins │ ├── authentication │ ├── cookie │ │ └── cookie.php │ └── joomla │ │ └── joomla.php │ ├── system │ └── remember │ │ └── remember.php │ └── user │ └── joomla │ └── joomla.php ├── logs └── .htaccess ├── media ├── .htaccess └── qw-logo.png ├── robots.txt.dist ├── setup ├── install │ ├── install_configuration.php │ └── install_database.sql ├── migrate │ └── myitcrm │ │ ├── migrate_configuration.php │ │ ├── migrate_database.sql │ │ └── migrate_routines.php └── upgrade │ ├── 3_1_0 │ ├── break.txt │ ├── upgrade_database.sql │ └── upgrade_routines.php │ ├── 3_1_1 │ ├── upgrade_database.sql │ └── upgrade_routines.php │ ├── 3_1_2 │ ├── upgrade_database.sql │ └── upgrade_routines.php │ ├── 3_1_3 │ ├── upgrade_database.sql │ └── upgrade_routines.php │ └── 3_1_4 │ ├── upgrade_database.sql │ └── upgrade_routines.php └── themes ├── .htaccess └── default ├── css └── template.css ├── fonts ├── 04B_08__.TTF └── 04B_09__.TTF ├── images ├── MC.gif ├── Visa.gif ├── back_24.gif ├── bank.gif ├── btn_paynow_LG.gif ├── buttons │ ├── Thumbs.db │ └── ics.png ├── closed.gif ├── cross.png ├── csv_example_screenshot.png ├── detail01.gif ├── detail02.gif ├── fastf_24.gif ├── forwd_24.gif ├── gblnav_left.gif ├── glblnav_selected.gif ├── glbnav_background.gif ├── glbnav_right.gif ├── icons │ ├── 16x16 │ │ ├── Calendar.gif │ │ ├── back.gif │ │ ├── down.gif │ │ ├── email.jpg │ │ ├── fileprint.gif │ │ ├── forward.gif │ │ ├── help.gif │ │ ├── next.gif │ │ ├── pdf_small.gif │ │ ├── small_clock.gif │ │ ├── small_edit.gif │ │ ├── small_edit_employee.gif │ │ ├── small_new_client.gif │ │ ├── small_new_invoice_only.gif │ │ ├── small_new_work_order.gif │ │ ├── stop.gif │ │ ├── up.gif │ │ ├── view.gif │ │ └── viewmag.gif │ ├── 3floppy_mount.png │ ├── bookmark.png │ ├── bug.png │ ├── button_ok.png │ ├── cheque.jpeg │ ├── clients.gif │ ├── clock.gif │ ├── close.gif │ ├── comment.png │ ├── control.gif │ ├── db_restore.png │ ├── db_save.png │ ├── decrypted.png │ ├── delete.gif │ ├── delete_employees.gif │ ├── deposit.jpeg │ ├── edit.gif │ ├── edit_employee.gif │ ├── employee.gif │ ├── encrypted.png │ ├── filefind.gif │ ├── gift.png │ ├── home.gif │ ├── invoice.png │ ├── key.png │ ├── logout.gif │ ├── map.png │ ├── money.png │ ├── new.gif │ ├── new_customer.gif │ ├── new_employees.gif │ ├── new_note.gif │ ├── new_work_order.gif │ ├── next.gif │ ├── note.png │ ├── pdf.png │ ├── pdf_small.png │ ├── php.png │ ├── previous.gif │ ├── print.gif │ ├── reports.png │ ├── status.gif │ ├── view.gif │ ├── warning.gif │ ├── web.png │ └── workorders.gif ├── index03.gif ├── index07.gif ├── index13.gif ├── index14.gif ├── index15.gif ├── index16.gif ├── index17.gif ├── index18.gif ├── index19.gif ├── index20.gif ├── index21.gif ├── index22.gif ├── index26.jpg ├── index29.jpg ├── index30.gif ├── index31.gif ├── index41.gif ├── index42.gif ├── index43.gif ├── inside01.gif ├── key.png ├── list.gif ├── list01.gif ├── move.png ├── news.png ├── open.gif ├── paymate │ ├── Thumbs.db │ └── paymate_cc.gif ├── paypal │ ├── Thumbs.db │ ├── cc_paypal.gif │ ├── donate.gif │ ├── pay_now.gif │ └── pay_now.png ├── request.png ├── rewnd_24.gif ├── sdmenu │ ├── bottom.gif │ ├── collapsed.gif │ ├── expanded.gif │ └── toptitle.gif ├── searchbar-eBay-logo.png ├── spacer.gif ├── swsh.gif ├── tick.png ├── title.gif ├── upArrow.png ├── xml.png └── xp_button_blue.gif ├── js ├── components │ ├── expense_other.js │ └── workorder.js ├── dhtmltooltip.js ├── dhtmlxcombo │ ├── dhtmlxcombo.css │ ├── dhtmlxcombo.js │ ├── imgs │ │ ├── dhxcombo_material │ │ │ ├── dhxcombo_arrow_down.gif │ │ │ ├── dhxcombo_arrow_down_dis.gif │ │ │ └── dhxcombo_chbx.gif │ │ ├── dhxcombo_skyblue │ │ │ ├── dhxcombo_arrow_down.gif │ │ │ ├── dhxcombo_arrow_down_dis.gif │ │ │ └── dhxcombo_chbx.gif │ │ ├── dhxcombo_terrace │ │ │ ├── dhxcombo_arrow_down.gif │ │ │ ├── dhxcombo_arrow_down_dis.gif │ │ │ └── dhxcombo_chbx.gif │ │ └── dhxcombo_web │ │ │ ├── dhxcombo_arrow_down.gif │ │ │ ├── dhxcombo_arrow_down_dis.gif │ │ │ └── dhxcombo_chbx.gif │ └── skins │ │ ├── dhtmlxcombo_dhx_skyblue.css │ │ ├── dhtmlxcombo_dhx_terrace.css │ │ ├── dhtmlxcombo_dhx_web.css │ │ └── dhtmlxcombo_material.css ├── dhtmlxcommon.js ├── editor-config.js ├── jquery-3.1.1.min.js ├── jscal2 │ ├── css │ │ ├── border-radius.css │ │ ├── gold │ │ │ ├── brushed-steel.jpg │ │ │ ├── coolbg.png │ │ │ ├── gold.css │ │ │ └── gold.jpg │ │ ├── img │ │ │ ├── cool-bg-hard-inv.png │ │ │ ├── cool-bg-hard.png │ │ │ ├── cool-bg-inv.png │ │ │ ├── cool-bg.png │ │ │ ├── drop-down.gif │ │ │ ├── drop-up.gif │ │ │ ├── nav-left-x2.gif │ │ │ ├── nav-left.gif │ │ │ ├── nav-right-x2.gif │ │ │ ├── nav-right.gif │ │ │ ├── time-down.png │ │ │ └── time-up.png │ │ ├── jscal2.css │ │ ├── matrix │ │ │ ├── matrix.css │ │ │ ├── nav-left-x2.gif │ │ │ ├── nav-left.gif │ │ │ ├── nav-right-x2.gif │ │ │ └── nav-right.gif │ │ ├── reduce-spacing.css │ │ ├── shadow-b.png │ │ ├── steel │ │ │ ├── brushed-steel.jpg │ │ │ ├── brushed-steel.png │ │ │ ├── coolbg.png │ │ │ ├── steel.css │ │ │ └── steel.jpg │ │ └── win2k │ │ │ └── win2k.css │ ├── jscal2.js │ ├── language.js │ └── unicode-letter.js ├── sdmenu.js ├── template.js └── tinymce │ ├── jquery.tinymce.min.js │ ├── langs │ ├── en_GB.js │ └── readme.md │ ├── license.txt │ ├── plugins │ ├── codesample │ │ └── css │ │ │ └── prism.css │ ├── emoticons │ │ └── img │ │ │ ├── smiley-cool.gif │ │ │ ├── smiley-cry.gif │ │ │ ├── smiley-embarassed.gif │ │ │ ├── smiley-foot-in-mouth.gif │ │ │ ├── smiley-frown.gif │ │ │ ├── smiley-innocent.gif │ │ │ ├── smiley-kiss.gif │ │ │ ├── smiley-laughing.gif │ │ │ ├── smiley-money-mouth.gif │ │ │ ├── smiley-sealed.gif │ │ │ ├── smiley-smile.gif │ │ │ ├── smiley-surprised.gif │ │ │ ├── smiley-tongue-out.gif │ │ │ ├── smiley-undecided.gif │ │ │ ├── smiley-wink.gif │ │ │ └── smiley-yell.gif │ ├── help │ │ └── img │ │ │ └── logo.png │ ├── print │ │ └── plugin.min.js │ └── visualblocks │ │ └── css │ │ └── visualblocks.css │ ├── skins │ ├── lightgray │ │ ├── content.inline.min.css │ │ ├── content.min.css │ │ ├── content.mobile.min.css │ │ ├── fonts │ │ │ ├── tinymce-mobile.woff │ │ │ ├── tinymce-small.eot │ │ │ ├── tinymce-small.svg │ │ │ ├── tinymce-small.ttf │ │ │ ├── tinymce-small.woff │ │ │ ├── tinymce.eot │ │ │ ├── tinymce.svg │ │ │ ├── tinymce.ttf │ │ │ └── tinymce.woff │ │ ├── img │ │ │ ├── anchor.gif │ │ │ ├── loader.gif │ │ │ ├── object.gif │ │ │ └── trans.gif │ │ ├── skin.min.css │ │ ├── skin.min.css.map │ │ ├── skin.mobile.min.css │ │ └── skin.mobile.min.css.map │ └── qwcrm │ │ ├── Variables.less │ │ ├── content.inline.min.css │ │ ├── content.min.css │ │ ├── fonts │ │ ├── readme.md │ │ ├── tinymce-small.eot │ │ ├── tinymce-small.json │ │ ├── tinymce-small.svg │ │ ├── tinymce-small.ttf │ │ ├── tinymce-small.woff │ │ ├── tinymce.eot │ │ ├── tinymce.json │ │ ├── tinymce.svg │ │ ├── tinymce.ttf │ │ └── tinymce.woff │ │ ├── img │ │ ├── anchor.gif │ │ ├── loader.gif │ │ ├── object.gif │ │ └── trans.gif │ │ ├── skin.ie7.min.css │ │ ├── skin.json │ │ └── skin.min.css │ └── tinymce.min.js ├── templateDetails.xml └── templates ├── administrator ├── acl.tpl ├── config.tpl ├── phpinfo.tpl └── update.tpl ├── client ├── blocks │ ├── details_account_block.tpl │ ├── details_notes_block.tpl │ ├── display_client_details_block.tpl │ ├── display_client_historic_stats_block.tpl │ └── display_clients_block.tpl ├── details.tpl ├── edit.tpl ├── new.tpl ├── note_edit.tpl ├── note_new.tpl ├── printing │ └── print_client_envelope.tpl └── search.tpl ├── company ├── business_hours.tpl └── edit.tpl ├── core ├── 403.tpl ├── 404.tpl ├── blocks │ ├── home_dashboard_block.tpl │ ├── home_login_block.tpl │ ├── theme_debug_block.tpl │ ├── theme_debug_smarty_debug_block.tpl │ ├── theme_footer_block.tpl │ ├── theme_footer_legacy_supplement_block.tpl │ ├── theme_header_block.tpl │ ├── theme_header_legacy_supplement_block.tpl │ ├── theme_header_theme_off_block.tpl │ ├── theme_menu_block.tpl │ └── theme_searchbar_block.tpl ├── dashboard.tpl ├── dashboard_customer.tpl ├── dashboard_employee.tpl ├── error.tpl ├── home.tpl └── maintenance.tpl ├── creditnote ├── blocks │ ├── display_creditnote_balance_block.tpl │ ├── display_creditnote_current_stats_block.tpl │ ├── display_creditnote_historic_stats_block.tpl │ ├── display_creditnote_revenue_stats_block.tpl │ └── display_creditnotes_block.tpl ├── details.tpl ├── edit.tpl ├── printing │ └── print_creditnote.tpl ├── search.tpl └── status.tpl ├── cronjob ├── blocks │ └── display_cronjobs_block.tpl ├── details.tpl ├── edit.tpl └── overview.tpl ├── expense ├── blocks │ ├── display_expense_balance_block.tpl │ └── display_expenses_block.tpl ├── details.tpl ├── edit.tpl ├── search.tpl └── status.tpl ├── help ├── about.tpl ├── attribution.tpl └── license.tpl ├── invoice ├── blocks │ ├── display_invoice_balance_block.tpl │ ├── display_invoice_current_stats_block.tpl │ ├── display_invoice_historic_stats_block.tpl │ ├── display_invoice_revenue_stats_block.tpl │ └── display_invoices_block.tpl ├── details.tpl ├── edit.tpl ├── overview.tpl ├── prefill_items.tpl ├── printing │ └── print_invoice.tpl ├── search.tpl └── status.tpl ├── otherincome ├── blocks │ ├── display_otherincome_balance_block.tpl │ └── display_otherincomes_block.tpl ├── details.tpl ├── edit.tpl ├── search.tpl └── status.tpl ├── payment ├── blocks │ ├── display_payment_methods_block.tpl │ ├── display_payment_revenue_stats_block.tpl │ └── display_payments_block.tpl ├── details.tpl ├── edit.tpl ├── new.tpl ├── options.tpl ├── search.tpl └── status.tpl ├── report ├── basic_stats.tpl └── financial.tpl ├── schedule ├── blocks │ └── display_schedules_block.tpl ├── day.tpl ├── details.tpl ├── edit.tpl ├── new.tpl └── search.tpl ├── setup ├── blocks │ ├── choice_compatibility_test_block.tpl │ ├── install_administrator_account_block.tpl │ ├── install_company_details_block.tpl │ ├── install_config_settings_block.tpl │ ├── install_database_connection_block.tpl │ ├── install_database_install_block.tpl │ ├── install_database_install_results_block.tpl │ ├── install_delete_setup_folder_block.tpl │ ├── install_start_numbers_block.tpl │ ├── migrate_myitcrm_administrator_account_block.tpl │ ├── migrate_myitcrm_company_details_block.tpl │ ├── migrate_myitcrm_config_settings_block.tpl │ ├── migrate_myitcrm_database_connection_myitcrm_block.tpl │ ├── migrate_myitcrm_database_connection_qwcrm_block.tpl │ ├── migrate_myitcrm_database_install_qwcrm_block.tpl │ ├── migrate_myitcrm_database_install_results_qwcrm_block.tpl │ ├── migrate_myitcrm_database_migrate_block.tpl │ ├── migrate_myitcrm_database_migrate_results_block.tpl │ ├── migrate_myitcrm_upgrade_confirmation_block.tpl │ ├── upgrade_database_connection_block.tpl │ ├── upgrade_database_upgrade_block.tpl │ ├── upgrade_database_upgrade_results_block.tpl │ └── upgrade_delete_setup_folder_block.tpl ├── choice.tpl ├── install.tpl ├── migrate.tpl └── upgrade.tpl ├── supplier ├── blocks │ └── display_suppliers_block.tpl ├── details.tpl ├── edit.tpl ├── new.tpl ├── search.tpl └── status.tpl ├── user ├── blocks │ ├── details_details_block.tpl │ ├── display_users_block.tpl │ ├── reset_enter_email_block.tpl │ ├── reset_enter_password_block.tpl │ └── reset_enter_token_block.tpl ├── details.tpl ├── edit.tpl ├── login.tpl ├── new.tpl ├── reset.tpl └── search.tpl ├── voucher ├── blocks │ ├── display_voucher_revenue_stats_block.tpl │ └── display_vouchers_block.tpl ├── details.tpl ├── edit.tpl ├── new.tpl ├── printing │ └── print_voucher.tpl ├── search.tpl └── status.tpl └── workorder ├── blocks ├── details_history_block.tpl ├── details_notes_block.tpl ├── details_schedule_block.tpl ├── details_workorder_block.tpl ├── display_workorder_current_stats_block.tpl ├── display_workorder_historic_stats_block.tpl └── display_workorders_block.tpl ├── details.tpl ├── details_edit_comment.tpl ├── details_edit_description.tpl ├── details_edit_resolution.tpl ├── new.tpl ├── note_edit.tpl ├── note_new.tpl ├── overview.tpl ├── printing ├── print_client_workorder_slip.tpl ├── print_technician_job_sheet.tpl └── print_technician_workorder_slip.tpl ├── search.tpl └── status.tpl /.github/ISSUE_TEMPLATE/Bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | 5 | --- 6 | 7 | **Describe the bug** 8 | A clear and concise description of what the bug is. 9 | 10 | **To Reproduce** 11 | Steps to reproduce the behavior: 12 | 1. Go to '...' 13 | 2. Click on '....' 14 | 3. Scroll down to '....' 15 | 4. See error 16 | 17 | **Expected behavior** 18 | A clear and concise description of what you expected to happen. 19 | 20 | **Actual result** 21 | A clear and concise description of what you see. Like an error message. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **System information (please complete the following information)** 27 | 28 | QWcrm version: 29 | Php version: 30 | Database version: 31 | 32 | **Desktop (please complete the following information):** 33 | - OS: [e.g. iOS] 34 | - Browser [e.g. chrome, safari] 35 | - Version [e.g. 22] 36 | 37 | **Smartphone (please complete the following information):** 38 | - Device: [e.g. iPhone6] 39 | - OS: [e.g. iOS8.1] 40 | - Browser [e.g. stock browser, safari] 41 | - Version [e.g. 22] 42 | 43 | **Additional context** 44 | Add any other context about the problem here. 45 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/Feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | 5 | --- 6 | 7 | **Is your feature request related to a problem? Please describe.** 8 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 9 | 10 | **Describe the solution you'd like** 11 | A clear and concise description of what you want to happen. 12 | 13 | **Describe alternatives you've considered** 14 | A clear and concise description of any alternative solutions or features you've considered. 15 | 16 | **Additional context** 17 | Add any other context or screenshots about the feature request here. 18 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Pull Request for Issue # . 2 | 3 | #### Summary of Changes 4 | 5 | #### Testing Instructions -------------------------------------------------------------------------------- /.github/SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | | Version | Supported | 6 | | ------- | ------------------ | 7 | | 3.2.0 | :white_check_mark: | 8 | | 3.1.0 | :white_check_mark: | 9 | | < 3.0 | :x: | 10 | 11 | ## Reporting a Vulnerability 12 | 13 | Please send a email to: xxx@quantumwarp.com with a example or POC. 14 | 15 | We will send you a email within 24 hours. 16 | After the confirmation we will work on the fix asap. 17 | 18 | 19 | ## Bug Bounty 20 | 21 | Sorry, we have no bug bounty rewards for the reports. All our donations are going to the server costs. 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /localonly/ 2 | /nbproject/ 3 | /src/cache/smarty/cache/ 4 | /src/cache/smarty/compile/ 5 | /src/libraries/vendor/ 6 | /src/logs/ 7 | /src/media/ 8 | /src/-setup/ 9 | /src/tmp/ 10 | /src/configuration.php 11 | /src/-configuration.php 12 | /.php_cs.cache 13 | /src/.htaccess 14 | /src/off.htaccess 15 | /src/themail.log -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "vendor-dir": "src/libraries/vendor" 4 | }, 5 | "require": { 6 | "phpmyadmin/motranslator": "^5.0", 7 | "smarty/smarty": "^4.0", 8 | "mpdf/mpdf": "^8.0", 9 | "adodb/adodb-php": "^5.20", 10 | "swiftmailer/swiftmailer": "^6.0", 11 | "google/recaptcha": "^1.1", 12 | "picqer/php-barcode-generator": "^2.0", 13 | "filp/whoops": "^2.2", 14 | "dragonmantank/cron-expression": "^3.0.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/components/_includes/Core.php: -------------------------------------------------------------------------------- 1 | app->db->execute($sql)) {$this->app->system->page->forceErrorPage('database', __FILE__, __FUNCTION__, $this->app->db->ErrorMsg(), $sql);} 32 | 33 | return $rs->fields['welcome_msg']; 34 | 35 | } 36 | 37 | } -------------------------------------------------------------------------------- /src/components/_includes/CoreMenu.php: -------------------------------------------------------------------------------- 1 | app->components->administrator->resetAclPermissions(); 14 | $this->app->system->variables->systemMessagesWrite('success', _gettext("Permissions reset to default.")); 15 | } 16 | 17 | // Update the ACL permissions if submitted 18 | if(isset(\CMSApplication::$VAR['submit']) && \CMSApplication::$VAR['submit'] == 'update') { 19 | $this->app->components->administrator->updateAcl(\CMSApplication::$VAR['qform']['permissions']); 20 | $this->app->system->variables->systemMessagesWrite('success', _gettext("Permissions Updated.")); 21 | } 22 | 23 | // Build the page with the permissions from the database 24 | $this->app->smarty->assign('acl', $this->app->components->administrator->getAclPermissions()); -------------------------------------------------------------------------------- /src/components/administrator/phpinfo.php: -------------------------------------------------------------------------------- 1 | app->smarty->assign('phpinfo', $this->app->components->administrator->getPHPInfo()); -------------------------------------------------------------------------------- /src/components/administrator/update.php: -------------------------------------------------------------------------------- 1 | app->components->administrator->checkQwcrmUpdateAvailability(); 15 | 16 | } else { 17 | // Prevent undefined variable errors 18 | $this->app->smarty->assign('update_response', null); 19 | } 20 | 21 | // Build the page 22 | 23 | $this->app->smarty->assign('current_version', QWCRM_VERSION); 24 | 25 | -------------------------------------------------------------------------------- /src/components/client/delete.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm()) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have a client_id 18 | if(!isset(\CMSApplication::$VAR['client_id']) || !\CMSApplication::$VAR['client_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No Client ID supplied.")); 20 | $this->app->system->page->forcePage('client', 'search'); 21 | } 22 | 23 | // Run the delete function and return the results 24 | if(!$this->app->components->client->deleteRecord(\CMSApplication::$VAR['client_id'])) { 25 | 26 | // Reload client details page with error messages 27 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("This client cannot be deleted.")); 28 | $this->app->system->page->forcePage('client', 'details&client_id='.\CMSApplication::$VAR['client_id']); 29 | 30 | } else { 31 | 32 | // Load the Client search page 33 | $this->app->system->variables->systemMessagesWrite('success', _gettext("The client has been deleted.")); 34 | $this->app->system->page->forcePage('client', 'search'); 35 | 36 | } -------------------------------------------------------------------------------- /src/components/client/edit.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Client ID supplied.")); 14 | $this->app->system->page->forcePage('client', 'search'); 15 | } 16 | 17 | if(isset(\CMSApplication::$VAR['submit'])) { 18 | 19 | // Update the Client's Details 20 | $this->app->components->client->updateRecord(\CMSApplication::$VAR['qform']); 21 | 22 | // Load the client's details page 23 | $this->app->system->variables->systemMessagesWrite('success', _gettext("The Client's information was updated.")); 24 | $this->app->system->page->forcePage('client', 'details&client_id='.\CMSApplication::$VAR['client_id']); 25 | 26 | } else { 27 | 28 | // Build the page 29 | $this->app->smarty->assign('client_types', $this->app->components->client->getTypes()); 30 | $this->app->smarty->assign('client_details', $this->app->components->client->getRecord(\CMSApplication::$VAR['client_id'])); 31 | 32 | } -------------------------------------------------------------------------------- /src/components/client/new.php: -------------------------------------------------------------------------------- 1 | app->components->client->insertRecord(\CMSApplication::$VAR['qform']); 15 | 16 | // Load the new Client's Details page 17 | $this->app->system->page->forcePage('client', 'details&client_id='.\CMSApplication::$VAR['client_id']); 18 | 19 | } else { 20 | 21 | // Build the page 22 | $this->app->smarty->assign('client_types', $this->app->components->client->getTypes()); 23 | 24 | } -------------------------------------------------------------------------------- /src/components/client/note_delete.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Client Note ID supplied.")); 14 | $this->app->system->page->forcePage('client', 'search'); 15 | } 16 | 17 | // Get the client_id before we delete the record 18 | \CMSApplication::$VAR['client_id'] = $this->app->components->client->getNote(\CMSApplication::$VAR['client_note_id'], 'client_id'); 19 | 20 | // Delete the client note 21 | $this->app->system->variables->systemMessagesWrite('success', _gettext("The client note has been deleted.")); 22 | $this->app->components->client->deleteNote(\CMSApplication::$VAR['client_note_id']); 23 | 24 | // Reload the clients details page 25 | $this->app->system->page->forcePage('client', 'details&client_id='.\CMSApplication::$VAR['client_id']); -------------------------------------------------------------------------------- /src/components/client/note_edit.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Client Note ID supplied.")); 14 | $this->app->system->page->forcePage('client', 'search'); 15 | } 16 | 17 | // If record submitted for updating 18 | if(isset(\CMSApplication::$VAR['submit'])) { 19 | 20 | $this->app->components->client->updateNote(\CMSApplication::$VAR['client_note_id'], \CMSApplication::$VAR['note']); 21 | $this->app->system->page->forcePage('client', 'details&client_id='.$this->app->components->client->getNote(\CMSApplication::$VAR['client_note_id'], 'client_id')); 22 | 23 | } else { 24 | 25 | $this->app->smarty->assign('client_note_details', $this->app->components->client->getNote(\CMSApplication::$VAR['client_note_id'])); 26 | 27 | } 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/components/client/note_new.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Client ID supplied.")); 14 | $this->app->system->page->forcePage('client', 'search'); 15 | exit; 16 | } 17 | 18 | // Insert the client note 19 | if(isset(\CMSApplication::$VAR['submit'])) { 20 | 21 | $this->app->components->client->insertNote(\CMSApplication::$VAR['client_id'], \CMSApplication::$VAR['note']); 22 | $this->app->system->variables->systemMessagesWrite('success', _gettext("Client note created.")); 23 | $this->app->system->page->forcePage('client', 'details&client_id='.\CMSApplication::$VAR['client_id']); 24 | 25 | } else { 26 | 27 | } 28 | 29 | -------------------------------------------------------------------------------- /src/components/company/business_hours.php: -------------------------------------------------------------------------------- 1 | app->components->company->checkOpeningHoursValid($opening_time, $closing_time)) { 20 | 21 | // Update opening and closing Times into the database 22 | $this->app->components->company->updateOpeningHours(\CMSApplication::$VAR['openingTime'], \CMSApplication::$VAR['closingTime']); 23 | 24 | } 25 | 26 | // Assign varibles (for page load) 27 | $this->app->smarty->assign('opening_time', $opening_time ); 28 | $this->app->smarty->assign('closing_time', $closing_time ); 29 | 30 | // If page is just loaded get the opening and closing times stored in the database 31 | } else { 32 | $this->app->smarty->assign('opening_time', $this->app->components->company->getOpeningHours('opening_time', 'smartytime')); 33 | $this->app->smarty->assign('closing_time', $this->app->components->company->getOpeningHours('closing_time', 'smartytime')); 34 | } -------------------------------------------------------------------------------- /src/components/company/edit.php: -------------------------------------------------------------------------------- 1 | app->components->company->updateRecord(\CMSApplication::$VAR['qform']); 19 | 20 | // Reload Company options 21 | $this->app->system->page->forcePage('company', 'edit'); 22 | 23 | } 24 | 25 | // Build the page 26 | $this->app->smarty->assign('date_formats', $this->app->system->general->getDateFormats()); 27 | $this->app->smarty->assign('tax_systems', $this->app->components->company->getTaxSystems() ); 28 | $this->app->smarty->assign('vat_tax_codes', $this->app->components->company->getVatTaxCodes(null, true) ); 29 | $this->app->smarty->assign('company_details', $this->app->components->company->getRecord() ); 30 | -------------------------------------------------------------------------------- /src/components/core/403.php: -------------------------------------------------------------------------------- 1 | app->smarty->assign('qwcrm_version', QWCRM_VERSION); -------------------------------------------------------------------------------- /src/components/core/blocks/theme_header_block.php: -------------------------------------------------------------------------------- 1 | app->smarty->assign('todays_display_date', date('l, j F Y')); 13 | 14 | //Add a welcome message based on time 15 | if(!defined('QWCRM_SETUP')) { 16 | $this->app->smarty->assign('greeting_msg', $this->app->components->coretheme->getGreetingMsg($this->app->user->login_display_name)); 17 | } else { 18 | $this->app->smarty->assign('greeting_msg', $this->app->components->coretheme->getGreetingMsg(null)); 19 | } -------------------------------------------------------------------------------- /src/components/core/blocks/theme_header_theme_off_block.php: -------------------------------------------------------------------------------- 1 | app->smarty->assign('menu_workorder_is_closed', menu_get_single_workorder_is_closed(\CMSApplication::$VAR['workorder_id'])); 14 | }*/ -------------------------------------------------------------------------------- /src/components/core/home.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm('creditnote', 'status')) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have an creditnote_id 18 | if(!isset(\CMSApplication::$VAR['creditnote_id']) || !\CMSApplication::$VAR['creditnote_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No Creditnote ID supplied.")); 20 | $this->app->system->page->forcePage('creditnote', 'search'); 21 | } 22 | 23 | // Cancel Credit Note 24 | if(!$this->app->components->creditnote->cancelRecord(\CMSApplication::$VAR['creditnote_id'], \CMSApplication::$VAR['qform']['reason_for_cancelling'])) { 25 | 26 | // Load the creditnote details page with error 27 | $this->app->system->variables->systemMessagesWrite('success', _gettext("The creditnote failed to be cancelled.")); 28 | $this->app->system->page->forcePage('creditnote', 'details&creditnote_id='.\CMSApplication::$VAR['creditnote_id']); 29 | 30 | 31 | } else { 32 | 33 | // Load the creditnote search page with success message 34 | $this->app->system->variables->systemMessagesWrite('success', _gettext("The creditnote has been cancelled successfully.")); 35 | $this->app->system->page->forcePage('creditnote', 'search'); 36 | 37 | } -------------------------------------------------------------------------------- /src/components/creditnote/delete.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm('creditnote', 'status')) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have an creditnote_id 18 | if(!isset(\CMSApplication::$VAR['creditnote_id']) || !\CMSApplication::$VAR['creditnote_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No Credit Note ID supplied.")); 20 | $this->app->system->page->forcePage('creditnote', 'search'); 21 | } 22 | 23 | // Delete Invoice 24 | if(!$this->app->components->creditnote->deleteRecord(\CMSApplication::$VAR['creditnote_id'])) { 25 | 26 | // Load the creditnote record on the search page with the error 27 | $this->app->system->variables->systemMessagesWrite('success', _gettext("The credit note failed to be deleted.")); 28 | //$this->app->system->page->forcePage('creditnote', 'details&creditnote_id='.\CMSApplication::$VAR['creditnote_id']); 29 | $this->app->system->page->forcePage('creditnote', 'search&search_category=creditnote_id&search_term='.\CMSApplication::$VAR['creditnote_id']); 30 | 31 | } else { 32 | 33 | // Load the creditnote search page with success message 34 | $this->app->system->variables->systemMessagesWrite('success', _gettext("The credit note has been deleted successfully.")); 35 | $this->app->system->page->forcePage('creditnote', 'search'); 36 | 37 | } -------------------------------------------------------------------------------- /src/components/cronjob/details.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Cronjob ID supplied.")); 14 | $this->app->system->page->forcePage('cronjob', 'search'); 15 | } 16 | 17 | // Build the page 18 | $this->app->smarty->assign('cronjob_details', $this->app->components->cronjob->getRecord(\CMSApplication::$VAR['cronjob_id'])); -------------------------------------------------------------------------------- /src/components/cronjob/edit.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Cronjob ID supplied.")); 14 | $this->app->system->page->forcePage('cronjob', 'overview'); 15 | } 16 | 17 | // If details submitted run update values, if not set load edit.tpl and populate values 18 | if(isset(\CMSApplication::$VAR['submit'])) { 19 | 20 | // Update the cron in the database 21 | $this->app->components->cronjob->updateRecord(\CMSApplication::$VAR['qform']); 22 | 23 | // Load details page 24 | $this->app->system->variables->systemMessagesWrite('success', _gettext("Cronjob updated successfully.")); 25 | $this->app->system->page->forcePage('cronjob', 'details&cronjob_id='.\CMSApplication::$VAR['qform']['cronjob_id']); 26 | 27 | } else { 28 | 29 | // Build the page 30 | $this->app->smarty->assign('cronjob_details', $this->app->components->cronjob->getRecord(\CMSApplication::$VAR['cronjob_id'])); 31 | 32 | } -------------------------------------------------------------------------------- /src/components/cronjob/overview.php: -------------------------------------------------------------------------------- 1 | app->smarty->assign('cronjob_system_details', $this->app->components->cronjob->getSystem()); 13 | $this->app->smarty->assign('display_cronjobs', $this->app->components->cronjob->getRecords('cronjob_id', 'ASC')); -------------------------------------------------------------------------------- /src/components/cronjob/run.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm('cronjob', 'details') && !$this->app->system->security->checkPageAccessedViaQwcrm('cronjob', 'overview')) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have a cronjob_id 18 | if(!isset(\CMSApplication::$VAR['cronjob_id']) || !\CMSApplication::$VAR['cronjob_id']) { 19 | $this->app->system->page->forcePage('cronjob', 'overview'); 20 | } 21 | 22 | // Run the cronjob 23 | $this->app->components->cronjob->runCronjob(\CMSApplication::$VAR['cronjob_id'], false); 24 | 25 | // Return to the page this cron was run from 26 | $this->app->system->page->forcePage($_SERVER['HTTP_REFERER']); -------------------------------------------------------------------------------- /src/components/expense/cancel.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm('expense', 'status')) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have an expense_id 18 | if(!isset(\CMSApplication::$VAR['expense_id']) || !\CMSApplication::$VAR['expense_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No Expense ID supplied.")); 20 | $this->app->system->page->forcePage('expense', 'search'); 21 | } 22 | 23 | // Cancel the expense 24 | $this->app->components->expense->cancelRecord(\CMSApplication::$VAR['expense_id']); 25 | 26 | // Load the expense search page 27 | $this->app->system->variables->systemMessagesWrite('success', _gettext("Expense cancelled successfully.")); 28 | $this->app->system->page->forcePage('expense', 'search'); -------------------------------------------------------------------------------- /src/components/expense/delete.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm('expense', 'status')) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have an expense_id 18 | if(!isset(\CMSApplication::$VAR['expense_id']) || !\CMSApplication::$VAR['expense_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No Expense ID supplied.")); 20 | $this->app->system->page->forcePage('expense', 'search'); 21 | } 22 | 23 | // Delete the expense 24 | $this->app->components->expense->deleteRecord(\CMSApplication::$VAR['expense_id']); 25 | 26 | // Load the expense search page 27 | $this->app->system->variables->systemMessagesWrite('success', _gettext("Expense deleted successfully.")); 28 | $this->app->system->page->forcePage('expense', 'search'); -------------------------------------------------------------------------------- /src/components/expense/new.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Supplier ID supplied.")); 14 | $this->app->system->page->forcePage('expense', 'search'); 15 | }*/ 16 | 17 | // This is a workaround whilst supplier IDs are not enforced 18 | \CMSApplication::$VAR['supplier_id'] = null; 19 | 20 | // Create the expense record and return the new expense_id 21 | \CMSApplication::$VAR['expense_id'] = $this->app->components->expense->insertRecord(\CMSApplication::$VAR['supplier_id']); 22 | 23 | // Load the newly created invoice edit page 24 | $this->app->system->page->forcePage('expense', 'edit&expense_id='.\CMSApplication::$VAR['expense_id']); -------------------------------------------------------------------------------- /src/components/expense/status.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Expense ID supplied.")); 14 | $this->app->system->page->forcePage('expense', 'search'); 15 | } 16 | 17 | // Update Expense Status 18 | if(isset(\CMSApplication::$VAR['change_status'])){ 19 | $this->app->components->expense->updateStatus(\CMSApplication::$VAR['expense_id'], \CMSApplication::$VAR['assign_status']); 20 | $this->app->system->page->forcePage('expense', 'status&expense_id='.\CMSApplication::$VAR['expense_id']); 21 | } 22 | 23 | // Build the page with the current status from the database 24 | $this->app->smarty->assign('allowed_to_change_status', false ); // I am not sure this is needed 25 | $this->app->smarty->assign('expense_status', $this->app->components->expense->getRecord(\CMSApplication::$VAR['expense_id'], 'status') ); 26 | $this->app->smarty->assign('expense_statuses', $this->app->components->expense->getStatuses() ); 27 | $this->app->smarty->assign('allowed_to_cancel', $this->app->components->expense->checkRecordAllowsCancel(\CMSApplication::$VAR['expense_id']) ); 28 | $this->app->smarty->assign('allowed_to_delete', $this->app->components->expense->checkRecordAllowsDelete(\CMSApplication::$VAR['expense_id']) ); 29 | $this->app->smarty->assign('expense_selectable_statuses', $this->app->components->expense->getStatuses(true) ); -------------------------------------------------------------------------------- /src/components/help/about.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm('invoice', 'status')) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have an invoice_id 18 | if(!isset(\CMSApplication::$VAR['invoice_id']) || !\CMSApplication::$VAR['invoice_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No Invoice ID supplied.")); 20 | $this->app->system->page->forcePage('invoice', 'search'); 21 | } 22 | 23 | // Cancel Invoice --- add reasso9n for cancel here 24 | if(!$this->app->components->invoice->cancelRecord(\CMSApplication::$VAR['invoice_id'], \CMSApplication::$VAR['qform']['reason_for_cancelling'])) { 25 | 26 | // Load the invoice details page with error 27 | $this->app->system->variables->systemMessagesWrite('success', _gettext("The invoice failed to be cancelled.")); 28 | $this->app->system->page->forcePage('invoice', 'details&invoice_id='.\CMSApplication::$VAR['invoice_id']); 29 | 30 | 31 | } else { 32 | 33 | // Load the invoice search page with success message 34 | $this->app->system->variables->systemMessagesWrite('success', _gettext("The invoice has been cancelled successfully.")); 35 | $this->app->system->page->forcePage('invoice', 'search'); 36 | 37 | } -------------------------------------------------------------------------------- /src/components/invoice/delete.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm('invoice', 'status')) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have an invoice_id 18 | if(!isset(\CMSApplication::$VAR['invoice_id']) || !\CMSApplication::$VAR['invoice_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No Invoice ID supplied.")); 20 | $this->app->system->page->forcePage('invoice', 'search'); 21 | } 22 | 23 | // Delete Invoice 24 | if(!$this->app->components->invoice->deleteRecord(\CMSApplication::$VAR['invoice_id'])) { 25 | 26 | // Load the invoice record on the search page with the error 27 | $this->app->system->variables->systemMessagesWrite('success', _gettext("The invoice failed to be deleted.")); 28 | //$this->app->system->page->forcePage('invoice', 'details&invoice_id='.\CMSApplication::$VAR['invoice_id']); 29 | $this->app->system->page->forcePage('invoice', 'search&search_category=invoice_id&search_term='.\CMSApplication::$VAR['invoice_id']); 30 | 31 | } else { 32 | 33 | // Load the invoice search page with success message 34 | $this->app->system->variables->systemMessagesWrite('success', _gettext("The invoice has been deleted successfully.")); 35 | $this->app->system->page->forcePage('invoice', 'search'); 36 | 37 | } -------------------------------------------------------------------------------- /src/components/invoice/overview.php: -------------------------------------------------------------------------------- 1 | app->smarty->assign('overview_invoices_pending', $this->app->components->invoice->getRecords('invoice_id', 'DESC', 25, false, null, null, null, 'pending') ); 13 | $this->app->smarty->assign('overview_invoices_unpaid', $this->app->components->invoice->getRecords('invoice_id', 'DESC', 25, false, null, null, null, 'unpaid') ); 14 | $this->app->smarty->assign('overview_invoices_partially_paid', $this->app->components->invoice->getRecords('invoice_id', 'DESC', 25, false, null, null, null, 'partially_paid') ); 15 | $this->app->smarty->assign('overview_invoices_in_dispute', $this->app->components->invoice->getRecords('invoice_id', 'DESC', 25, false, null, null, null, 'in_dispute') ); 16 | $this->app->smarty->assign('overview_invoices_overdue', $this->app->components->invoice->getRecords('invoice_id', 'DESC', 25, false, null, null, null, 'overdue') ); 17 | $this->app->smarty->assign('overview_invoices_collections', $this->app->components->invoice->getRecords('invoice_id', 'DESC', 25, false, null, null, null, 'collections') ); 18 | 19 | $this->app->smarty->assign('overview_invoice_stats', $this->app->components->report->getInvoicesStats('current')); 20 | $this->app->smarty->assign('invoice_statuses', $this->app->components->invoice->getStatuses()); -------------------------------------------------------------------------------- /src/components/invoice/prefill_items.php: -------------------------------------------------------------------------------- 1 | app->components->invoice->exportPrefillItemsCsv(); 17 | die(); 18 | } 19 | 20 | // if something submitted 21 | if(isset(\CMSApplication::$VAR['submit'])) { 22 | 23 | // If the export of the invoice prefill items has been requested 24 | if(\CMSApplication::$VAR['submit'] == 'export') { 25 | $this->app->components->invoice->exportPrefillItemsCsv(); 26 | die(); 27 | } 28 | 29 | // New invoice prefill item 30 | if(\CMSApplication::$VAR['submit'] == 'submit') { 31 | $this->app->components->invoice->insertPrefillItems(\CMSApplication::$VAR['qform']['prefill_items']); 32 | } 33 | 34 | // Upload CSV file of prefill items 35 | if(\CMSApplication::$VAR['submit'] == 'import') { 36 | $this->app->components->invoice->uploadPrefillItemsCsv(\CMSApplication::$VAR['empty_prefill_items_table']); 37 | } 38 | 39 | } 40 | 41 | // Build Page 42 | $this->app->smarty->assign('invoice_prefill_items_json', json_encode($this->app->components->invoice->getPrefillItems())); 43 | -------------------------------------------------------------------------------- /src/components/otherincome/cancel.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm('otherincome', 'status')) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have a otherincome_id 18 | if(!isset(\CMSApplication::$VAR['otherincome_id']) || !\CMSApplication::$VAR['otherincome_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No Otherincome ID supplied.")); 20 | $this->app->system->page->forcePage('otherincome', 'search'); 21 | } 22 | 23 | // Cancel the otherincome call 24 | $this->app->components->otherincome->cancelRecord(\CMSApplication::$VAR['otherincome_id']); 25 | 26 | // Load the otherincome search page 27 | $this->app->system->variables->systemMessagesWrite('success', _gettext("Otherincome cancelled successfully.")); 28 | $this->app->system->page->forcePage('otherincome', 'search'); 29 | -------------------------------------------------------------------------------- /src/components/otherincome/delete.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm('otherincome', 'status')) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have a otherincome_id 18 | if(!isset(\CMSApplication::$VAR['otherincome_id']) || !\CMSApplication::$VAR['otherincome_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No Otherincome ID supplied.")); 20 | $this->app->system->page->forcePage('otherincome', 'search'); 21 | } 22 | 23 | // Delete the otherincome function call 24 | $this->app->components->otherincome->deleteRecord(\CMSApplication::$VAR['otherincome_id']); 25 | 26 | // Load the otherincome search page 27 | $this->app->system->variables->systemMessagesWrite('success', _gettext("Otherincome deleted successfully.")); 28 | $this->app->system->page->forcePage('otherincome', 'search'); 29 | -------------------------------------------------------------------------------- /src/components/otherincome/new.php: -------------------------------------------------------------------------------- 1 | app->components->otherincome->insertRecord(); 13 | 14 | // Load the newly created invoice edit page 15 | $this->app->system->page->forcePage('otherincome', 'edit&otherincome_id='.\CMSApplication::$VAR['otherincome_id']); -------------------------------------------------------------------------------- /src/components/otherincome/status.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Voucher ID supplied.")); 14 | $this->app->system->page->forcePage('otherincome', 'search'); 15 | } 16 | 17 | // Update Otherincome Status 18 | if(isset(\CMSApplication::$VAR['change_status'])){ 19 | $this->app->components->otherincome->updateStatus(\CMSApplication::$VAR['otherincome_id'], \CMSApplication::$VAR['assign_status']); 20 | $this->app->system->page->forcePage('otherincome', 'status&otherincome_id='.\CMSApplication::$VAR['otherincome_id']); 21 | } 22 | 23 | // Build the page with the current status from the database 24 | $this->app->smarty->assign('allowed_to_change_status', false ); 25 | $this->app->smarty->assign('otherincome_status', $this->app->components->otherincome->getRecord(\CMSApplication::$VAR['otherincome_id'], 'status') ); 26 | $this->app->smarty->assign('otherincome_statuses', $this->app->components->otherincome->getStatuses() ); 27 | $this->app->smarty->assign('allowed_to_cancel', $this->app->components->otherincome->checkRecordAllowsCancel(\CMSApplication::$VAR['otherincome_id']) ); 28 | $this->app->smarty->assign('allowed_to_delete', $this->app->components->otherincome->checkRecordAllowsDelete(\CMSApplication::$VAR['otherincome_id']) ); 29 | $this->app->smarty->assign('otherincome_selectable_statuses', $this->app->components->otherincome->getStatuses(true)); -------------------------------------------------------------------------------- /src/components/payment/cancel.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm('payment', 'status')) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have an payment_id 18 | if(!isset(\CMSApplication::$VAR['payment_id']) || !\CMSApplication::$VAR['payment_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No Payment ID supplied.")); 20 | $this->app->system->page->forcePage('payment', 'search'); 21 | } 22 | 23 | // Check if payment can be cancelled 24 | if(!$this->app->components->payment->checkRecordAllowsCancel(\CMSApplication::$VAR['payment_id'])) { 25 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("You cannot cancel this payment because its status does not allow it.")); 26 | $this->app->system->page->forcePage('payment', 'details&payment_id='.\CMSApplication::$VAR['payment_id']); 27 | } 28 | 29 | // Build the Payment Environment 30 | $this->app->components->payment->buildPaymentEnvironment('cancel'); 31 | 32 | // Process the payment 33 | $this->app->components->payment->processPayment(); -------------------------------------------------------------------------------- /src/components/payment/delete.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm('payment', 'status')) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have an payment_id 18 | if(!isset(\CMSApplication::$VAR['payment_id']) || !\CMSApplication::$VAR['payment_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No Payment ID supplied.")); 20 | $this->app->system->page->forcePage('payment', 'search'); 21 | } 22 | 23 | // Check if payment can be deleted 24 | if(!$this->app->components->payment->checkRecordAllowsDelete(\CMSApplication::$VAR['payment_id'])) { 25 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("You cannot delete this payment because its status does not allow it.")); 26 | $this->app->system->page->forcePage('payment', 'details&payment_id='.\CMSApplication::$VAR['payment_id']); 27 | } 28 | 29 | // Build the Payment Environment 30 | $this->app->components->payment->buildPaymentEnvironment('delete'); 31 | 32 | // Process the payment 33 | $this->app->components->payment->processPayment(); 34 | -------------------------------------------------------------------------------- /src/components/payment/details.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Payment ID supplied.")); 14 | $this->app->system->page->forcePage('payment', 'search'); 15 | } 16 | 17 | $payment_details = $this->app->components->payment->getRecord(\CMSApplication::$VAR['payment_id']); 18 | 19 | // Build the page 20 | $this->app->smarty->assign('employee_display_name', $this->app->components->user->getRecord($payment_details['employee_id'], 'display_name')); 21 | $this->app->smarty->assign('client_display_name', $this->app->components->client->getRecord($payment_details['client_id'], 'display_name')); 22 | $this->app->smarty->assign('supplier_display_name', $this->app->components->supplier->getRecord($payment_details['supplier_id'], 'display_name')); 23 | $this->app->smarty->assign('payment_types', $this->app->components->payment->getTypes()); 24 | $this->app->smarty->assign('payment_methods', $this->app->components->payment->getMethods()); 25 | $this->app->smarty->assign('payment_directions', $this->app->components->payment->getDirections()); 26 | $this->app->smarty->assign('payment_statuses', $this->app->components->payment->getStatuses()); 27 | $this->app->smarty->assign('payment_creditnote_action_types', $this->app->components->payment->getCreditnoteActionTypes()); 28 | $this->app->smarty->assign('payment_details', $payment_details); -------------------------------------------------------------------------------- /src/components/payment/options.php: -------------------------------------------------------------------------------- 1 | app->components->payment->updateMethodsStatuses(\CMSApplication::$VAR['qform']['payment_methods']); 24 | 25 | // Update Payment details 26 | $this->app->components->payment->updateOptions(\CMSApplication::$VAR['qform']); 27 | 28 | // Assign success message 29 | $this->app->system->variables->systemMessagesWrite('success', _gettext("Payment Options Updated.") ); 30 | 31 | // Log activity 32 | $this->app->system->general->writeRecordToActivityLog(_gettext("Payment Options Updated.")); 33 | 34 | } 35 | 36 | // Build the page 37 | $this->app->smarty->assign('payment_methods', $this->app->components->payment->getMethods() ); 38 | $this->app->smarty->assign('payment_options', $this->app->components->payment->getOptions() ); 39 | -------------------------------------------------------------------------------- /src/components/payment/status.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Payment ID supplied.")); 14 | $this->app->system->page->forcePage('payment', 'search'); 15 | } 16 | 17 | // Update Payment Status 18 | if(isset(\CMSApplication::$VAR['change_status'])){ 19 | $this->app->components->payment->updateStatus(\CMSApplication::$VAR['payment_id'], \CMSApplication::$VAR['assign_status']); 20 | $this->app->system->page->forcePage('payment', 'status&payment_id='.\CMSApplication::$VAR['payment_id']); 21 | } 22 | 23 | // Build the page with the current status from the database 24 | $this->app->smarty->assign('allowed_to_change_status', $this->app->components->payment->checkRecordAllowsManualStatusChange(\CMSApplication::$VAR['payment_id']) ); 25 | $this->app->smarty->assign('payment_status', $this->app->components->payment->getRecord(\CMSApplication::$VAR['payment_id'], 'status') ); 26 | $this->app->smarty->assign('payment_statuses', $this->app->components->payment->getStatuses() ); 27 | $this->app->smarty->assign('allowed_to_cancel', $this->app->components->payment->checkRecordAllowsCancel(\CMSApplication::$VAR['payment_id']) ); 28 | $this->app->smarty->assign('allowed_to_delete', $this->app->components->payment->checkRecordAllowsDelete(\CMSApplication::$VAR['payment_id']) ); 29 | $this->app->smarty->assign('payment_selectable_statuses', $this->app->components->payment->getStatuses(true) ); -------------------------------------------------------------------------------- /src/components/schedule/delete.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm()) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have a schedule_id 18 | if(!isset(\CMSApplication::$VAR['schedule_id']) || !\CMSApplication::$VAR['schedule_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No Schedule ID supplied.")); 20 | $this->app->system->page->forcePage('schedule', 'search'); 21 | } 22 | 23 | // Get workorder_id before deleting the record 24 | \CMSApplication::$VAR['workorder_id'] = $this->app->components->schedule->getRecord(\CMSApplication::$VAR['schedule_id'], 'workorder_id'); 25 | 26 | // Delete the schedule 27 | $this->app->components->schedule->deleteRecord(\CMSApplication::$VAR['schedule_id']); 28 | 29 | // load schedule search page 30 | $this->app->system->variables->systemMessagesWrite('success', _gettext("Schedule record has been deleted.")); 31 | $this->app->system->page->forcePage('workorder', 'details&workorder_id='.\CMSApplication::$VAR['workorder_id']); 32 | -------------------------------------------------------------------------------- /src/components/schedule/details.php: -------------------------------------------------------------------------------- 1 | app->smarty->assign('client_details', $this->app->components->client->getRecord($this->app->components->schedule->getRecord(\CMSApplication::$VAR['schedule_id'], 'client_id'))); 13 | $this->app->smarty->assign('schedule_details', $this->app->components->schedule->getRecord(\CMSApplication::$VAR['schedule_id'])); 14 | $this->app->smarty->assign('employee_display_name', $this->app->components->user->getRecord($this->app->components->schedule->getRecord(\CMSApplication::$VAR['schedule_id'], 'employee_id'), 'display_name') ); -------------------------------------------------------------------------------- /src/components/setup/choice.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm('setup', 'choice', 'setup')) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Define the setup type for smarty - currently only used for 'upgrade' 18 | $this->app->smarty->assign('setup_type', \CMSApplication::$VAR['setup_type'] ?? null); 19 | 20 | // Create a Setup Object 21 | $qsetup = new Setup(\CMSApplication::$VAR); 22 | 23 | // Get Compatibility Results 24 | $this->app->smarty->assign('compatibility_results', $qsetup->checkServerEnviromentCompatibility()); -------------------------------------------------------------------------------- /src/components/supplier/cancel.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm('supplier', 'status')) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have a supplier_id 18 | if(!isset(\CMSApplication::$VAR['supplier_id']) || !\CMSApplication::$VAR['supplier_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No Supplier ID supplied.")); 20 | $this->app->system->page->forcePage('supplier', 'search'); 21 | } 22 | 23 | // Cancel the supplier function call 24 | $this->app->components->supplier->cancelRecord(\CMSApplication::$VAR['supplier_id']); 25 | 26 | // Load the supplier search page 27 | $this->app->system->variables->systemMessagesWrite('success', _gettext("Supplier cancelled successfully.")); 28 | $this->app->system->page->forcePage('supplier', 'search'); 29 | -------------------------------------------------------------------------------- /src/components/supplier/delete.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm('supplier', 'status')) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have a supplier_id 18 | if(!isset(\CMSApplication::$VAR['supplier_id']) || !\CMSApplication::$VAR['supplier_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No Supplier ID supplied.")); 20 | $this->app->system->page->forcePage('supplier', 'search'); 21 | } 22 | 23 | // Delete the supplier function call 24 | $this->app->components->supplier->deleteRecord(\CMSApplication::$VAR['supplier_id']); 25 | 26 | // Load the supplier search page 27 | $this->app->system->variables->systemMessagesWrite('success', _gettext("Supplier deleted successfully.")); 28 | $this->app->system->page->forcePage('supplier', 'search'); 29 | -------------------------------------------------------------------------------- /src/components/supplier/details.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Supplier ID supplied.")); 14 | $this->app->system->page->forcePage('supplier', 'search'); 15 | } 16 | 17 | // Build the page 18 | $this->app->smarty->assign('supplier_statuses', $this->app->components->supplier->getStatuses() ); 19 | $this->app->smarty->assign('supplier_types', $this->app->components->supplier->getTypes()); 20 | $this->app->smarty->assign('supplier_details', $this->app->components->supplier->getRecord(\CMSApplication::$VAR['supplier_id'])); 21 | $this->app->smarty->assign('allowed_to_create_creditnote', $this->app->components->creditnote->checkRecordCanBeCreated(null, null, \CMSApplication::$VAR['supplier_id'], null)); 22 | 23 | $this->app->smarty->assign('creditnote_types', $this->app->components->creditnote->getTypes()); 24 | $this->app->smarty->assign('creditnote_statuses', $this->app->components->creditnote->getStatuses()); 25 | $this->app->smarty->assign('display_creditnotes', $this->app->components->creditnote->getRecords('creditnote_id', 'DESC', 25, false, null, null, null, null, null, null, \CMSApplication::$VAR['supplier_id'])); -------------------------------------------------------------------------------- /src/components/supplier/new.php: -------------------------------------------------------------------------------- 1 | app->components->supplier->insertRecord(\CMSApplication::$VAR['qform']); 16 | 17 | if (isset(\CMSApplication::$VAR['submitandnew'])) { 18 | 19 | // load the new supplier page 20 | $this->app->system->variables->systemMessagesWrite('success', _gettext("Supplier added successfully.").' '._gettext("ID").': '.\CMSApplication::$VAR['supplier_id']); 21 | $this->app->system->page->forcePage('supplier', 'new'); 22 | 23 | } else { 24 | 25 | // load the supplier details page 26 | $this->app->system->variables->systemMessagesWrite('success', _gettext("Supplier added successfully.").' '._gettext("ID").': '.\CMSApplication::$VAR['supplier_id']); 27 | $this->app->system->page->forcePage('supplier', 'details&supplier_id='.\CMSApplication::$VAR['supplier_id']); 28 | 29 | } 30 | 31 | } 32 | 33 | // Build the page 34 | $this->app->smarty->assign('supplier_types', $this->app->components->supplier->getTypes()); -------------------------------------------------------------------------------- /src/components/supplier/status.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Supplier ID supplied.")); 14 | $this->app->system->page->forcePage('supplier', 'search'); 15 | } 16 | 17 | // Update Supplier Status 18 | if(isset(\CMSApplication::$VAR['change_status'])){ 19 | $this->app->system->general->updateStatus(\CMSApplication::$VAR['supplier_id'], \CMSApplication::$VAR['assign_status']); 20 | $this->app->system->page->forcePage('supplier', 'status&supplier_id='.\CMSApplication::$VAR['supplier_id']); 21 | } 22 | 23 | // Build the page with the current status from the database 24 | $this->app->smarty->assign('allowed_to_change_status', false ); 25 | $this->app->smarty->assign('supplier_status', $this->app->components->supplier->getRecord(\CMSApplication::$VAR['supplier_id'], 'status') ); 26 | $this->app->smarty->assign('supplier_statuses', $this->app->components->supplier->getStatuses() ); 27 | $this->app->smarty->assign('allowed_to_cancel', false ); 28 | $this->app->smarty->assign('allowed_to_delete', $this->app->components->supplier->checkRecordAllowsDelete(\CMSApplication::$VAR['supplier_id']) ); 29 | $this->app->smarty->assign('supplier_selectable_statuses', $this->app->components->supplier->getStatuses(true) ); -------------------------------------------------------------------------------- /src/components/user/delete.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm()) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have an user_id 18 | if(!isset(\CMSApplication::$VAR['user_id']) || !\CMSApplication::$VAR['user_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No User ID supplied.")); 20 | $this->app->system->page->forcePage('user', 'search'); 21 | } 22 | 23 | // Run the delete function 24 | if(!$this->app->components->user->deleteRecord(\CMSApplication::$VAR['user_id'])) { 25 | 26 | // load the user details page 27 | $this->app->system->page->forcePage('user', 'details&user_id='.\CMSApplication::$VAR['user_id']); 28 | 29 | } else { 30 | 31 | // load the user search page 32 | $this->app->system->variables->systemMessagesWrite('success', _gettext("User record deleted.")); 33 | $this->app->system->page->forcePage('user', 'search'); 34 | 35 | } -------------------------------------------------------------------------------- /src/components/user/details.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No User ID supplied.")); 17 | $this->app->system->page->forcePage('user', 'search'); 18 | } 19 | 20 | // Build the page 21 | 22 | $this->app->smarty->assign('user_details', $this->app->components->user->getRecord(\CMSApplication::$VAR['user_id']) ); 23 | $this->app->smarty->assign('client_display_name', $this->app->components->client->getRecord($this->app->components->user->getRecord(\CMSApplication::$VAR['user_id'], 'client_id'), 'client_display_name') ); 24 | $this->app->smarty->assign('usergroups', $this->app->components->user->getUsergroups() ); 25 | $this->app->smarty->assign('user_workorders', $this->app->components->workorder->getRecords('workorder_id', 'DESC', 25, false, \CMSApplication::$VAR['page_no'], null, null, 'open', \CMSApplication::$VAR['user_id'])); 26 | $this->app->smarty->assign('user_locations', $this->app->components->user->getLocations()); -------------------------------------------------------------------------------- /src/components/voucher/delete.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm('voucher', 'status')) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have an voucher_id 18 | if(!isset(\CMSApplication::$VAR['voucher_id']) || !\CMSApplication::$VAR['voucher_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No Voucher ID supplied.")); 20 | $this->app->system->page->forcePage('voucher', 'search'); 21 | } 22 | 23 | // Get invoice_id before deleting 24 | $invoice_id = $this->app->components->voucher->getRecord(\CMSApplication::$VAR['voucher_id'], 'invoice_id'); 25 | 26 | // Delete the Voucher 27 | if(!$this->app->components->voucher->deleteRecord(\CMSApplication::$VAR['voucher_id'])) { 28 | 29 | // Load the relevant invoice page with fail message 30 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("Voucher failed to be deleted.")); 31 | $this->app->system->page->forcePage('invoice', 'details&invoice_id='.$invoice_id); 32 | 33 | } else { 34 | 35 | // Recalculate the invoice totals and update them 36 | $this->app->components->invoice->recalculateTotals($invoice_id); 37 | 38 | // Load the relevant invoice page with success message 39 | $this->app->system->variables->systemMessagesWrite('success', _gettext("Voucher deleted successfully.")); 40 | $this->app->system->page->forcePage('invoice', 'details&invoice_id='.$invoice_id); 41 | } -------------------------------------------------------------------------------- /src/components/voucher/details.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Voucher ID supplied.")); 14 | $this->app->system->page->forcePage('voucher', 'search'); 15 | } 16 | 17 | $voucher_details = $this->app->components->voucher->getRecord(\CMSApplication::$VAR['voucher_id']); 18 | 19 | // if the voucher is deleted return to the search page 20 | if($voucher_details['status'] === 'deleted') { 21 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("Voucher").' '.\CMSApplication::$VAR['voucher_id'].' '._gettext("has been deleted and can no longer be accessed.")); 22 | $this->app->system->page->forcePage('voucher', 'search'); 23 | } 24 | 25 | // Build the page 26 | $this->app->smarty->assign('client_details', $this->app->components->client->getRecord($voucher_details['client_id']) ); 27 | $this->app->smarty->assign('employee_display_name', $this->app->components->user->getRecord($voucher_details['employee_id'], 'display_name') ); 28 | $this->app->smarty->assign('voucher_statuses', $this->app->components->voucher->getStatuses() ); 29 | $this->app->smarty->assign('voucher_types', $this->app->components->voucher->getTypes() ); 30 | $this->app->smarty->assign('voucher_details', $voucher_details ); -------------------------------------------------------------------------------- /src/components/voucher/status.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Voucher ID supplied.")); 14 | $this->app->system->page->forcePage('voucher', 'search'); 15 | } 16 | 17 | // Update Voucher Status 18 | if(isset(\CMSApplication::$VAR['change_status'])){ 19 | $this->app->components->voucher->updateStatus(\CMSApplication::$VAR['voucher_id'], \CMSApplication::$VAR['assign_status']); 20 | $this->app->system->page->forcePage('voucher', 'status&voucher_id='.\CMSApplication::$VAR['voucher_id']); 21 | } 22 | 23 | // Build the page with the current status from the database 24 | $this->app->smarty->assign('allowed_to_change_status', $this->app->components->voucher->checkRecordAllowsManualStatusChange(\CMSApplication::$VAR['voucher_id']) ); 25 | $this->app->smarty->assign('voucher_status', $this->app->components->voucher->getRecord(\CMSApplication::$VAR['voucher_id'], 'status') ); 26 | $this->app->smarty->assign('voucher_statuses', $this->app->components->voucher->getStatuses() ); 27 | $this->app->smarty->assign('allowed_to_delete', $this->app->components->voucher->checkRecordAllowsDelete(\CMSApplication::$VAR['voucher_id']) ); 28 | $this->app->smarty->assign('voucher_selectable_statuses', $this->app->components->voucher->getStatuses(true) ); -------------------------------------------------------------------------------- /src/components/workorder/autosuggest_scope.php: -------------------------------------------------------------------------------- 1 | 0) { 14 | 15 | // BuildPage will only hold the html for this scope table 16 | $pagePayload .= $this->app->components->workorder->getScopeSuggestions(\CMSApplication::$VAR['posted_scope_string']); 17 | 18 | } 19 | 20 | // This page should be treated as RAW HTML 21 | \CMSApplication::$VAR['themeVar'] = 'rawHtml'; 22 | 23 | // Skip page logging 24 | if(!defined('SKIP_LOGGING')) { 25 | define('SKIP_LOGGING', true); 26 | } -------------------------------------------------------------------------------- /src/components/workorder/delete.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm('workorder', 'status')) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have a workorder_id 18 | if(!isset(\CMSApplication::$VAR['workorder_id']) || !\CMSApplication::$VAR['workorder_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No Workorder ID supplied.")); 20 | $this->app->system->page->forcePage('workorder', 'search'); 21 | } 22 | 23 | // Delete the Workorder 24 | if(!$this->app->components->workorder->deleteRecord(\CMSApplication::$VAR['workorder_id'])) { 25 | 26 | // load the staus page 27 | $this->app->system->page->forcePage('workorder', 'status', 'workorder_id='.\CMSApplication::$VAR['workorder_id']); 28 | 29 | } else { 30 | 31 | 32 | // load the workorder search page 33 | $this->app->system->variables->systemMessagesWrite('success', _gettext("Work Order has been deleted.")); 34 | $this->app->system->page->forcePage('workorder', 'search'); 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/components/workorder/details_edit_comment.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Workorder ID supplied.")); 14 | $this->app->system->page->forcePage('workorder', 'search'); 15 | } 16 | 17 | // Check if we can edit the workorder comment 18 | if($this->app->components->workorder->getRecord(\CMSApplication::$VAR['workorder_id'], 'is_closed')) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("Cannot edit the comment of a closed Work Order.")); 20 | $this->app->system->page->forcePage('workorder', 'details&workorder_id='.\CMSApplication::$VAR['workorder_id']); 21 | } 22 | 23 | // If updated comment are submitted 24 | if(isset(\CMSApplication::$VAR['submit'])) { 25 | 26 | // update the workorder comment in the database 27 | $this->app->components->workorder->updateComment(\CMSApplication::$VAR['workorder_id'], \CMSApplication::$VAR['comment']); 28 | 29 | // load the workorder details page 30 | $this->app->system->variables->systemMessagesWrite('success', _gettext("Comment has been updated.")); 31 | $this->app->system->page->forcePage('workorder', 'details&workorder_id='.\CMSApplication::$VAR['workorder_id']); 32 | 33 | } 34 | 35 | // Build the page 36 | $this->app->smarty->assign('comment', $this->app->components->workorder->getRecord(\CMSApplication::$VAR['workorder_id'], 'comment')); -------------------------------------------------------------------------------- /src/components/workorder/new.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Client ID supplied.")); 17 | $this->app->system->page->forcePage('client', 'search'); 18 | } 19 | 20 | // If a workorder is submitted 21 | if(isset(\CMSApplication::$VAR['submit'])){ 22 | 23 | // insert the submitted workorder and return it's id 24 | \CMSApplication::$VAR['workorder_id'] = $this->app->components->workorder->insertRecord(\CMSApplication::$VAR['client_id'], \CMSApplication::$VAR['scope'], \CMSApplication::$VAR['description'], \CMSApplication::$VAR['comment']); 25 | 26 | // If workorder is to be assigned to an employee 27 | if(\CMSApplication::$VAR['assign_to_employee'] === '1') { 28 | $this->app->components->workorder->assignToEmployee(\CMSApplication::$VAR['workorder_id'], $this->app->user->login_user_id); 29 | } 30 | 31 | // load the workorder details page 32 | $this->app->system->variables->systemMessagesWrite('success', _gettext("New Work Order created.")); 33 | $this->app->system->page->forcePage('workorder', 'details&workorder_id='.\CMSApplication::$VAR['workorder_id']); 34 | 35 | } 36 | 37 | // Build the page 38 | $this->app->smarty->assign('client_display_name', $this->app->components->client->getRecord(\CMSApplication::$VAR['client_id'], 'display_name')); -------------------------------------------------------------------------------- /src/components/workorder/note_delete.php: -------------------------------------------------------------------------------- 1 | app->system->security->checkPageAccessedViaQwcrm()) { 13 | header('HTTP/1.1 403 Forbidden'); 14 | die(_gettext("No Direct Access Allowed.")); 15 | } 16 | 17 | // Check if we have a workorder_note_id 18 | if(!isset(\CMSApplication::$VAR['workorder_note_id']) || !\CMSApplication::$VAR['workorder_note_id']) { 19 | $this->app->system->variables->systemMessagesWrite('danger', _gettext("No Work Order Note ID supplied.")); 20 | $this->app->system->page->forcePage('workorder', 'search'); 21 | } 22 | 23 | // Get the workorder_id before we delete the record 24 | $workorder_id = $this->app->components->workorder->getNote(\CMSApplication::$VAR['workorder_note_id'], 'workorder_id'); 25 | 26 | // Delete the record 27 | $this->app->components->workorder->deleteNote(\CMSApplication::$VAR['workorder_note_id']); 28 | 29 | // Reload the workorder details page 30 | $this->app->system->variables->systemMessagesWrite('success', _gettext("The note has been deleted.")); 31 | $this->app->system->page->forcePage('workorder', 'details&workorder_id='.$workorder_id); -------------------------------------------------------------------------------- /src/components/workorder/note_edit.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Work Order Note ID supplied.")); 14 | $this->app->system->page->forcePage('workorder', 'search'); 15 | } 16 | 17 | // Get teh work order note details 18 | $workorder_note_details = $this->app->components->workorder->getNote(\CMSApplication::$VAR['workorder_note_id']); 19 | 20 | // If record submitted for updating 21 | if(isset(\CMSApplication::$VAR['submit'])) { 22 | 23 | // update the workorder note 24 | $this->app->components->workorder->updateNote(\CMSApplication::$VAR['workorder_note_id'], \CMSApplication::$VAR['note']); 25 | 26 | // load the workorder details page 27 | $this->app->system->variables->systemMessagesWrite('success', _gettext("The note has been updated.")); 28 | $this->app->system->page->forcePage('workorder', 'details&workorder_id='.$workorder_note_details['workorder_id']); 29 | 30 | } 31 | 32 | // Build the page 33 | $this->app->smarty->assign('workorder_note_details', $workorder_note_details); 34 | -------------------------------------------------------------------------------- /src/components/workorder/note_new.php: -------------------------------------------------------------------------------- 1 | app->system->variables->systemMessagesWrite('danger', _gettext("No Workorder ID supplied.")); 14 | $this->app->system->page->forcePage('workorder', 'search'); 15 | } 16 | 17 | // If a note is submitted 18 | if(isset(\CMSApplication::$VAR['submit'])){ 19 | 20 | // insert the note into the database 21 | $this->app->components->workorder->insertNote(\CMSApplication::$VAR['workorder_id'], \CMSApplication::$VAR['workorder_note']); 22 | 23 | // load the workorder details page 24 | $this->app->system->variables->systemMessagesWrite('success', _gettext("The note has been inserted.")); 25 | $this->app->system->page->forcePage('workorder', 'details&workorder_id='.\CMSApplication::$VAR['workorder_id']); 26 | 27 | } -------------------------------------------------------------------------------- /src/cron.php: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | getTemplateDir() : $smarty->template_dir; 25 | $path_param = isset($params['path']) ? $params['path'] : ''; 26 | $domain = isset($params['domain']) ? $params['domain'] : 'messages'; 27 | $stack_operation = isset($params['stack']) ? $params['stack'] : 'push'; 28 | 29 | foreach ((array)$template_dirs as $template_dir) { 30 | $path = $template_dir . $path_param; 31 | if (is_dir($path)) { 32 | break; 33 | } 34 | } 35 | 36 | if (!$path && $stack_operation != 'pop') { 37 | trigger_error("Directory for locales not found (path='{$path_param}')", E_USER_ERROR); 38 | } 39 | 40 | if ($stack_operation == 'push') { 41 | $stack[] = array($domain, $path); 42 | 43 | } elseif ($stack_operation == 'pop') { 44 | if (count($stack) > 1) { 45 | array_pop($stack); 46 | } 47 | list($domain, $path) = end($stack); 48 | } else { 49 | trigger_error("Unknown stack operation '{$stack_operation}'", E_USER_ERROR); 50 | } 51 | 52 | _bind_textdomain_codeset($domain, 'UTF-8'); 53 | _bindtextdomain($domain, $path); 54 | _textdomain($domain); 55 | } 56 | -------------------------------------------------------------------------------- /src/libraries/custom/smarty/plugins/modifier.creditnoteadinfodisplay.php: -------------------------------------------------------------------------------- 1 | $value) { 42 | 43 | // Make sure there is a value 44 | if(!$value) {continue;} 45 | 46 | // Apply modifications as required 47 | $html .= ''._gettext($key).': '.$value.'
'; 48 | $contentFlag = true; 49 | 50 | } 51 | 52 | $html = rtrim($html, '
'); // Remove the last
if present 53 | 54 | // If there is no additional info, return false 55 | if(!$contentFlag) { 56 | $html = false; 57 | } 58 | 59 | return $html; 60 | 61 | } -------------------------------------------------------------------------------- /src/libraries/qframework/Sections/Components.php: -------------------------------------------------------------------------------- 1 | app = \Factory::getApplication(); 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /src/libraries/qframework/Sections/Modules.php: -------------------------------------------------------------------------------- 1 | app = \Factory::getApplication(); 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /src/libraries/qframework/Sections/Plugins.php: -------------------------------------------------------------------------------- 1 | app = \Factory::getApplication(); 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /src/libraries/qframework/Sections/System.php: -------------------------------------------------------------------------------- 1 | app = \Factory::getApplication(); 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /src/libraries/qframework/joomla/libraries/joomla/session/storage/none.php: -------------------------------------------------------------------------------- 1 | 7 | * @license GNU General Public License version 2 or later; see LICENSE 8 | */ 9 | 10 | defined('JPATH_PLATFORM') or die; 11 | 12 | /** 13 | * File session handler for PHP 14 | * 15 | * @link https://www.php.net/manual/en/function.session-set-save-handler.php 16 | * @since 1.7.0 17 | * @deprecated 4.0 The CMS' Session classes will be replaced with the `joomla/session` package 18 | */ 19 | class JSessionStorageNone extends JSessionStorage 20 | { 21 | /** 22 | * Register the functions of this class with PHP's session handler 23 | * 24 | * @return void 25 | * 26 | * @since 1.7.0 27 | */ 28 | public function register() 29 | { 30 | // Default session handler is `files` 31 | } 32 | } -------------------------------------------------------------------------------- /src/logs/.htaccess: -------------------------------------------------------------------------------- 1 | Options -Indexes 2 | -------------------------------------------------------------------------------- /src/media/.htaccess: -------------------------------------------------------------------------------- 1 | Options -Indexes 2 | -------------------------------------------------------------------------------- /src/media/qw-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/media/qw-logo.png -------------------------------------------------------------------------------- /src/robots.txt.dist: -------------------------------------------------------------------------------- 1 | # If the QWcrm site is installed within a folder such as at 2 | # e.g. www.example.com/qwcrm/ the robots.txt file MUST be 3 | # moved to the site root at e.g. www.example.com/robots.txt 4 | # AND the qwcrm folder name MUST be prefixed to the disallowed 5 | # path, e.g. the Disallow rule for the /administrator/ folder 6 | # MUST be changed to read Disallow: /qwcrm/administrator/ 7 | # 8 | # For more information about the robots.txt standard, see: 9 | # http://www.robotstxt.org/orig.html 10 | # 11 | # For syntax checking, see: 12 | # http://tool.motoricerca.info/robots-checker.phtml 13 | 14 | # No robots should visit any URL on this site 15 | User-agent: * 16 | Disallow: / 17 | 18 | # Selective blocking 19 | #User-agent: * 20 | #Disallow: /cache/ 21 | #Disallow: /includes/ 22 | #Disallow: /language/ 23 | #Disallow: /libraries/ 24 | #Disallow: /logs/ 25 | #Disallow: /media/ 26 | #Disallow: /modules/ 27 | #Disallow: /themes/ 28 | 29 | #Sitemap: http://www.example.co.uk/sitemap.xml -------------------------------------------------------------------------------- /src/setup/upgrade/3_1_0/break.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/setup/upgrade/3_1_0/break.txt -------------------------------------------------------------------------------- /src/setup/upgrade/3_1_1/upgrade_database.sql: -------------------------------------------------------------------------------- 1 | /* 2 | * @package QWcrm 3 | * @author Jon Brown https://quantumwarp.com/ 4 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 5 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 6 | */ -------------------------------------------------------------------------------- /src/setup/upgrade/3_1_3/upgrade_database.sql: -------------------------------------------------------------------------------- 1 | /* 2 | * @package QWcrm 3 | * @author Jon Brown https://quantumwarp.com/ 4 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 5 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 6 | */ 7 | 8 | -- 9 | -- Correct Payment Status on some records, issue introduced in an earlier version and fixed but records were never corrected 10 | -- 11 | 12 | UPDATE `#__invoice_records` 13 | SET `status` = 'paid', `closed_on` = `last_active`, `is_closed` = 1 14 | WHERE `status` = 'partially_paid' AND `balance` = 0 AND `unit_gross` > 0; 15 | 16 | UPDATE `#__refund_records` 17 | SET `status` = 'paid', `closed_on` = `last_active` 18 | WHERE `status` = 'partially_paid' AND `balance` = 0 AND `unit_gross` > 0; 19 | 20 | UPDATE `#__expense_records` 21 | SET `status` = 'paid', `closed_on` = `last_active` 22 | WHERE `status` = 'partially_paid' AND `balance` = 0 AND `unit_gross` > 0; 23 | 24 | UPDATE `#__otherincome_records` 25 | SET `status` = 'paid', `closed_on` = `last_active` 26 | WHERE `status` = 'partially_paid' AND `balance` = 0 AND `unit_gross` > 0; 27 | 28 | -- 29 | -- Remove some erroneous indexes in #__user_keys 30 | -- 31 | 32 | ALTER TABLE `#__user_keys` DROP INDEX `series_2`; 33 | ALTER TABLE `#__user_keys` DROP INDEX `series_3`; -------------------------------------------------------------------------------- /src/themes/.htaccess: -------------------------------------------------------------------------------- 1 | # Block direct access to template files 2 | 3 | Deny from all 4 | -------------------------------------------------------------------------------- /src/themes/default/fonts/04B_08__.TTF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/fonts/04B_08__.TTF -------------------------------------------------------------------------------- /src/themes/default/fonts/04B_09__.TTF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/fonts/04B_09__.TTF -------------------------------------------------------------------------------- /src/themes/default/images/MC.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/MC.gif -------------------------------------------------------------------------------- /src/themes/default/images/Visa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/Visa.gif -------------------------------------------------------------------------------- /src/themes/default/images/back_24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/back_24.gif -------------------------------------------------------------------------------- /src/themes/default/images/bank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/bank.gif -------------------------------------------------------------------------------- /src/themes/default/images/btn_paynow_LG.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/btn_paynow_LG.gif -------------------------------------------------------------------------------- /src/themes/default/images/buttons/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/buttons/Thumbs.db -------------------------------------------------------------------------------- /src/themes/default/images/buttons/ics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/buttons/ics.png -------------------------------------------------------------------------------- /src/themes/default/images/closed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/closed.gif -------------------------------------------------------------------------------- /src/themes/default/images/cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/cross.png -------------------------------------------------------------------------------- /src/themes/default/images/csv_example_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/csv_example_screenshot.png -------------------------------------------------------------------------------- /src/themes/default/images/detail01.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/detail01.gif -------------------------------------------------------------------------------- /src/themes/default/images/detail02.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/detail02.gif -------------------------------------------------------------------------------- /src/themes/default/images/fastf_24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/fastf_24.gif -------------------------------------------------------------------------------- /src/themes/default/images/forwd_24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/forwd_24.gif -------------------------------------------------------------------------------- /src/themes/default/images/gblnav_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/gblnav_left.gif -------------------------------------------------------------------------------- /src/themes/default/images/glblnav_selected.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/glblnav_selected.gif -------------------------------------------------------------------------------- /src/themes/default/images/glbnav_background.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/glbnav_background.gif -------------------------------------------------------------------------------- /src/themes/default/images/glbnav_right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/glbnav_right.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/Calendar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/Calendar.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/back.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/back.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/down.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/email.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/email.jpg -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/fileprint.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/fileprint.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/forward.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/forward.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/help.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/help.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/next.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/next.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/pdf_small.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/pdf_small.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/small_clock.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/small_clock.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/small_edit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/small_edit.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/small_edit_employee.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/small_edit_employee.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/small_new_client.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/small_new_client.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/small_new_invoice_only.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/small_new_invoice_only.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/small_new_work_order.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/small_new_work_order.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/stop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/stop.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/up.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/view.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/view.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/16x16/viewmag.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/16x16/viewmag.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/3floppy_mount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/3floppy_mount.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/bookmark.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/bug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/bug.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/button_ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/button_ok.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/cheque.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/cheque.jpeg -------------------------------------------------------------------------------- /src/themes/default/images/icons/clients.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/clients.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/clock.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/clock.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/close.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/close.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/comment.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/control.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/control.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/db_restore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/db_restore.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/db_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/db_save.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/decrypted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/decrypted.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/delete.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/delete.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/delete_employees.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/delete_employees.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/deposit.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/deposit.jpeg -------------------------------------------------------------------------------- /src/themes/default/images/icons/edit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/edit.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/edit_employee.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/edit_employee.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/employee.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/employee.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/encrypted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/encrypted.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/filefind.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/filefind.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/gift.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/gift.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/home.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/home.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/invoice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/invoice.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/key.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/logout.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/logout.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/map.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/money.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/money.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/new.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/new.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/new_customer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/new_customer.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/new_employees.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/new_employees.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/new_note.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/new_note.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/new_work_order.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/new_work_order.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/next.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/next.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/note.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/pdf.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/pdf_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/pdf_small.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/php.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/php.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/previous.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/previous.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/print.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/print.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/reports.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/reports.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/status.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/status.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/view.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/view.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/warning.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/warning.gif -------------------------------------------------------------------------------- /src/themes/default/images/icons/web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/web.png -------------------------------------------------------------------------------- /src/themes/default/images/icons/workorders.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/icons/workorders.gif -------------------------------------------------------------------------------- /src/themes/default/images/index03.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index03.gif -------------------------------------------------------------------------------- /src/themes/default/images/index07.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index07.gif -------------------------------------------------------------------------------- /src/themes/default/images/index13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index13.gif -------------------------------------------------------------------------------- /src/themes/default/images/index14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index14.gif -------------------------------------------------------------------------------- /src/themes/default/images/index15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index15.gif -------------------------------------------------------------------------------- /src/themes/default/images/index16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index16.gif -------------------------------------------------------------------------------- /src/themes/default/images/index17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index17.gif -------------------------------------------------------------------------------- /src/themes/default/images/index18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index18.gif -------------------------------------------------------------------------------- /src/themes/default/images/index19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index19.gif -------------------------------------------------------------------------------- /src/themes/default/images/index20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index20.gif -------------------------------------------------------------------------------- /src/themes/default/images/index21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index21.gif -------------------------------------------------------------------------------- /src/themes/default/images/index22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index22.gif -------------------------------------------------------------------------------- /src/themes/default/images/index26.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index26.jpg -------------------------------------------------------------------------------- /src/themes/default/images/index29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index29.jpg -------------------------------------------------------------------------------- /src/themes/default/images/index30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index30.gif -------------------------------------------------------------------------------- /src/themes/default/images/index31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index31.gif -------------------------------------------------------------------------------- /src/themes/default/images/index41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index41.gif -------------------------------------------------------------------------------- /src/themes/default/images/index42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index42.gif -------------------------------------------------------------------------------- /src/themes/default/images/index43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/index43.gif -------------------------------------------------------------------------------- /src/themes/default/images/inside01.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/inside01.gif -------------------------------------------------------------------------------- /src/themes/default/images/key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/key.png -------------------------------------------------------------------------------- /src/themes/default/images/list.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/list.gif -------------------------------------------------------------------------------- /src/themes/default/images/list01.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/list01.gif -------------------------------------------------------------------------------- /src/themes/default/images/move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/move.png -------------------------------------------------------------------------------- /src/themes/default/images/news.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/news.png -------------------------------------------------------------------------------- /src/themes/default/images/open.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/open.gif -------------------------------------------------------------------------------- /src/themes/default/images/paymate/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/paymate/Thumbs.db -------------------------------------------------------------------------------- /src/themes/default/images/paymate/paymate_cc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/paymate/paymate_cc.gif -------------------------------------------------------------------------------- /src/themes/default/images/paypal/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/paypal/Thumbs.db -------------------------------------------------------------------------------- /src/themes/default/images/paypal/cc_paypal.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/paypal/cc_paypal.gif -------------------------------------------------------------------------------- /src/themes/default/images/paypal/donate.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/paypal/donate.gif -------------------------------------------------------------------------------- /src/themes/default/images/paypal/pay_now.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/paypal/pay_now.gif -------------------------------------------------------------------------------- /src/themes/default/images/paypal/pay_now.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/paypal/pay_now.png -------------------------------------------------------------------------------- /src/themes/default/images/request.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/request.png -------------------------------------------------------------------------------- /src/themes/default/images/rewnd_24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/rewnd_24.gif -------------------------------------------------------------------------------- /src/themes/default/images/sdmenu/bottom.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/sdmenu/bottom.gif -------------------------------------------------------------------------------- /src/themes/default/images/sdmenu/collapsed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/sdmenu/collapsed.gif -------------------------------------------------------------------------------- /src/themes/default/images/sdmenu/expanded.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/sdmenu/expanded.gif -------------------------------------------------------------------------------- /src/themes/default/images/sdmenu/toptitle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/sdmenu/toptitle.gif -------------------------------------------------------------------------------- /src/themes/default/images/searchbar-eBay-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/searchbar-eBay-logo.png -------------------------------------------------------------------------------- /src/themes/default/images/spacer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/spacer.gif -------------------------------------------------------------------------------- /src/themes/default/images/swsh.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/swsh.gif -------------------------------------------------------------------------------- /src/themes/default/images/tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/tick.png -------------------------------------------------------------------------------- /src/themes/default/images/title.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/title.gif -------------------------------------------------------------------------------- /src/themes/default/images/upArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/upArrow.png -------------------------------------------------------------------------------- /src/themes/default/images/xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/xml.png -------------------------------------------------------------------------------- /src/themes/default/images/xp_button_blue.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/images/xp_button_blue.gif -------------------------------------------------------------------------------- /src/themes/default/js/components/expense_other.js: -------------------------------------------------------------------------------- 1 | /* expense_other.js */ 2 | 3 | $(document).ready(function() { 4 | 5 | {if !'/^vat_/'|preg_match:$qw_tax_system} 6 | 7 | // Non-VAT Auto Calculations - Automatically populate Net with the Gross figure before submission 8 | $('.amend_values').submit(function( event ) { 9 | 10 | // Get input field values 11 | let unit_gross = +$('#unit_gross').val(); 12 | 13 | // Set the unit_net to match the unit_gross input value 14 | $('#unit_net').val(parseFloat(unit_gross).toFixed(2)); 15 | 16 | } ); 17 | 18 | {/if} 19 | 20 | } ); 21 | 22 | // VAT Auto Calculations - Automatically calculate totals 23 | function calculateTotals(fieldName) { 24 | 25 | {if '/^vat_/'|preg_match:$qw_tax_system} 26 | 27 | // Get input values 28 | let unit_net = $('#unit_net').val(); 29 | let unit_tax = $('#unit_tax').val(); 30 | 31 | // Prevent NaN 32 | unit_net = !unit_net ? '0' : unit_net; 33 | unit_tax = !unit_tax ? '0' : unit_tax; 34 | 35 | // Calculations 36 | let unit_gross = parseFloat(unit_net) + parseFloat(unit_tax); 37 | 38 | // Update values onscreen 39 | if(fieldName !== 'unit_gross') { 40 | $('#unit_gross').val(parseFloat(unit_gross).toFixed(2)); 41 | } 42 | 43 | {else} 44 | return; 45 | {/if} 46 | } -------------------------------------------------------------------------------- /src/themes/default/js/components/workorder.js: -------------------------------------------------------------------------------- 1 | /* workorder.js */ 2 | 3 | // New Workorder Scope Autosuggest 4 | function lookupSuggestions(scope_input_string) { 5 | 6 | // if scope input string is less than 3 do nothing 7 | if(scope_input_string.length <= 3) { 8 | $('#suggestions').hide(); 9 | return; 10 | } 11 | 12 | // If scope input string is greater than 10, hide the suggestion box. - if people keep typing it will dissapear 13 | if(scope_input_string.length > 10) { 14 | $('#suggestions').hide(); 15 | return; 16 | } 17 | 18 | // Lookup Records and return list - returns suggests in a list
  • (value)
  • 19 | $.post('index.php?component=workorder&page_tpl=autosuggest_scope', { 20 | posted_scope_string : scope_input_string }, function(data) { 21 | if(data.length > 0) { 22 | $('#suggestions').show(); 23 | $('#autoSuggestionsList').html(data); 24 | } else { 25 | $('#suggestions').hide(); 26 | return; 27 | } 28 | } 29 | ); 30 | 31 | } 32 | 33 | // Fill the selection into the Scope Input Box 34 | function fill(clickedSuggestion) { 35 | $('#scope').val(clickedSuggestion); 36 | setTimeout("$('#suggestions').hide();", 200); 37 | } 38 | 39 | // Close Suggestion Box - if someone clicks elsewhere in the page this closes the suggestions 40 | function closeSuggestions() { 41 | setTimeout("$('#suggestions').hide();", 200); 42 | } -------------------------------------------------------------------------------- /src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_material/dhxcombo_arrow_down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_material/dhxcombo_arrow_down.gif -------------------------------------------------------------------------------- /src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_material/dhxcombo_arrow_down_dis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_material/dhxcombo_arrow_down_dis.gif -------------------------------------------------------------------------------- /src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_material/dhxcombo_chbx.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_material/dhxcombo_chbx.gif -------------------------------------------------------------------------------- /src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_skyblue/dhxcombo_arrow_down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_skyblue/dhxcombo_arrow_down.gif -------------------------------------------------------------------------------- /src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_skyblue/dhxcombo_arrow_down_dis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_skyblue/dhxcombo_arrow_down_dis.gif -------------------------------------------------------------------------------- /src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_skyblue/dhxcombo_chbx.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_skyblue/dhxcombo_chbx.gif -------------------------------------------------------------------------------- /src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_terrace/dhxcombo_arrow_down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_terrace/dhxcombo_arrow_down.gif -------------------------------------------------------------------------------- /src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_terrace/dhxcombo_arrow_down_dis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_terrace/dhxcombo_arrow_down_dis.gif -------------------------------------------------------------------------------- /src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_terrace/dhxcombo_chbx.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_terrace/dhxcombo_chbx.gif -------------------------------------------------------------------------------- /src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_web/dhxcombo_arrow_down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_web/dhxcombo_arrow_down.gif -------------------------------------------------------------------------------- /src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_web/dhxcombo_arrow_down_dis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_web/dhxcombo_arrow_down_dis.gif -------------------------------------------------------------------------------- /src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_web/dhxcombo_chbx.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/dhtmlxcombo/imgs/dhxcombo_web/dhxcombo_chbx.gif -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/gold/brushed-steel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/gold/brushed-steel.jpg -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/gold/coolbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/gold/coolbg.png -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/gold/gold.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/gold/gold.jpg -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/img/cool-bg-hard-inv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/img/cool-bg-hard-inv.png -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/img/cool-bg-hard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/img/cool-bg-hard.png -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/img/cool-bg-inv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/img/cool-bg-inv.png -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/img/cool-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/img/cool-bg.png -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/img/drop-down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/img/drop-down.gif -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/img/drop-up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/img/drop-up.gif -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/img/nav-left-x2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/img/nav-left-x2.gif -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/img/nav-left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/img/nav-left.gif -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/img/nav-right-x2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/img/nav-right-x2.gif -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/img/nav-right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/img/nav-right.gif -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/img/time-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/img/time-down.png -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/img/time-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/img/time-up.png -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/matrix/nav-left-x2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/matrix/nav-left-x2.gif -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/matrix/nav-left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/matrix/nav-left.gif -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/matrix/nav-right-x2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/matrix/nav-right-x2.gif -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/matrix/nav-right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/matrix/nav-right.gif -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/reduce-spacing.css: -------------------------------------------------------------------------------- 1 | .DynarchCalendar, .DynarchCalendar table { 2 | font-size: 10px; 3 | } 4 | .DynarchCalendar-dayNames { padding: 0; } 5 | .DynarchCalendar-body { padding: 0; } 6 | .DynarchCalendar-animBody-back { top: 0; } 7 | .DynarchCalendar-animBody-fwd { top: 0; } 8 | .DynarchCalendar-animBody-now { top: 0; } 9 | .DynarchCalendar-first-col { padding-left: 0; } 10 | .DynarchCalendar-last-col { padding-right: 0; } 11 | .DynarchCalendar-weekNumber { 12 | margin-right: 0; 13 | padding-right: 4px !important; 14 | } 15 | .DynarchCalendar-dayNames div, .DynarchCalendar-day, .DynarchCalendar-weekNumber { 16 | padding: 1px 2px; 17 | } 18 | .DynarchCalendar-menu-year { font-size: 12px; } 19 | 20 | .DynarchCalendar-hover-date { 21 | padding: 0px 1px; 22 | } 23 | .DynarchCalendar-day-selected { 24 | padding: 0px 1px; 25 | } 26 | .DynarchCalendar-menu table td div { 27 | padding: 2px 4px; 28 | } 29 | .DynarchCalendar-menu table td div.DynarchCalendar-hover-navBtn { 30 | padding: 1px 3px; 31 | } 32 | -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/shadow-b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/shadow-b.png -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/steel/brushed-steel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/steel/brushed-steel.jpg -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/steel/brushed-steel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/steel/brushed-steel.png -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/steel/coolbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/steel/coolbg.png -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/steel/steel.css: -------------------------------------------------------------------------------- 1 | .DynarchCalendar-focused { 2 | background-color: #fff; 3 | } 4 | 5 | .DynarchCalendar-topBar { 6 | background: url("brushed-steel.jpg") no-repeat 50% 0; 7 | } 8 | 9 | .DynarchCalendar-bottomBar { 10 | background: url("brushed-steel.jpg") no-repeat 50% 50%; 11 | } 12 | 13 | .DynarchCalendar-hover-title, 14 | .DynarchCalendar-hover-navBtn, 15 | .DynarchCalendar-hover-bottomBar-today, 16 | .DynarchCalendar-menu table td div.DynarchCalendar-hover-navBtn { 17 | background: #dde url("coolbg.png") repeat-x 0 50%; 18 | } 19 | .DynarchCalendar-hover-title div, 20 | .DynarchCalendar-hover-navBtn div { background-color: transparent; } 21 | 22 | .DynarchCalendar-pressed-title, 23 | .DynarchCalendar-pressed-navBtn, 24 | .DynarchCalendar-pressed-bottomBar-today, 25 | .DynarchCalendar-menu table td div.DynarchCalendar-pressed-navBtn { 26 | background: #445 url("coolbg.png") repeat-x 0 50%; 27 | } 28 | .DynarchCalendar-pressed-title div, 29 | .DynarchCalendar-pressed-navBtn div { background-color: transparent; } 30 | 31 | .DynarchCalendar-hover-week, 32 | .DynarchCalendar-focused .DynarchCalendar-hover-week { 33 | background: #ddd url("coolbg.png") repeat-x 0 50%; 34 | } 35 | 36 | .DynarchCalendar { 37 | background: url("steel.jpg") no-repeat 50% 30px; 38 | } 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | .DynarchCalendar-day-selected { 47 | background-color: #1864fc; 48 | color: #fff !important; 49 | background-image: url("coolbg.png"); 50 | background-position: 0 50%; 51 | background-repeat: repeat-x; 52 | } 53 | 54 | .DynarchCalendar-day-today.DynarchCalendar-day-selected { 55 | background-color: #1864fc; 56 | color: #fff !important; 57 | } 58 | 59 | .DynarchCalendar-focused .DynarchCalendar-body { 60 | background: url("../shadow-b.png") repeat-x 0 0; 61 | } 62 | -------------------------------------------------------------------------------- /src/themes/default/js/jscal2/css/steel/steel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/jscal2/css/steel/steel.jpg -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/langs/readme.md: -------------------------------------------------------------------------------- 1 | This is where language files should be placed. 2 | 3 | Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/ 4 | -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/emoticons/img/smiley-cool.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/plugins/emoticons/img/smiley-cool.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/emoticons/img/smiley-cry.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/plugins/emoticons/img/smiley-cry.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/emoticons/img/smiley-embarassed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/plugins/emoticons/img/smiley-embarassed.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/emoticons/img/smiley-frown.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/plugins/emoticons/img/smiley-frown.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/emoticons/img/smiley-innocent.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/plugins/emoticons/img/smiley-innocent.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/emoticons/img/smiley-kiss.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/plugins/emoticons/img/smiley-kiss.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/emoticons/img/smiley-laughing.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/plugins/emoticons/img/smiley-laughing.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/emoticons/img/smiley-money-mouth.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/plugins/emoticons/img/smiley-money-mouth.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/emoticons/img/smiley-sealed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/plugins/emoticons/img/smiley-sealed.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/emoticons/img/smiley-smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/plugins/emoticons/img/smiley-smile.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/emoticons/img/smiley-surprised.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/plugins/emoticons/img/smiley-surprised.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/emoticons/img/smiley-tongue-out.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/plugins/emoticons/img/smiley-tongue-out.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/emoticons/img/smiley-undecided.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/plugins/emoticons/img/smiley-undecided.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/emoticons/img/smiley-wink.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/plugins/emoticons/img/smiley-wink.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/emoticons/img/smiley-yell.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/plugins/emoticons/img/smiley-yell.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/help/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/plugins/help/img/logo.png -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/plugins/print/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=function(t){t.addCommand("mcePrint",function(){t.getWin().print()})},i=function(t){t.addButton("print",{title:"Print",cmd:"mcePrint"}),t.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print"})};t.add("print",function(t){n(t),i(t),t.addShortcut("Meta+P","","mcePrint")})}(); -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/lightgray/content.mobile.min.css: -------------------------------------------------------------------------------- 1 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{position:absolute;display:inline-block;background-color:green;opacity:.5}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%} -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/lightgray/fonts/tinymce-mobile.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/lightgray/fonts/tinymce-mobile.woff -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/lightgray/fonts/tinymce-small.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/lightgray/fonts/tinymce-small.eot -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/lightgray/fonts/tinymce-small.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/lightgray/fonts/tinymce-small.woff -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/lightgray/fonts/tinymce.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/lightgray/fonts/tinymce.eot -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/lightgray/fonts/tinymce.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/lightgray/fonts/tinymce.ttf -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/lightgray/fonts/tinymce.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/lightgray/fonts/tinymce.woff -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/lightgray/img/anchor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/lightgray/img/anchor.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/lightgray/img/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/lightgray/img/loader.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/lightgray/img/object.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/lightgray/img/object.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/lightgray/img/trans.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/lightgray/img/trans.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/qwcrm/fonts/readme.md: -------------------------------------------------------------------------------- 1 | Icons are generated and provided by the http://icomoon.io service. 2 | -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/qwcrm/fonts/tinymce-small.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/qwcrm/fonts/tinymce-small.eot -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/qwcrm/fonts/tinymce-small.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/qwcrm/fonts/tinymce-small.ttf -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/qwcrm/fonts/tinymce-small.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/qwcrm/fonts/tinymce-small.woff -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/qwcrm/fonts/tinymce.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/qwcrm/fonts/tinymce.eot -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/qwcrm/fonts/tinymce.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/qwcrm/fonts/tinymce.ttf -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/qwcrm/fonts/tinymce.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/qwcrm/fonts/tinymce.woff -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/qwcrm/img/anchor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/qwcrm/img/anchor.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/qwcrm/img/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/qwcrm/img/loader.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/qwcrm/img/object.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/qwcrm/img/object.gif -------------------------------------------------------------------------------- /src/themes/default/js/tinymce/skins/qwcrm/img/trans.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shoulders/qwcrm/fe1161496bbb7bd8866290f24898d1b307c8a0f1/src/themes/default/js/tinymce/skins/qwcrm/img/trans.gif -------------------------------------------------------------------------------- /src/themes/default/templateDetails.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | -------------------------------------------------------------------------------- /src/themes/default/templates/administrator/phpinfo.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | {$phpinfo} -------------------------------------------------------------------------------- /src/themes/default/templates/client/blocks/display_client_historic_stats_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | {$block_title} 9 |
    10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
    {t}New This Calendar Month{/t}{t}New This Financial Year{/t}{t}Total{/t} {t}Clients{/t}
    {$client_stats.count_new_month}{$client_stats.count_new_year}{$client_stats.count_total}
    -------------------------------------------------------------------------------- /src/themes/default/templates/core/403.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | 9 | 10 | 28 | 29 |
    11 | 12 |
    13 | {t}403 - You do not have permission to access this resource or your session has expired.{/t} 14 |

     

    15 |

     

    16 |

    17 | {*

    18 | 21 |

    *} 22 |

     

    23 |

     

    24 |

     

    25 |

     

    26 |

     

    27 |
    -------------------------------------------------------------------------------- /src/themes/default/templates/core/404.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | 9 | 10 | 23 | 24 |
    11 | 12 |
    13 | {t}404 - The requested page was not found on our system.{/t} 14 |

     

    15 |

     

    16 |

    17 |

     

    18 |

     

    19 |

     

    20 |

     

    21 |

     

    22 |
    -------------------------------------------------------------------------------- /src/themes/default/templates/core/blocks/home_login_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | 9 | 10 | 11 | 12 | 13 | 34 | 35 |
    {t}Welcome to QWcrm{/t}
    14 | 15 | 16 | 19 | 20 | 21 | 24 | 25 | 26 | 31 | 32 |
    17 | 18 |
    22 |

     

    23 |
    27 | 30 |
    33 |
    -------------------------------------------------------------------------------- /src/themes/default/templates/core/blocks/theme_debug_smarty_debug_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {* 5 | * @package QWcrm 6 | * @author Jon Brown https://quantumwarp.com/ 7 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 8 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 9 | *} 10 | {debug} -------------------------------------------------------------------------------- /src/themes/default/templates/core/blocks/theme_footer_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {* 5 | * @package QWcrm 6 | * @author Jon Brown https://quantumwarp.com/ 7 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 8 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 9 | *} 10 |
    11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
     
    QWcrm {$qwcrm_version}
    19 |
    20 | -------------------------------------------------------------------------------- /src/themes/default/templates/core/blocks/theme_footer_legacy_supplement_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {* 5 | * @package QWcrm 6 | * @author Jon Brown https://quantumwarp.com/ 7 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 8 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 9 | *} 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/themes/default/templates/core/blocks/theme_header_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | 9 | 10 | 11 | 12 | {$page_title} 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 29 | 30 | 31 | 32 | 33 |
    34 | 35 |
    36 | 37 | 38 | 39 | 40 | 41 |
    {$greeting_msg}{$todays_display_date}
    42 |
    43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /src/themes/default/templates/core/blocks/theme_header_legacy_supplement_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | 9 | 10 | 11 | 12 |
    13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/themes/default/templates/core/blocks/theme_header_theme_off_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | 9 | 10 | 11 | 12 | {$page_title} 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
    26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/themes/default/templates/core/blocks/theme_searchbar_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | -------------------------------------------------------------------------------- /src/themes/default/templates/core/dashboard.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | {if $page_version == 'employee'} 9 | {include file='core/dashboard_employee.tpl'} 10 | {elseif $page_version == 'client'} 11 | {include file='core/dashboard_client.tpl'} 12 | {/if} -------------------------------------------------------------------------------- /src/themes/default/templates/core/error.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 |
    9 | {t}Error Page{/t}: {$error_component}:{$error_page_tpl}
    10 | {t}Error Type{/t}: {$error_type}

    11 | 12 | {t}Error Location{/t}: {$error_location}
    13 | {t}PHP Function{/t}: {$error_php_function}

    14 | 15 | {t}Database Error{/t}:
    {$error_database}

    16 | {t}SQL Query{/t}:
    {$error_sql_query}

    17 | 18 | {t}Error Message{/t}: {$error_msg}

    19 |
    -------------------------------------------------------------------------------- /src/themes/default/templates/core/home.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | {* {include file="core/blocks/home_dashboard_block.tpl"} *} 9 | 10 | {include file="core/blocks/home_login_block.tpl"} 11 | -------------------------------------------------------------------------------- /src/themes/default/templates/core/maintenance.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 |

    This is the maintenance page - not much here yet

    -------------------------------------------------------------------------------- /src/themes/default/templates/creditnote/blocks/display_creditnote_current_stats_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | {$block_title} 9 |
    10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
    {t}Open{/t}{t}Pending{/t}{t}Unused{/t}{t}Partially Used{/t}
    {$creditnote_stats.count_open}{$creditnote_stats.count_pending}{$creditnote_stats.count_unused}{$creditnote_stats.count_partially_used}
    -------------------------------------------------------------------------------- /src/themes/default/templates/creditnote/blocks/display_creditnote_historic_stats_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | {$block_title} 9 |
    10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
    {t}Opened{/t}{t}Closed{/t}{t}Fully Used{/t}{t}Expired Unused{/t}{t}Cancelled{/t}{t}Deleted{/t}
    {$creditnote_stats.count_opened}{$creditnote_stats.count_closed}{$creditnote_stats.count_fully_used}{$creditnote_stats.count_expired_unused}{$creditnote_stats.count_cancelled}{$creditnote_stats.count_deleted}
    -------------------------------------------------------------------------------- /src/themes/default/templates/creditnote/blocks/display_creditnote_revenue_stats_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | {$block_title} 9 |
    10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
    {t}Credit Note Total{/t} ({t}Excl.{/t} {t}Cancelled{/t}){t}Cancelled{/t}{t}Outstanding Balance{/t}
    {$currency_sym}{$creditnote_stats.sum_unit_gross|string_format:"%.2f"} [G]{$currency_sym}{$creditnote_stats.sum_cancelled_unit_gross|string_format:"%.2f"} [G]{$currency_sym}{$creditnote_stats.sum_balance|string_format:"%.2f"} [G]
    -------------------------------------------------------------------------------- /src/themes/default/templates/help/license.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 |
    9 |

    License

    10 |

    QWcrm is distributed under the GNU General Public License V3

    11 |

    Not all assets are covered by the GNU General Public License V3 (GPL-3.0).

    12 |

    QWcrm makes use of other software packages which have their own license which allows their inclusion in QWcrm.

    13 |

    The QW / QuantumWarp Logo are Copyrighted and are not open source or free for you to use. You may use the logo in conjuction with this software but not proport ownership or endorsement by or for QuantumWarp or any other reason.

    14 |
    -------------------------------------------------------------------------------- /src/themes/default/templates/invoice/blocks/display_invoice_current_stats_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | {$block_title} 9 |
    10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |
    {t}Open{/t}{t}Pending{/t}{t}Unpaid{/t}{t}Partially Paid{/t}{t}In Dispute{/t}{t}Overdue{/t}{t}Collections{/t}
    {$invoice_stats.count_open}{$invoice_stats.count_pending}{$invoice_stats.count_unpaid}{$invoice_stats.count_partially_paid}{$invoice_stats.count_in_dispute}{$invoice_stats.count_overdue}{$invoice_stats.count_collections}
    -------------------------------------------------------------------------------- /src/themes/default/templates/invoice/blocks/display_invoice_historic_stats_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | {$block_title} 9 |
    10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
    {t}Opened{/t}{t}Closed{/t}{t}Paid{/t}{t}Cancelled{/t}{t}Deleted{/t}
    {$invoice_stats.count_opened}{$invoice_stats.count_closed}{$invoice_stats.count_paid}{$invoice_stats.count_cancelled}{$invoice_stats.count_deleted}
    -------------------------------------------------------------------------------- /src/themes/default/templates/invoice/blocks/display_invoice_revenue_stats_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | {$block_title} 9 |
    10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
    {t}Invoiced Total{/t} ({t}Excl.{/t} {t}Cancelled{/t}){t}Cancelled{/t}{t}Outstanding Balance{/t}
    {$currency_sym}{$invoice_stats.sum_unit_gross|string_format:"%.2f"} [G]{$currency_sym}{$invoice_stats.sum_cancelled_unit_gross|string_format:"%.2f"} [G]{$currency_sym}{$invoice_stats.sum_balance|string_format:"%.2f"} [G]
    -------------------------------------------------------------------------------- /src/themes/default/templates/payment/blocks/display_payment_revenue_stats_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | {$block_title} 9 |
    10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
    {t}Received Monies{/t}{t}Sent Monies{/t}
    {$currency_sym}{$payment_stats.sum_received|string_format:"%.2f"} [G]{$currency_sym}{$payment_stats.sum_sent|string_format:"%.2f"} [G]
    -------------------------------------------------------------------------------- /src/themes/default/templates/setup/blocks/install_database_install_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 |
    9 | 10 | 11 | 12 | {**} 13 | 14 | 15 | 29 | 30 |
    31 |
    -------------------------------------------------------------------------------- /src/themes/default/templates/setup/blocks/migrate_myitcrm_database_install_qwcrm_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 |
    9 | 10 | 11 | 12 | {**} 13 | 14 | 15 | 29 | 30 |
    31 |
    -------------------------------------------------------------------------------- /src/themes/default/templates/setup/blocks/migrate_myitcrm_database_migrate_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 |
    9 | 10 | 11 | 12 | {**} 13 | 14 | 15 | 29 | 30 |
    31 |
    -------------------------------------------------------------------------------- /src/themes/default/templates/setup/blocks/upgrade_database_upgrade_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 |
    9 | 10 | 11 | 12 | 13 | 14 | 34 | 35 |
    36 |
    -------------------------------------------------------------------------------- /src/themes/default/templates/setup/blocks/upgrade_database_upgrade_results_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 |
    9 | 10 | 11 | 12 | 13 | 14 | 36 | 37 |
    38 |
    -------------------------------------------------------------------------------- /src/themes/default/templates/user/reset.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | 9 | {if $stage == 'enter_email'} 10 | 11 | {include file="user/blocks/reset_enter_email_block.tpl"} 12 | 13 | {elseif $stage == 'enter_token'} 14 | 15 | {include file="user/blocks/reset_enter_token_block.tpl"} 16 | 17 | {elseif $stage == 'enter_password'} 18 | 19 | {include file="user/blocks/reset_enter_password_block.tpl"} 20 | 21 | {else} 22 | 23 | {t}There has been an error.{/t} 24 | 25 | {/if} -------------------------------------------------------------------------------- /src/themes/default/templates/voucher/blocks/display_voucher_revenue_stats_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | {$block_title} 9 |
    10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
    {t}Invoiced Total{/t} ({t}Excl.{/t} {t}Cancelled{/t}){t}Expired Unused{/t}{t}Cancelled{/t}
    {$currency_sym}{$voucher_stats.sum_unit_gross|string_format:"%.2f"} [G]{$currency_sym}{$voucher_stats.sum_expired_unused_unit_gross|string_format:"%.2f"} [G]{$currency_sym}{$voucher_stats.sum_cancelled_unit_gross|string_format:"%.2f"} [G]
    -------------------------------------------------------------------------------- /src/themes/default/templates/workorder/blocks/details_history_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | 9 | 10 | 17 | 18 | {section name=i loop=$workorder_history} 19 | 20 | 32 | 33 | {sectionelse} 34 | 35 | 36 | 37 | {/section} 38 |
    11 | 12 | 13 | 14 | 15 |
    16 |
    {t}There are no history notes.{/t}
    -------------------------------------------------------------------------------- /src/themes/default/templates/workorder/blocks/display_workorder_current_stats_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | {$block_title} 9 |
    10 | 11 | 12 | 13 | {if !isset($hide_unassigned)} 14 | 15 | {/if} 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | {if !isset($hide_unassigned)} 26 | 27 | {/if} 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |
    {t}Open{/t}{t}Unassigned{/t}{t}Assigned{/t}{t}Waiting for Parts{/t}{t}Scheduled{/t}{t}With Client{/t}{t}On Hold{/t}{t}Management{/t}
    {$workorder_stats.count_open}{$workorder_stats.count_unassigned}{$workorder_stats.count_assigned}{$workorder_stats.count_waiting_for_parts}{$workorder_stats.count_scheduled}{$workorder_stats.count_with_client}{$workorder_stats.count_on_hold}{$workorder_stats.count_management}
    -------------------------------------------------------------------------------- /src/themes/default/templates/workorder/blocks/display_workorder_historic_stats_block.tpl: -------------------------------------------------------------------------------- 1 | 2 | {* 3 | * @package QWcrm 4 | * @author Jon Brown https://quantumwarp.com/ 5 | * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. 6 | * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html 7 | *} 8 | {$block_title} 9 |
    10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
    {t}Opened{/t}{t}Closed{/t}{t}Closed without Invoice{/t}{t}Closed with Invoice{/t}{t}Deleted{/t}
    {$workorder_stats.count_opened}{$workorder_stats.count_closed}{$workorder_stats.count_closed_without_invoice}{$workorder_stats.count_closed_with_invoice}{$workorder_stats.count_deleted}
    --------------------------------------------------------------------------------