From 064bdf539557994562cdd80f4c9e87b64fcef4be Mon Sep 17 00:00:00 2001 From: Darko Gjorgjijoski Date: Tue, 7 Apr 2026 12:48:15 +0200 Subject: [PATCH] Delete legacy v1 frontend (resources/scripts) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The resources/scripts/ directory was the original Vue 2 / Pinia v1 admin and customer-portal SPA. It has been fully orphaned for some time — vite.config.js has zero entry points pointing at it and the only blade @vite() reference in resources/views/app.blade.php loads scripts-v2/main.ts. The directory was pure dead code. Removes 424 .vue / .js / store / router / helper files (~2.7 MB) so that resources/scripts-v2/ can be renamed back to resources/scripts/ in a follow-up commit, dropping the v2 suffix now that there is no v1 left. --- resources/scripts/App.vue | 5 - resources/scripts/InvoiceShelf.js | 76 -- resources/scripts/admin/admin-router.js | 586 --------- .../admin/components/CopyInputField.vue | 98 -- .../admin/components/ImpersonationBanner.vue | 41 - .../admin/components/SelectNotePopup.vue | 209 ---- .../admin/components/charts/LineChart.vue | 211 ---- .../ExchangeRateBulkUpdate.vue | 118 -- .../custom-fields/CreateCustomFields.vue | 118 -- .../CreateCustomFieldsSingle.vue | 72 -- .../custom-fields/types/DateTimeType.vue | 24 - .../custom-fields/types/DateType.vue | 24 - .../custom-fields/types/DropdownType.vue | 45 - .../custom-fields/types/InputType.vue | 23 - .../custom-fields/types/NumberType.vue | 23 - .../custom-fields/types/PhoneType.vue | 23 - .../custom-fields/types/SwitchType.vue | 25 - .../custom-fields/types/TextAreaType.vue | 31 - .../custom-fields/types/TimeType.vue | 24 - .../custom-fields/types/UrlType.vue | 23 - .../dropdowns/AdminCompanyIndexDropdown.vue | 34 - .../dropdowns/AdminUserIndexDropdown.vue | 77 -- .../dropdowns/CustomFieldIndexDropdown.vue | 99 -- .../dropdowns/CustomerIndexDropdown.vue | 113 -- .../dropdowns/EstimateIndexDropdown.vue | 369 ------ .../ExpenseCategoryIndexDropdown.vue | 105 -- .../dropdowns/ExpenseIndexDropdown.vue | 94 -- .../dropdowns/InvoiceIndexDropdown.vue | 261 ----- .../dropdowns/ItemIndexDropdown.vue | 96 -- .../dropdowns/MemberIndexDropdown.vue | 87 -- .../dropdowns/NoteIndexDropdown.vue | 109 -- .../dropdowns/PaymentIndexDropdown.vue | 166 --- .../dropdowns/PaymentModeIndexDropdown.vue | 93 -- .../RecurringInvoiceIndexDropdown.vue | 131 --- .../dropdowns/RoleIndexDropdown.vue | 106 -- .../dropdowns/TaxTypeIndexDropdown.vue | 104 -- .../estimate-invoice-common/CreateItemRow.vue | 483 -------- .../CreateItemRowTax.vue | 285 ----- .../estimate-invoice-common/CreateItems.vue | 229 ---- .../CreateNotesField.vue | 46 - .../estimate-invoice-common/CreateTotal.vue | 402 ------- .../CreateTotalTaxes.vue | 108 -- .../ExchangeRateConverter.vue | 178 --- .../estimate-invoice-common/NetTotal.vue | 54 - .../estimate-invoice-common/SalesTax.vue | 216 ---- .../SelectTaxPopup.vue | 243 ---- .../SelectTemplateButton.vue | 68 -- .../modal-components/BackupModal.vue | 181 --- .../modal-components/CategoryModal.vue | 161 --- .../modal-components/CompanyModal.vue | 260 ---- .../modal-components/CustomerModal.vue | 663 ----------- .../modal-components/DeleteCompanyModal.vue | 157 --- .../ExchangeRateBulkUpdateModal.vue | 24 - .../ExchangeRateProviderModal.vue | 484 -------- .../modal-components/FileDiskModal.vue | 155 --- .../modal-components/InviteMemberModal.vue | 132 --- .../components/modal-components/ItemModal.vue | 275 ----- .../modal-components/ItemUnitModal.vue | 143 --- .../modal-components/MailTestModal.vue | 182 --- .../components/modal-components/NoteModal.vue | 290 ----- .../modal-components/PaymentModeModal.vue | 133 --- .../modal-components/RolesModal.vue | 299 ----- .../modal-components/SelectTemplateModal.vue | 147 --- .../modal-components/SendEstimateModal.vue | 309 ----- .../modal-components/SendInvoiceModal.vue | 322 ----- .../modal-components/SendPaymentModal.vue | 315 ----- .../modal-components/TaxTypeModal.vue | 285 ----- .../modal-components/TaxationAddressModal.vue | 209 ---- .../custom-fields/CustomFieldModal.vue | 421 ------- .../custom-fields/OptionsCreate.vue | 36 - .../modal-components/disks/DoSpacesDisk.vue | 330 ------ .../modal-components/disks/DropboxDisk.vue | 299 ----- .../modal-components/disks/LocalDisk.vue | 221 ---- .../modal-components/disks/S3CompatDisk.vue | 325 ----- .../modal-components/disks/S3Disk.vue | 304 ----- .../scripts/admin/layouts/LayoutBasic.vue | 105 -- .../admin/layouts/LayoutInstallation.vue | 13 - .../scripts/admin/layouts/LayoutLogin.vue | 177 --- .../admin/layouts/partials/TheSiteHeader.vue | 282 ----- .../admin/layouts/partials/TheSiteSidebar.vue | 223 ---- .../scripts/admin/stores/administration.js | 162 --- resources/scripts/admin/stores/auth.js | 78 -- resources/scripts/admin/stores/backup.js | 74 -- resources/scripts/admin/stores/category.js | 127 -- .../scripts/admin/stores/company-mail.js | 91 -- resources/scripts/admin/stores/company.js | 208 ---- .../scripts/admin/stores/custom-field.js | 209 ---- resources/scripts/admin/stores/customer.js | 256 ---- resources/scripts/admin/stores/dashboard.js | 85 -- resources/scripts/admin/stores/disk.js | 192 --- resources/scripts/admin/stores/estimate.js | 644 ---------- .../scripts/admin/stores/exchange-rate.js | 247 ---- resources/scripts/admin/stores/expense.js | 238 ---- resources/scripts/admin/stores/global.js | 309 ----- .../scripts/admin/stores/installation.js | 200 ---- resources/scripts/admin/stores/invitation.js | 56 - resources/scripts/admin/stores/invoice.js | 579 --------- resources/scripts/admin/stores/item.js | 335 ------ resources/scripts/admin/stores/mail-driver.js | 144 --- resources/scripts/admin/stores/members.js | 289 ----- resources/scripts/admin/stores/module.js | 130 -- resources/scripts/admin/stores/note.js | 121 -- resources/scripts/admin/stores/payment.js | 435 ------- resources/scripts/admin/stores/pdf-driver.js | 68 -- .../scripts/admin/stores/recurring-invoice.js | 514 -------- resources/scripts/admin/stores/reset.js | 89 -- resources/scripts/admin/stores/role.js | 168 --- resources/scripts/admin/stores/tax-type.js | 166 --- resources/scripts/admin/stores/user.js | 153 --- resources/scripts/admin/stub/abilities.js | 79 -- resources/scripts/admin/stub/address.js | 11 - resources/scripts/admin/stub/custom-field.js | 12 - resources/scripts/admin/stub/customer.js | 19 - resources/scripts/admin/stub/estimate-item.js | 19 - resources/scripts/admin/stub/estimate.js | 40 - resources/scripts/admin/stub/expense.js | 18 - resources/scripts/admin/stub/invoice-item.js | 18 - resources/scripts/admin/stub/invoice.js | 40 - resources/scripts/admin/stub/payment.js | 15 - .../admin/stub/recurring-invoice-item.js | 20 - .../scripts/admin/stub/recurring-invoice.js | 50 - resources/scripts/admin/stub/tax.js | 8 - .../scripts/admin/views/NoCompanyView.vue | 84 -- resources/scripts/admin/views/SampleTable.vue | 175 --- .../views/administration/AdminDashboard.vue | 104 -- .../views/administration/companies/Edit.vue | 255 ---- .../views/administration/companies/Index.vue | 188 --- .../administration/settings/SettingsIndex.vue | 113 -- .../admin/views/administration/users/Edit.vue | 181 --- .../views/administration/users/Index.vue | 252 ---- .../admin/views/auth/ForgotPassword.vue | 92 -- resources/scripts/admin/views/auth/Login.vue | 129 -- .../views/auth/RegisterWithInvitation.vue | 213 ---- .../admin/views/auth/ResetPassword.vue | 165 --- .../scripts/admin/views/customers/Create.vue | 757 ------------ .../scripts/admin/views/customers/Index.vue | 366 ------ .../scripts/admin/views/customers/View.vue | 144 --- .../customers/partials/CustomerChart.vue | 224 ---- .../partials/CustomerChartPlaceholder.vue | 79 -- .../views/customers/partials/CustomerInfo.vue | 124 -- .../partials/CustomerViewSidebar.vue | 327 ------ .../admin/views/dashboard/Dashboard.vue | 28 - .../admin/views/dashboard/DashboardChart.vue | 189 --- .../dashboard/DashboardChartPlaceholder.vue | 88 -- .../admin/views/dashboard/DashboardStats.vue | 71 -- .../views/dashboard/DashboardStatsItem.vue | 66 -- .../dashboard/DashboardStatsPlaceholder.vue | 20 - .../dashboard/DashboardStatsSmPlaceholder.vue | 31 - .../admin/views/dashboard/DashboardTable.vue | 186 --- resources/scripts/admin/views/errors/404.vue | 64 - .../scripts/admin/views/estimates/Index.vue | 492 -------- .../scripts/admin/views/estimates/View.vue | 539 --------- .../views/estimates/create/EstimateCreate.vue | 311 ----- .../create/EstimateCreateBasicFields.vue | 102 -- .../scripts/admin/views/expenses/Create.vue | 534 --------- .../scripts/admin/views/expenses/Index.vue | 414 ------- .../admin/views/installation/Installation.vue | 126 -- .../views/installation/Step0SetLanguage.vue | 94 -- .../installation/Step1RequirementsCheck.vue | 118 -- .../installation/Step2PermissionCheck.vue | 123 -- .../installation/Step3DatabaseConfig.vue | 151 --- .../views/installation/Step4VerifyDomain.vue | 106 -- .../views/installation/Step5EmailConfig.vue | 76 -- .../installation/Step6AccountSettings.vue | 217 ---- .../views/installation/Step7CompanyInfo.vue | 272 ----- .../installation/Step8CompanyPreferences.vue | 317 ----- .../installation/database/MysqlDatabase.vue | 195 --- .../installation/database/PgsqlDatabase.vue | 215 ---- .../installation/database/SqliteDatabase.vue | 151 --- .../mail-driver/BasicMailDriver.vue | 147 --- .../mail-driver/MailgunMailDriver.vue | 230 ---- .../mail-driver/SesMailDriver.vue | 293 ----- .../mail-driver/SmtpMailDriver.vue | 258 ---- .../scripts/admin/views/invoices/Index.vue | 560 --------- .../scripts/admin/views/invoices/View.vue | 517 -------- .../views/invoices/create/InvoiceCreate.vue | 313 ----- .../create/InvoiceCreateBasicFields.vue | 100 -- .../scripts/admin/views/items/Create.vue | 322 ----- resources/scripts/admin/views/items/Index.vue | 359 ------ .../scripts/admin/views/members/Index.vue | 451 ------- .../scripts/admin/views/modules/Index.vue | 230 ---- .../scripts/admin/views/modules/View.vue | 1042 ----------------- .../views/modules/partials/ModuleCard.vue | 139 --- .../partials/ModuleCardPlaceholder.vue | 49 - .../modules/partials/ModulePlaceholder.vue | 104 -- .../modules/partials/RecentModuleCard.vue | 63 - .../scripts/admin/views/payments/Create.vue | 531 --------- .../scripts/admin/views/payments/Index.vue | 380 ------ .../scripts/admin/views/payments/View.vue | 459 -------- .../admin/views/recurring-invoices/Index.vue | 498 -------- .../admin/views/recurring-invoices/View.vue | 76 -- .../create/RecurringInvoiceCreate.vue | 358 ------ .../RecurringInvoiceCreateBasicFields.vue | 296 ----- .../recurring-invoices/partials/Invoices.vue | 115 -- .../partials/RecurringInvoiceInfo.vue | 94 -- .../partials/RecurringInvoiceViewSidebar.vue | 340 ------ .../admin/views/reports/ExpensesReport.vue | 266 ----- .../admin/views/reports/ProfitLossReport.vue | 261 ----- .../admin/views/reports/SalesReports.vue | 308 ----- .../scripts/admin/views/reports/TaxReport.vue | 264 ----- .../admin/views/reports/layout/Index.vue | 65 - .../admin/views/settings/BackupSetting.vue | 230 ---- .../views/settings/CompanyInfoSettings.vue | 262 ----- .../settings/CompanyMailConfigSetting.vue | 123 -- .../views/settings/CustomFieldsSetting.vue | 171 --- .../settings/ExchangeRateProviderSetting.vue | 193 --- .../views/settings/ExpenseCategorySetting.vue | 117 -- .../admin/views/settings/FileDiskSetting.vue | 257 ---- .../views/settings/MailConfigSetting.vue | 93 -- .../admin/views/settings/NotesSetting.vue | 132 --- .../views/settings/NotificationsSetting.vue | 162 --- .../views/settings/PDFGenerationSetting.vue | 72 -- .../views/settings/PaymentsModeSetting.vue | 104 -- .../views/settings/PreferencesSetting.vue | 411 ------- .../admin/views/settings/RolesSettings.vue | 112 -- .../admin/views/settings/SettingsIndex.vue | 95 -- .../admin/views/settings/TaxTypesSetting.vue | 251 ---- .../admin/views/settings/UpdateAppSetting.vue | 476 -------- .../customization/CustomizationSetting.vue | 42 - .../customization/NumberCustomizer.vue | 453 ------- .../customization/estimates/EstimatesTab.vue | 73 -- .../estimates/EstimatesTabConvertEstimate.vue | 82 -- .../estimates/EstimatesTabDefaultFormats.vue | 129 -- .../estimates/EstimatesTabEstimateNumber.vue | 14 - .../estimates/EstimatesTabExpiryDate.vue | 136 --- .../customization/invoices/InvoicesTab.vue | 71 -- .../invoices/InvoicesTabDefaultFormats.vue | 127 -- .../invoices/InvoicesTabDueDate.vue | 134 --- .../invoices/InvoicesTabInvoiceNumber.vue | 14 - .../invoices/InvoicesTabRetrospective.vue | 93 -- .../settings/customization/items/ItemsTab.vue | 131 --- .../customization/payments/PaymentsTab.vue | 61 - .../payments/PaymentsTabDefaultFormats.vue | 111 -- .../payments/PaymentsTabPaymentNumber.vue | 14 - .../settings/mail-driver/BasicMailDriver.vue | 158 --- .../mail-driver/MailgunMailDriver.vue | 240 ---- .../settings/mail-driver/SesMailDriver.vue | 310 ----- .../settings/mail-driver/SmtpMailDriver.vue | 258 ---- .../settings/pdf-driver/DomPDFDriver.vue | 115 -- .../settings/pdf-driver/GotenbergDriver.vue | 128 -- .../admin/views/user-settings/GeneralTab.vue | 126 -- .../views/user-settings/ProfilePhotoTab.vue | 83 -- .../admin/views/user-settings/SecurityTab.vue | 112 -- .../views/user-settings/UserSettingsIndex.vue | 109 -- .../scripts/components/CompanySwitcher.vue | 316 ----- .../scripts/components/GlobalSearchBar.vue | 207 ---- .../components/InvoiceInformationCard.vue | 76 -- .../scripts/components/InvoicePublicPage.vue | 120 -- .../base-select/BaseMultiselect.d.ts | 75 -- .../base-select/BaseMultiselect.vue | 646 ---------- .../base-select/composables/useClasses.js | 182 --- .../base-select/composables/useData.js | 56 - .../base-select/composables/useDropdown.js | 35 - .../base-select/composables/useKeyboard.js | 140 --- .../base-select/composables/useMultiselect.js | 82 -- .../base-select/composables/useOptions.js | 630 ---------- .../base-select/composables/usePointer.js | 33 - .../composables/usePointerAction.js | 241 ---- .../base-select/composables/useSearch.js | 41 - .../base-select/composables/useValue.js | 33 - .../scripts/components/base-select/index.d.ts | 1 - .../base-select/utils/arraysEqual.js | 7 - .../components/base-select/utils/isNullish.js | 3 - .../components/base-select/utils/isObject.js | 3 - .../components/base-select/utils/normalize.js | 5 - .../scripts/components/base/BaseBadge.vue | 29 - .../components/base/BaseBreadcrumb.vue | 13 - .../components/base/BaseBreadcrumbItem.vue | 41 - .../scripts/components/base/BaseButton.vue | 155 --- .../scripts/components/base/BaseCard.vue | 39 - .../scripts/components/base/BaseCheckbox.vue | 83 -- .../base/BaseContentPlaceholders.vue | 215 ---- .../base/BaseContentPlaceholdersBox.vue | 25 - .../base/BaseContentPlaceholdersHeading.vue | 25 - .../base/BaseContentPlaceholdersText.vue | 31 - .../components/base/BaseCustomInput.vue | 261 ----- .../scripts/components/base/BaseCustomTag.vue | 16 - .../base/BaseCustomerAddressDisplay.vue | 27 - .../base/BaseCustomerSelectInput.vue | 104 -- .../base/BaseCustomerSelectPopup.vue | 535 --------- .../components/base/BaseDatePicker.vue | 318 ----- .../components/base/BaseDescriptionList.vue | 5 - .../base/BaseDescriptionListItem.vue | 37 - .../scripts/components/base/BaseDialog.vue | 178 --- .../scripts/components/base/BaseDivider.vue | 3 - .../scripts/components/base/BaseDropdown.vue | 85 -- .../components/base/BaseDropdownItem.vue | 17 - .../components/base/BaseEmptyPlaceholder.vue | 31 - .../components/base/BaseErrorAlert.vue | 36 - .../base/BaseEstimateStatusBadge.vue | 36 - .../base/BaseEstimateStatusLabel.vue | 39 - .../components/base/BaseFileUploader.vue | 578 --------- .../components/base/BaseFilterWrapper.vue | 56 - .../components/base/BaseFormatMoney.vue | 32 - .../components/base/BaseGlobalLoader.vue | 53 - .../scripts/components/base/BaseHeading.vue | 25 - .../scripts/components/base/BaseIcon.vue | 21 - .../scripts/components/base/BaseInfoAlert.vue | 103 -- .../scripts/components/base/BaseInput.vue | 285 ----- .../scripts/components/base/BaseInputGrid.vue | 24 - .../components/base/BaseInputGroup.vue | 113 -- .../base/BaseInvoiceStatusBadge.vue | 47 - .../base/BaseInvoiceStatusLabel.vue | 43 - .../components/base/BaseItemSelect.vue | 193 --- .../scripts/components/base/BaseLabel.vue | 5 - .../scripts/components/base/BaseModal.vue | 140 --- .../scripts/components/base/BaseMoney.vue | 93 -- .../scripts/components/base/BaseNewBadge.vue | 19 - .../scripts/components/base/BasePage.vue | 5 - .../components/base/BasePageHeader.vue | 23 - .../components/base/BasePaidStatusBadge.vue | 41 - .../scripts/components/base/BaseRadio.vue | 104 -- .../scripts/components/base/BaseRating.vue | 196 ---- .../base/BaseRecurringInvoiceStatusBadge.vue | 35 - .../base/BaseRecurringInvoiceStatusLabel.vue | 31 - .../components/base/BaseScrollPane.vue | 12 - .../components/base/BaseSelectAction.vue | 18 - .../components/base/BaseSelectInput.vue | 216 ---- .../components/base/BaseSettingCard.vue | 42 - .../scripts/components/base/BaseSpinner.vue | 23 - .../scripts/components/base/BaseSwitch.vue | 68 -- .../components/base/BaseSwitchSection.vue | 69 -- resources/scripts/components/base/BaseTab.vue | 29 - .../scripts/components/base/BaseTabGroup.vue | 72 -- .../scripts/components/base/BaseText.vue | 37 - .../scripts/components/base/BaseTextarea.vue | 105 -- .../components/base/BaseTimePicker.vue | 138 --- .../scripts/components/base/BaseWizard.vue | 36 - .../components/base/BaseWizardNavigation.vue | 100 -- .../components/base/BaseWizardStep.vue | 40 - .../base/base-editor/BaseEditor.vue | 247 ---- .../base/base-editor/icons/BoldIcon.vue | 7 - .../base/base-editor/icons/CodeBlockIcon.vue | 7 - .../base/base-editor/icons/CodingIcon.vue | 7 - .../base/base-editor/icons/ItalicIcon.vue | 7 - .../base/base-editor/icons/ListIcon.vue | 7 - .../base/base-editor/icons/ListUlIcon.vue | 10 - .../base/base-editor/icons/MenuCenterIcon.vue | 11 - .../base/base-editor/icons/ParagraphIcon.vue | 7 - .../base/base-editor/icons/QuoteIcon.vue | 7 - .../base/base-editor/icons/RedoIcon.vue | 7 - .../base-editor/icons/StrikethroughIcon.vue | 7 - .../base/base-editor/icons/UnderlineIcon.vue | 7 - .../base/base-editor/icons/UndoIcon.vue | 7 - .../base/base-editor/icons/index.js | 29 - .../components/base/base-table/BaseTable.vue | 368 ------ .../base/base-table/BaseTablePagination.vue | 358 ------ .../components/base/base-table/Column.js | 66 -- .../scripts/components/base/base-table/Row.js | 43 - .../components/base/base-table/helpers.js | 30 - .../scripts/components/icons/DragIcon.vue | 19 - .../scripts/components/icons/LoadingIcon.vue | 17 - .../scripts/components/icons/MainLogo.vue | 29 - .../scripts/components/icons/SaveIcon.vue | 19 - .../scripts/components/icons/SpinnerIcon.vue | 23 - .../icons/dashboard/CustomerIcon.vue | 26 - .../components/icons/dashboard/DollarIcon.vue | 15 - .../icons/dashboard/EstimateIcon.vue | 25 - .../icons/dashboard/InvoiceIcon.vue | 25 - .../icons/dashboard/PaymentIcon.vue | 31 - .../components/icons/empty/AstronautIcon.vue | 126 -- .../components/icons/empty/CapsuleIcon.vue | 90 -- .../components/icons/empty/MoonwalkerIcon.vue | 138 --- .../icons/empty/ObservatoryIcon.vue | 150 --- .../components/icons/empty/SatelliteIcon.vue | 114 -- .../components/icons/empty/UFOIcon.vue | 59 - .../scripts/components/list/BaseList.vue | 10 - .../scripts/components/list/BaseListItem.vue | 45 - .../notifications/NotificationItem.vue | 172 --- .../notifications/NotificationRoot.vue | 54 - .../components/svg/LoginBackground.vue | 35 - .../components/svg/LoginBackgroundOverlay.vue | 34 - .../components/svg/LoginBottomVector.vue | 9 - .../components/svg/LoginPlanetCrater.vue | 109 -- resources/scripts/customer/customer-router.js | 103 -- .../customer/helpers/error-handling.js | 78 -- .../scripts/customer/layouts/LayoutBasic.vue | 36 - .../scripts/customer/layouts/LayoutLogin.vue | 47 - .../layouts/partials/TheSiteFooter.vue | 27 - .../layouts/partials/TheSiteHeader.vue | 266 ----- .../layouts/partials/TheSiteSidebar.vue | 1 - resources/scripts/customer/stores/auth.js | 122 -- resources/scripts/customer/stores/customer.js | 13 - .../scripts/customer/stores/dashboard.js | 42 - resources/scripts/customer/stores/estimate.js | 115 -- resources/scripts/customer/stores/global.js | 67 -- resources/scripts/customer/stores/invoice.js | 61 - resources/scripts/customer/stores/payment.js | 74 -- resources/scripts/customer/stores/user.js | 76 -- resources/scripts/customer/stubs/address.js | 11 - .../scripts/customer/views/BaseCheckon.vue | 12 - .../scripts/customer/views/SamplePage.vue | 15 - .../customer/views/auth/ForgotPassword.vue | 100 -- .../scripts/customer/views/auth/Login.vue | 132 --- .../customer/views/auth/ResetPassword.vue | 137 --- .../customer/views/dashboard/Dashboard.vue | 11 - .../views/dashboard/DashboardStats.vue | 66 -- .../views/dashboard/DashboardStatsItem.vue | 64 - .../dashboard/DashboardStatsPlaceholder.vue | 20 - .../dashboard/DashboardStatsSmPlaceholder.vue | 31 - .../views/dashboard/DashboardTable.vue | 149 --- .../customer/views/estimates/Index.vue | 270 ----- .../scripts/customer/views/estimates/View.vue | 437 ------- .../scripts/customer/views/invoices/Index.vue | 281 ----- .../scripts/customer/views/invoices/View.vue | 405 ------- .../scripts/customer/views/payments/Index.vue | 261 ----- .../scripts/customer/views/payments/View.vue | 374 ------ .../views/settings/AddressInformation.vue | 282 ----- .../views/settings/CustomerSettings.vue | 245 ---- .../customer/views/settings/SettingsIndex.vue | 130 -- resources/scripts/global-components.js | 33 - resources/scripts/helpers/error-handling.js | 206 ---- resources/scripts/helpers/language-loader.js | 79 -- resources/scripts/helpers/use-popper.js | 27 - resources/scripts/helpers/utilities.js | 281 ----- resources/scripts/http/index.js | 40 - resources/scripts/main.js | 18 - resources/scripts/plugins/i18n.js | 9 - resources/scripts/router/index.js | 49 - resources/scripts/services/ls.js | 13 - resources/scripts/shims-vue.d.ts | 7 - resources/scripts/stores/dialog.js | 47 - resources/scripts/stores/modal.js | 75 -- resources/scripts/stores/notification.js | 28 - 424 files changed, 62746 deletions(-) delete mode 100644 resources/scripts/App.vue delete mode 100644 resources/scripts/InvoiceShelf.js delete mode 100644 resources/scripts/admin/admin-router.js delete mode 100644 resources/scripts/admin/components/CopyInputField.vue delete mode 100644 resources/scripts/admin/components/ImpersonationBanner.vue delete mode 100644 resources/scripts/admin/components/SelectNotePopup.vue delete mode 100644 resources/scripts/admin/components/charts/LineChart.vue delete mode 100644 resources/scripts/admin/components/currency-exchange-rate/ExchangeRateBulkUpdate.vue delete mode 100644 resources/scripts/admin/components/custom-fields/CreateCustomFields.vue delete mode 100644 resources/scripts/admin/components/custom-fields/CreateCustomFieldsSingle.vue delete mode 100644 resources/scripts/admin/components/custom-fields/types/DateTimeType.vue delete mode 100644 resources/scripts/admin/components/custom-fields/types/DateType.vue delete mode 100644 resources/scripts/admin/components/custom-fields/types/DropdownType.vue delete mode 100644 resources/scripts/admin/components/custom-fields/types/InputType.vue delete mode 100644 resources/scripts/admin/components/custom-fields/types/NumberType.vue delete mode 100644 resources/scripts/admin/components/custom-fields/types/PhoneType.vue delete mode 100644 resources/scripts/admin/components/custom-fields/types/SwitchType.vue delete mode 100644 resources/scripts/admin/components/custom-fields/types/TextAreaType.vue delete mode 100644 resources/scripts/admin/components/custom-fields/types/TimeType.vue delete mode 100644 resources/scripts/admin/components/custom-fields/types/UrlType.vue delete mode 100644 resources/scripts/admin/components/dropdowns/AdminCompanyIndexDropdown.vue delete mode 100644 resources/scripts/admin/components/dropdowns/AdminUserIndexDropdown.vue delete mode 100644 resources/scripts/admin/components/dropdowns/CustomFieldIndexDropdown.vue delete mode 100644 resources/scripts/admin/components/dropdowns/CustomerIndexDropdown.vue delete mode 100644 resources/scripts/admin/components/dropdowns/EstimateIndexDropdown.vue delete mode 100644 resources/scripts/admin/components/dropdowns/ExpenseCategoryIndexDropdown.vue delete mode 100644 resources/scripts/admin/components/dropdowns/ExpenseIndexDropdown.vue delete mode 100755 resources/scripts/admin/components/dropdowns/InvoiceIndexDropdown.vue delete mode 100644 resources/scripts/admin/components/dropdowns/ItemIndexDropdown.vue delete mode 100644 resources/scripts/admin/components/dropdowns/MemberIndexDropdown.vue delete mode 100644 resources/scripts/admin/components/dropdowns/NoteIndexDropdown.vue delete mode 100644 resources/scripts/admin/components/dropdowns/PaymentIndexDropdown.vue delete mode 100644 resources/scripts/admin/components/dropdowns/PaymentModeIndexDropdown.vue delete mode 100644 resources/scripts/admin/components/dropdowns/RecurringInvoiceIndexDropdown.vue delete mode 100644 resources/scripts/admin/components/dropdowns/RoleIndexDropdown.vue delete mode 100644 resources/scripts/admin/components/dropdowns/TaxTypeIndexDropdown.vue delete mode 100644 resources/scripts/admin/components/estimate-invoice-common/CreateItemRow.vue delete mode 100644 resources/scripts/admin/components/estimate-invoice-common/CreateItemRowTax.vue delete mode 100644 resources/scripts/admin/components/estimate-invoice-common/CreateItems.vue delete mode 100644 resources/scripts/admin/components/estimate-invoice-common/CreateNotesField.vue delete mode 100644 resources/scripts/admin/components/estimate-invoice-common/CreateTotal.vue delete mode 100644 resources/scripts/admin/components/estimate-invoice-common/CreateTotalTaxes.vue delete mode 100644 resources/scripts/admin/components/estimate-invoice-common/ExchangeRateConverter.vue delete mode 100644 resources/scripts/admin/components/estimate-invoice-common/NetTotal.vue delete mode 100644 resources/scripts/admin/components/estimate-invoice-common/SalesTax.vue delete mode 100644 resources/scripts/admin/components/estimate-invoice-common/SelectTaxPopup.vue delete mode 100644 resources/scripts/admin/components/estimate-invoice-common/SelectTemplateButton.vue delete mode 100644 resources/scripts/admin/components/modal-components/BackupModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/CategoryModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/CompanyModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/CustomerModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/DeleteCompanyModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/ExchangeRateBulkUpdateModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/ExchangeRateProviderModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/FileDiskModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/InviteMemberModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/ItemModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/ItemUnitModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/MailTestModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/NoteModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/PaymentModeModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/RolesModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/SelectTemplateModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/SendEstimateModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/SendInvoiceModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/SendPaymentModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/TaxTypeModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/TaxationAddressModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/custom-fields/CustomFieldModal.vue delete mode 100644 resources/scripts/admin/components/modal-components/custom-fields/OptionsCreate.vue delete mode 100644 resources/scripts/admin/components/modal-components/disks/DoSpacesDisk.vue delete mode 100644 resources/scripts/admin/components/modal-components/disks/DropboxDisk.vue delete mode 100644 resources/scripts/admin/components/modal-components/disks/LocalDisk.vue delete mode 100644 resources/scripts/admin/components/modal-components/disks/S3CompatDisk.vue delete mode 100644 resources/scripts/admin/components/modal-components/disks/S3Disk.vue delete mode 100644 resources/scripts/admin/layouts/LayoutBasic.vue delete mode 100644 resources/scripts/admin/layouts/LayoutInstallation.vue delete mode 100644 resources/scripts/admin/layouts/LayoutLogin.vue delete mode 100644 resources/scripts/admin/layouts/partials/TheSiteHeader.vue delete mode 100644 resources/scripts/admin/layouts/partials/TheSiteSidebar.vue delete mode 100644 resources/scripts/admin/stores/administration.js delete mode 100644 resources/scripts/admin/stores/auth.js delete mode 100644 resources/scripts/admin/stores/backup.js delete mode 100644 resources/scripts/admin/stores/category.js delete mode 100644 resources/scripts/admin/stores/company-mail.js delete mode 100644 resources/scripts/admin/stores/company.js delete mode 100644 resources/scripts/admin/stores/custom-field.js delete mode 100644 resources/scripts/admin/stores/customer.js delete mode 100644 resources/scripts/admin/stores/dashboard.js delete mode 100644 resources/scripts/admin/stores/disk.js delete mode 100644 resources/scripts/admin/stores/estimate.js delete mode 100644 resources/scripts/admin/stores/exchange-rate.js delete mode 100644 resources/scripts/admin/stores/expense.js delete mode 100644 resources/scripts/admin/stores/global.js delete mode 100644 resources/scripts/admin/stores/installation.js delete mode 100644 resources/scripts/admin/stores/invitation.js delete mode 100644 resources/scripts/admin/stores/invoice.js delete mode 100644 resources/scripts/admin/stores/item.js delete mode 100644 resources/scripts/admin/stores/mail-driver.js delete mode 100644 resources/scripts/admin/stores/members.js delete mode 100644 resources/scripts/admin/stores/module.js delete mode 100644 resources/scripts/admin/stores/note.js delete mode 100644 resources/scripts/admin/stores/payment.js delete mode 100644 resources/scripts/admin/stores/pdf-driver.js delete mode 100644 resources/scripts/admin/stores/recurring-invoice.js delete mode 100644 resources/scripts/admin/stores/reset.js delete mode 100644 resources/scripts/admin/stores/role.js delete mode 100644 resources/scripts/admin/stores/tax-type.js delete mode 100644 resources/scripts/admin/stores/user.js delete mode 100644 resources/scripts/admin/stub/abilities.js delete mode 100644 resources/scripts/admin/stub/address.js delete mode 100644 resources/scripts/admin/stub/custom-field.js delete mode 100644 resources/scripts/admin/stub/customer.js delete mode 100644 resources/scripts/admin/stub/estimate-item.js delete mode 100644 resources/scripts/admin/stub/estimate.js delete mode 100644 resources/scripts/admin/stub/expense.js delete mode 100644 resources/scripts/admin/stub/invoice-item.js delete mode 100644 resources/scripts/admin/stub/invoice.js delete mode 100644 resources/scripts/admin/stub/payment.js delete mode 100644 resources/scripts/admin/stub/recurring-invoice-item.js delete mode 100644 resources/scripts/admin/stub/recurring-invoice.js delete mode 100644 resources/scripts/admin/stub/tax.js delete mode 100644 resources/scripts/admin/views/NoCompanyView.vue delete mode 100644 resources/scripts/admin/views/SampleTable.vue delete mode 100644 resources/scripts/admin/views/administration/AdminDashboard.vue delete mode 100644 resources/scripts/admin/views/administration/companies/Edit.vue delete mode 100644 resources/scripts/admin/views/administration/companies/Index.vue delete mode 100644 resources/scripts/admin/views/administration/settings/SettingsIndex.vue delete mode 100644 resources/scripts/admin/views/administration/users/Edit.vue delete mode 100644 resources/scripts/admin/views/administration/users/Index.vue delete mode 100644 resources/scripts/admin/views/auth/ForgotPassword.vue delete mode 100644 resources/scripts/admin/views/auth/Login.vue delete mode 100644 resources/scripts/admin/views/auth/RegisterWithInvitation.vue delete mode 100644 resources/scripts/admin/views/auth/ResetPassword.vue delete mode 100644 resources/scripts/admin/views/customers/Create.vue delete mode 100644 resources/scripts/admin/views/customers/Index.vue delete mode 100644 resources/scripts/admin/views/customers/View.vue delete mode 100644 resources/scripts/admin/views/customers/partials/CustomerChart.vue delete mode 100644 resources/scripts/admin/views/customers/partials/CustomerChartPlaceholder.vue delete mode 100644 resources/scripts/admin/views/customers/partials/CustomerInfo.vue delete mode 100644 resources/scripts/admin/views/customers/partials/CustomerViewSidebar.vue delete mode 100644 resources/scripts/admin/views/dashboard/Dashboard.vue delete mode 100644 resources/scripts/admin/views/dashboard/DashboardChart.vue delete mode 100644 resources/scripts/admin/views/dashboard/DashboardChartPlaceholder.vue delete mode 100644 resources/scripts/admin/views/dashboard/DashboardStats.vue delete mode 100644 resources/scripts/admin/views/dashboard/DashboardStatsItem.vue delete mode 100644 resources/scripts/admin/views/dashboard/DashboardStatsPlaceholder.vue delete mode 100644 resources/scripts/admin/views/dashboard/DashboardStatsSmPlaceholder.vue delete mode 100644 resources/scripts/admin/views/dashboard/DashboardTable.vue delete mode 100644 resources/scripts/admin/views/errors/404.vue delete mode 100644 resources/scripts/admin/views/estimates/Index.vue delete mode 100644 resources/scripts/admin/views/estimates/View.vue delete mode 100644 resources/scripts/admin/views/estimates/create/EstimateCreate.vue delete mode 100644 resources/scripts/admin/views/estimates/create/EstimateCreateBasicFields.vue delete mode 100644 resources/scripts/admin/views/expenses/Create.vue delete mode 100644 resources/scripts/admin/views/expenses/Index.vue delete mode 100644 resources/scripts/admin/views/installation/Installation.vue delete mode 100644 resources/scripts/admin/views/installation/Step0SetLanguage.vue delete mode 100644 resources/scripts/admin/views/installation/Step1RequirementsCheck.vue delete mode 100644 resources/scripts/admin/views/installation/Step2PermissionCheck.vue delete mode 100644 resources/scripts/admin/views/installation/Step3DatabaseConfig.vue delete mode 100644 resources/scripts/admin/views/installation/Step4VerifyDomain.vue delete mode 100644 resources/scripts/admin/views/installation/Step5EmailConfig.vue delete mode 100644 resources/scripts/admin/views/installation/Step6AccountSettings.vue delete mode 100644 resources/scripts/admin/views/installation/Step7CompanyInfo.vue delete mode 100644 resources/scripts/admin/views/installation/Step8CompanyPreferences.vue delete mode 100644 resources/scripts/admin/views/installation/database/MysqlDatabase.vue delete mode 100644 resources/scripts/admin/views/installation/database/PgsqlDatabase.vue delete mode 100644 resources/scripts/admin/views/installation/database/SqliteDatabase.vue delete mode 100644 resources/scripts/admin/views/installation/mail-driver/BasicMailDriver.vue delete mode 100644 resources/scripts/admin/views/installation/mail-driver/MailgunMailDriver.vue delete mode 100644 resources/scripts/admin/views/installation/mail-driver/SesMailDriver.vue delete mode 100644 resources/scripts/admin/views/installation/mail-driver/SmtpMailDriver.vue delete mode 100644 resources/scripts/admin/views/invoices/Index.vue delete mode 100644 resources/scripts/admin/views/invoices/View.vue delete mode 100644 resources/scripts/admin/views/invoices/create/InvoiceCreate.vue delete mode 100644 resources/scripts/admin/views/invoices/create/InvoiceCreateBasicFields.vue delete mode 100644 resources/scripts/admin/views/items/Create.vue delete mode 100644 resources/scripts/admin/views/items/Index.vue delete mode 100644 resources/scripts/admin/views/members/Index.vue delete mode 100644 resources/scripts/admin/views/modules/Index.vue delete mode 100644 resources/scripts/admin/views/modules/View.vue delete mode 100644 resources/scripts/admin/views/modules/partials/ModuleCard.vue delete mode 100644 resources/scripts/admin/views/modules/partials/ModuleCardPlaceholder.vue delete mode 100644 resources/scripts/admin/views/modules/partials/ModulePlaceholder.vue delete mode 100644 resources/scripts/admin/views/modules/partials/RecentModuleCard.vue delete mode 100644 resources/scripts/admin/views/payments/Create.vue delete mode 100644 resources/scripts/admin/views/payments/Index.vue delete mode 100644 resources/scripts/admin/views/payments/View.vue delete mode 100644 resources/scripts/admin/views/recurring-invoices/Index.vue delete mode 100644 resources/scripts/admin/views/recurring-invoices/View.vue delete mode 100644 resources/scripts/admin/views/recurring-invoices/create/RecurringInvoiceCreate.vue delete mode 100644 resources/scripts/admin/views/recurring-invoices/create/RecurringInvoiceCreateBasicFields.vue delete mode 100644 resources/scripts/admin/views/recurring-invoices/partials/Invoices.vue delete mode 100644 resources/scripts/admin/views/recurring-invoices/partials/RecurringInvoiceInfo.vue delete mode 100644 resources/scripts/admin/views/recurring-invoices/partials/RecurringInvoiceViewSidebar.vue delete mode 100644 resources/scripts/admin/views/reports/ExpensesReport.vue delete mode 100644 resources/scripts/admin/views/reports/ProfitLossReport.vue delete mode 100644 resources/scripts/admin/views/reports/SalesReports.vue delete mode 100644 resources/scripts/admin/views/reports/TaxReport.vue delete mode 100644 resources/scripts/admin/views/reports/layout/Index.vue delete mode 100644 resources/scripts/admin/views/settings/BackupSetting.vue delete mode 100644 resources/scripts/admin/views/settings/CompanyInfoSettings.vue delete mode 100644 resources/scripts/admin/views/settings/CompanyMailConfigSetting.vue delete mode 100644 resources/scripts/admin/views/settings/CustomFieldsSetting.vue delete mode 100644 resources/scripts/admin/views/settings/ExchangeRateProviderSetting.vue delete mode 100644 resources/scripts/admin/views/settings/ExpenseCategorySetting.vue delete mode 100644 resources/scripts/admin/views/settings/FileDiskSetting.vue delete mode 100644 resources/scripts/admin/views/settings/MailConfigSetting.vue delete mode 100644 resources/scripts/admin/views/settings/NotesSetting.vue delete mode 100644 resources/scripts/admin/views/settings/NotificationsSetting.vue delete mode 100644 resources/scripts/admin/views/settings/PDFGenerationSetting.vue delete mode 100644 resources/scripts/admin/views/settings/PaymentsModeSetting.vue delete mode 100644 resources/scripts/admin/views/settings/PreferencesSetting.vue delete mode 100644 resources/scripts/admin/views/settings/RolesSettings.vue delete mode 100644 resources/scripts/admin/views/settings/SettingsIndex.vue delete mode 100644 resources/scripts/admin/views/settings/TaxTypesSetting.vue delete mode 100644 resources/scripts/admin/views/settings/UpdateAppSetting.vue delete mode 100644 resources/scripts/admin/views/settings/customization/CustomizationSetting.vue delete mode 100644 resources/scripts/admin/views/settings/customization/NumberCustomizer.vue delete mode 100644 resources/scripts/admin/views/settings/customization/estimates/EstimatesTab.vue delete mode 100644 resources/scripts/admin/views/settings/customization/estimates/EstimatesTabConvertEstimate.vue delete mode 100644 resources/scripts/admin/views/settings/customization/estimates/EstimatesTabDefaultFormats.vue delete mode 100644 resources/scripts/admin/views/settings/customization/estimates/EstimatesTabEstimateNumber.vue delete mode 100644 resources/scripts/admin/views/settings/customization/estimates/EstimatesTabExpiryDate.vue delete mode 100644 resources/scripts/admin/views/settings/customization/invoices/InvoicesTab.vue delete mode 100644 resources/scripts/admin/views/settings/customization/invoices/InvoicesTabDefaultFormats.vue delete mode 100644 resources/scripts/admin/views/settings/customization/invoices/InvoicesTabDueDate.vue delete mode 100644 resources/scripts/admin/views/settings/customization/invoices/InvoicesTabInvoiceNumber.vue delete mode 100644 resources/scripts/admin/views/settings/customization/invoices/InvoicesTabRetrospective.vue delete mode 100644 resources/scripts/admin/views/settings/customization/items/ItemsTab.vue delete mode 100644 resources/scripts/admin/views/settings/customization/payments/PaymentsTab.vue delete mode 100644 resources/scripts/admin/views/settings/customization/payments/PaymentsTabDefaultFormats.vue delete mode 100644 resources/scripts/admin/views/settings/customization/payments/PaymentsTabPaymentNumber.vue delete mode 100644 resources/scripts/admin/views/settings/mail-driver/BasicMailDriver.vue delete mode 100644 resources/scripts/admin/views/settings/mail-driver/MailgunMailDriver.vue delete mode 100644 resources/scripts/admin/views/settings/mail-driver/SesMailDriver.vue delete mode 100644 resources/scripts/admin/views/settings/mail-driver/SmtpMailDriver.vue delete mode 100644 resources/scripts/admin/views/settings/pdf-driver/DomPDFDriver.vue delete mode 100644 resources/scripts/admin/views/settings/pdf-driver/GotenbergDriver.vue delete mode 100644 resources/scripts/admin/views/user-settings/GeneralTab.vue delete mode 100644 resources/scripts/admin/views/user-settings/ProfilePhotoTab.vue delete mode 100644 resources/scripts/admin/views/user-settings/SecurityTab.vue delete mode 100644 resources/scripts/admin/views/user-settings/UserSettingsIndex.vue delete mode 100644 resources/scripts/components/CompanySwitcher.vue delete mode 100644 resources/scripts/components/GlobalSearchBar.vue delete mode 100644 resources/scripts/components/InvoiceInformationCard.vue delete mode 100644 resources/scripts/components/InvoicePublicPage.vue delete mode 100644 resources/scripts/components/base-select/BaseMultiselect.d.ts delete mode 100755 resources/scripts/components/base-select/BaseMultiselect.vue delete mode 100644 resources/scripts/components/base-select/composables/useClasses.js delete mode 100644 resources/scripts/components/base-select/composables/useData.js delete mode 100644 resources/scripts/components/base-select/composables/useDropdown.js delete mode 100644 resources/scripts/components/base-select/composables/useKeyboard.js delete mode 100644 resources/scripts/components/base-select/composables/useMultiselect.js delete mode 100644 resources/scripts/components/base-select/composables/useOptions.js delete mode 100644 resources/scripts/components/base-select/composables/usePointer.js delete mode 100644 resources/scripts/components/base-select/composables/usePointerAction.js delete mode 100644 resources/scripts/components/base-select/composables/useSearch.js delete mode 100644 resources/scripts/components/base-select/composables/useValue.js delete mode 100644 resources/scripts/components/base-select/index.d.ts delete mode 100644 resources/scripts/components/base-select/utils/arraysEqual.js delete mode 100644 resources/scripts/components/base-select/utils/isNullish.js delete mode 100644 resources/scripts/components/base-select/utils/isObject.js delete mode 100644 resources/scripts/components/base-select/utils/normalize.js delete mode 100644 resources/scripts/components/base/BaseBadge.vue delete mode 100644 resources/scripts/components/base/BaseBreadcrumb.vue delete mode 100644 resources/scripts/components/base/BaseBreadcrumbItem.vue delete mode 100644 resources/scripts/components/base/BaseButton.vue delete mode 100644 resources/scripts/components/base/BaseCard.vue delete mode 100644 resources/scripts/components/base/BaseCheckbox.vue delete mode 100644 resources/scripts/components/base/BaseContentPlaceholders.vue delete mode 100644 resources/scripts/components/base/BaseContentPlaceholdersBox.vue delete mode 100644 resources/scripts/components/base/BaseContentPlaceholdersHeading.vue delete mode 100644 resources/scripts/components/base/BaseContentPlaceholdersText.vue delete mode 100644 resources/scripts/components/base/BaseCustomInput.vue delete mode 100644 resources/scripts/components/base/BaseCustomTag.vue delete mode 100644 resources/scripts/components/base/BaseCustomerAddressDisplay.vue delete mode 100644 resources/scripts/components/base/BaseCustomerSelectInput.vue delete mode 100644 resources/scripts/components/base/BaseCustomerSelectPopup.vue delete mode 100644 resources/scripts/components/base/BaseDatePicker.vue delete mode 100644 resources/scripts/components/base/BaseDescriptionList.vue delete mode 100644 resources/scripts/components/base/BaseDescriptionListItem.vue delete mode 100644 resources/scripts/components/base/BaseDialog.vue delete mode 100644 resources/scripts/components/base/BaseDivider.vue delete mode 100644 resources/scripts/components/base/BaseDropdown.vue delete mode 100644 resources/scripts/components/base/BaseDropdownItem.vue delete mode 100644 resources/scripts/components/base/BaseEmptyPlaceholder.vue delete mode 100644 resources/scripts/components/base/BaseErrorAlert.vue delete mode 100644 resources/scripts/components/base/BaseEstimateStatusBadge.vue delete mode 100644 resources/scripts/components/base/BaseEstimateStatusLabel.vue delete mode 100644 resources/scripts/components/base/BaseFileUploader.vue delete mode 100644 resources/scripts/components/base/BaseFilterWrapper.vue delete mode 100644 resources/scripts/components/base/BaseFormatMoney.vue delete mode 100644 resources/scripts/components/base/BaseGlobalLoader.vue delete mode 100644 resources/scripts/components/base/BaseHeading.vue delete mode 100644 resources/scripts/components/base/BaseIcon.vue delete mode 100644 resources/scripts/components/base/BaseInfoAlert.vue delete mode 100644 resources/scripts/components/base/BaseInput.vue delete mode 100644 resources/scripts/components/base/BaseInputGrid.vue delete mode 100644 resources/scripts/components/base/BaseInputGroup.vue delete mode 100644 resources/scripts/components/base/BaseInvoiceStatusBadge.vue delete mode 100644 resources/scripts/components/base/BaseInvoiceStatusLabel.vue delete mode 100644 resources/scripts/components/base/BaseItemSelect.vue delete mode 100644 resources/scripts/components/base/BaseLabel.vue delete mode 100644 resources/scripts/components/base/BaseModal.vue delete mode 100644 resources/scripts/components/base/BaseMoney.vue delete mode 100644 resources/scripts/components/base/BaseNewBadge.vue delete mode 100644 resources/scripts/components/base/BasePage.vue delete mode 100644 resources/scripts/components/base/BasePageHeader.vue delete mode 100644 resources/scripts/components/base/BasePaidStatusBadge.vue delete mode 100644 resources/scripts/components/base/BaseRadio.vue delete mode 100644 resources/scripts/components/base/BaseRating.vue delete mode 100644 resources/scripts/components/base/BaseRecurringInvoiceStatusBadge.vue delete mode 100644 resources/scripts/components/base/BaseRecurringInvoiceStatusLabel.vue delete mode 100644 resources/scripts/components/base/BaseScrollPane.vue delete mode 100644 resources/scripts/components/base/BaseSelectAction.vue delete mode 100644 resources/scripts/components/base/BaseSelectInput.vue delete mode 100644 resources/scripts/components/base/BaseSettingCard.vue delete mode 100644 resources/scripts/components/base/BaseSpinner.vue delete mode 100644 resources/scripts/components/base/BaseSwitch.vue delete mode 100644 resources/scripts/components/base/BaseSwitchSection.vue delete mode 100644 resources/scripts/components/base/BaseTab.vue delete mode 100644 resources/scripts/components/base/BaseTabGroup.vue delete mode 100644 resources/scripts/components/base/BaseText.vue delete mode 100644 resources/scripts/components/base/BaseTextarea.vue delete mode 100644 resources/scripts/components/base/BaseTimePicker.vue delete mode 100644 resources/scripts/components/base/BaseWizard.vue delete mode 100644 resources/scripts/components/base/BaseWizardNavigation.vue delete mode 100644 resources/scripts/components/base/BaseWizardStep.vue delete mode 100644 resources/scripts/components/base/base-editor/BaseEditor.vue delete mode 100644 resources/scripts/components/base/base-editor/icons/BoldIcon.vue delete mode 100644 resources/scripts/components/base/base-editor/icons/CodeBlockIcon.vue delete mode 100644 resources/scripts/components/base/base-editor/icons/CodingIcon.vue delete mode 100644 resources/scripts/components/base/base-editor/icons/ItalicIcon.vue delete mode 100644 resources/scripts/components/base/base-editor/icons/ListIcon.vue delete mode 100644 resources/scripts/components/base/base-editor/icons/ListUlIcon.vue delete mode 100644 resources/scripts/components/base/base-editor/icons/MenuCenterIcon.vue delete mode 100644 resources/scripts/components/base/base-editor/icons/ParagraphIcon.vue delete mode 100644 resources/scripts/components/base/base-editor/icons/QuoteIcon.vue delete mode 100644 resources/scripts/components/base/base-editor/icons/RedoIcon.vue delete mode 100644 resources/scripts/components/base/base-editor/icons/StrikethroughIcon.vue delete mode 100644 resources/scripts/components/base/base-editor/icons/UnderlineIcon.vue delete mode 100644 resources/scripts/components/base/base-editor/icons/UndoIcon.vue delete mode 100644 resources/scripts/components/base/base-editor/icons/index.js delete mode 100644 resources/scripts/components/base/base-table/BaseTable.vue delete mode 100644 resources/scripts/components/base/base-table/BaseTablePagination.vue delete mode 100644 resources/scripts/components/base/base-table/Column.js delete mode 100644 resources/scripts/components/base/base-table/Row.js delete mode 100644 resources/scripts/components/base/base-table/helpers.js delete mode 100644 resources/scripts/components/icons/DragIcon.vue delete mode 100644 resources/scripts/components/icons/LoadingIcon.vue delete mode 100644 resources/scripts/components/icons/MainLogo.vue delete mode 100644 resources/scripts/components/icons/SaveIcon.vue delete mode 100644 resources/scripts/components/icons/SpinnerIcon.vue delete mode 100644 resources/scripts/components/icons/dashboard/CustomerIcon.vue delete mode 100644 resources/scripts/components/icons/dashboard/DollarIcon.vue delete mode 100644 resources/scripts/components/icons/dashboard/EstimateIcon.vue delete mode 100644 resources/scripts/components/icons/dashboard/InvoiceIcon.vue delete mode 100644 resources/scripts/components/icons/dashboard/PaymentIcon.vue delete mode 100644 resources/scripts/components/icons/empty/AstronautIcon.vue delete mode 100644 resources/scripts/components/icons/empty/CapsuleIcon.vue delete mode 100644 resources/scripts/components/icons/empty/MoonwalkerIcon.vue delete mode 100644 resources/scripts/components/icons/empty/ObservatoryIcon.vue delete mode 100644 resources/scripts/components/icons/empty/SatelliteIcon.vue delete mode 100644 resources/scripts/components/icons/empty/UFOIcon.vue delete mode 100644 resources/scripts/components/list/BaseList.vue delete mode 100644 resources/scripts/components/list/BaseListItem.vue delete mode 100644 resources/scripts/components/notifications/NotificationItem.vue delete mode 100644 resources/scripts/components/notifications/NotificationRoot.vue delete mode 100644 resources/scripts/components/svg/LoginBackground.vue delete mode 100644 resources/scripts/components/svg/LoginBackgroundOverlay.vue delete mode 100644 resources/scripts/components/svg/LoginBottomVector.vue delete mode 100644 resources/scripts/components/svg/LoginPlanetCrater.vue delete mode 100644 resources/scripts/customer/customer-router.js delete mode 100644 resources/scripts/customer/helpers/error-handling.js delete mode 100644 resources/scripts/customer/layouts/LayoutBasic.vue delete mode 100644 resources/scripts/customer/layouts/LayoutLogin.vue delete mode 100644 resources/scripts/customer/layouts/partials/TheSiteFooter.vue delete mode 100644 resources/scripts/customer/layouts/partials/TheSiteHeader.vue delete mode 100644 resources/scripts/customer/layouts/partials/TheSiteSidebar.vue delete mode 100644 resources/scripts/customer/stores/auth.js delete mode 100644 resources/scripts/customer/stores/customer.js delete mode 100644 resources/scripts/customer/stores/dashboard.js delete mode 100644 resources/scripts/customer/stores/estimate.js delete mode 100644 resources/scripts/customer/stores/global.js delete mode 100644 resources/scripts/customer/stores/invoice.js delete mode 100644 resources/scripts/customer/stores/payment.js delete mode 100644 resources/scripts/customer/stores/user.js delete mode 100644 resources/scripts/customer/stubs/address.js delete mode 100644 resources/scripts/customer/views/BaseCheckon.vue delete mode 100644 resources/scripts/customer/views/SamplePage.vue delete mode 100644 resources/scripts/customer/views/auth/ForgotPassword.vue delete mode 100644 resources/scripts/customer/views/auth/Login.vue delete mode 100644 resources/scripts/customer/views/auth/ResetPassword.vue delete mode 100644 resources/scripts/customer/views/dashboard/Dashboard.vue delete mode 100644 resources/scripts/customer/views/dashboard/DashboardStats.vue delete mode 100644 resources/scripts/customer/views/dashboard/DashboardStatsItem.vue delete mode 100644 resources/scripts/customer/views/dashboard/DashboardStatsPlaceholder.vue delete mode 100644 resources/scripts/customer/views/dashboard/DashboardStatsSmPlaceholder.vue delete mode 100644 resources/scripts/customer/views/dashboard/DashboardTable.vue delete mode 100644 resources/scripts/customer/views/estimates/Index.vue delete mode 100644 resources/scripts/customer/views/estimates/View.vue delete mode 100644 resources/scripts/customer/views/invoices/Index.vue delete mode 100644 resources/scripts/customer/views/invoices/View.vue delete mode 100644 resources/scripts/customer/views/payments/Index.vue delete mode 100644 resources/scripts/customer/views/payments/View.vue delete mode 100644 resources/scripts/customer/views/settings/AddressInformation.vue delete mode 100644 resources/scripts/customer/views/settings/CustomerSettings.vue delete mode 100644 resources/scripts/customer/views/settings/SettingsIndex.vue delete mode 100644 resources/scripts/global-components.js delete mode 100644 resources/scripts/helpers/error-handling.js delete mode 100644 resources/scripts/helpers/language-loader.js delete mode 100644 resources/scripts/helpers/use-popper.js delete mode 100644 resources/scripts/helpers/utilities.js delete mode 100644 resources/scripts/http/index.js delete mode 100644 resources/scripts/main.js delete mode 100644 resources/scripts/plugins/i18n.js delete mode 100644 resources/scripts/router/index.js delete mode 100644 resources/scripts/services/ls.js delete mode 100644 resources/scripts/shims-vue.d.ts delete mode 100644 resources/scripts/stores/dialog.js delete mode 100644 resources/scripts/stores/modal.js delete mode 100644 resources/scripts/stores/notification.js diff --git a/resources/scripts/App.vue b/resources/scripts/App.vue deleted file mode 100644 index 521b699e..00000000 --- a/resources/scripts/App.vue +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/resources/scripts/InvoiceShelf.js b/resources/scripts/InvoiceShelf.js deleted file mode 100644 index b619defa..00000000 --- a/resources/scripts/InvoiceShelf.js +++ /dev/null @@ -1,76 +0,0 @@ -import { createApp } from 'vue' -import App from '@/scripts/App.vue' -import { createI18n } from 'vue-i18n' -import messages from '/lang/locales' -import router from '@/scripts/router/index' -import { defineGlobalComponents } from './global-components' -import utils from '@/scripts/helpers/utilities.js' -import _ from 'lodash' -import { VTooltip } from 'v-tooltip' -import { setI18nLanguage } from '@/scripts/helpers/language-loader.js' - -const app = createApp(App) - -export default class InvoiceShelf { - constructor() { - this.bootingCallbacks = [] - this.messages = messages - this.i18n = null - } - - booting(callback) { - this.bootingCallbacks.push(callback) - } - - executeCallbacks() { - this.bootingCallbacks.forEach((callback) => { - callback(app, router) - }) - } - - addMessages(moduleMessages = []) { - _.merge(this.messages, moduleMessages) - } - - /** - * Dynamically load and set a language - * @param {string} locale - Language code to load - * @returns {Promise} - */ - async loadLanguage(locale) { - if (this.i18n) { - await setI18nLanguage(this.i18n, locale) - } - } - - start() { - this.executeCallbacks() - - defineGlobalComponents(app) - - app.provide('$utils', utils) - - this.i18n = createI18n({ - legacy: false, - locale: 'en', - fallbackLocale: 'en', - globalInjection: true, - messages: this.messages, - }) - - window.i18n = this.i18n - - // Expose language loader globally - window.loadLanguage = this.loadLanguage.bind(this) - - const { createPinia } = window.pinia - - app.use(router) - app.use(this.i18n) - app.use(createPinia()) - app.provide('utils', utils) - app.directive('tooltip', VTooltip) - - app.mount('body') - } -} diff --git a/resources/scripts/admin/admin-router.js b/resources/scripts/admin/admin-router.js deleted file mode 100644 index 76a9473a..00000000 --- a/resources/scripts/admin/admin-router.js +++ /dev/null @@ -1,586 +0,0 @@ -import abilities from '@/scripts/admin/stub/abilities' - -const LayoutInstallation = () => - import('@/scripts/admin/layouts/LayoutInstallation.vue') - -const Login = () => import('@/scripts/admin/views/auth/Login.vue') -const LayoutBasic = () => import('@/scripts/admin/layouts/LayoutBasic.vue') -const LayoutLogin = () => import('@/scripts/admin/layouts/LayoutLogin.vue') -const ResetPassword = () => - import('@/scripts/admin/views/auth/ResetPassword.vue') -const ForgotPassword = () => - import('@/scripts/admin/views/auth/ForgotPassword.vue') - -// Dashboard -const Dashboard = () => import('@/scripts/admin/views/dashboard/Dashboard.vue') - -// Customers -const CustomerIndex = () => import('@/scripts/admin/views/customers/Index.vue') -const CustomerCreate = () => - import('@/scripts/admin/views/customers/Create.vue') -const CustomerView = () => import('@/scripts/admin/views/customers/View.vue') - -//Settings -const SettingsIndex = () => - import('@/scripts/admin/views/settings/SettingsIndex.vue') -const UserSettingsIndex = () => - import('@/scripts/admin/views/user-settings/UserSettingsIndex.vue') -const UserSettingsGeneral = () => - import('@/scripts/admin/views/user-settings/GeneralTab.vue') -const UserSettingsProfilePhoto = () => - import('@/scripts/admin/views/user-settings/ProfilePhotoTab.vue') -const UserSettingsSecurity = () => - import('@/scripts/admin/views/user-settings/SecurityTab.vue') -const CompanyInfo = () => - import('@/scripts/admin/views/settings/CompanyInfoSettings.vue') -const Preferences = () => - import('@/scripts/admin/views/settings/PreferencesSetting.vue') -const Customization = () => - import( - '@/scripts/admin/views/settings/customization/CustomizationSetting.vue' - ) -const Notifications = () => - import('@/scripts/admin/views/settings/NotificationsSetting.vue') -const TaxTypes = () => - import('@/scripts/admin/views/settings/TaxTypesSetting.vue') -const PaymentMode = () => - import('@/scripts/admin/views/settings/PaymentsModeSetting.vue') -const CustomFieldsIndex = () => - import('@/scripts/admin/views/settings/CustomFieldsSetting.vue') -const NotesSetting = () => - import('@/scripts/admin/views/settings/NotesSetting.vue') -const ExpenseCategory = () => - import('@/scripts/admin/views/settings/ExpenseCategorySetting.vue') -const ExchangeRateSetting = () => - import('@/scripts/admin/views/settings/ExchangeRateProviderSetting.vue') -const RolesSettings = () => - import('@/scripts/admin/views/settings/RolesSettings.vue') -const CompanyMailConfig = () => - import('@/scripts/admin/views/settings/CompanyMailConfigSetting.vue') - -// Items -const ItemsIndex = () => import('@/scripts/admin/views/items/Index.vue') -const ItemCreate = () => import('@/scripts/admin/views/items/Create.vue') - -// Expenses -const ExpensesIndex = () => import('@/scripts/admin/views/expenses/Index.vue') -const ExpenseCreate = () => import('@/scripts/admin/views/expenses/Create.vue') - -// Members -const MemberIndex = () => import('@/scripts/admin/views/members/Index.vue') - -// Estimates -const EstimateIndex = () => import('@/scripts/admin/views/estimates/Index.vue') -const EstimateCreate = () => - import('@/scripts/admin/views/estimates/create/EstimateCreate.vue') -const EstimateView = () => import('@/scripts/admin/views/estimates/View.vue') - -// Payments -const PaymentsIndex = () => import('@/scripts/admin/views/payments/Index.vue') -const PaymentCreate = () => import('@/scripts/admin/views/payments/Create.vue') -const PaymentView = () => import('@/scripts/admin/views/payments/View.vue') - -const NotFoundPage = () => import('@/scripts/admin/views/errors/404.vue') - -// Invoice -const InvoiceIndex = () => import('@/scripts/admin/views/invoices/Index.vue') -const InvoiceCreate = () => - import('@/scripts/admin/views/invoices/create/InvoiceCreate.vue') -const InvoiceView = () => import('@/scripts/admin/views/invoices/View.vue') - -// Recurring Invoice -const RecurringInvoiceIndex = () => - import('@/scripts/admin/views/recurring-invoices/Index.vue') -const RecurringInvoiceCreate = () => - import( - '@/scripts/admin/views/recurring-invoices/create/RecurringInvoiceCreate.vue' - ) -const RecurringInvoiceView = () => - import('@/scripts/admin/views/recurring-invoices/View.vue') - -// Reports -const ReportsIndex = () => - import('@/scripts/admin/views/reports/layout/Index.vue') - -// Installation -const Installation = () => - import('@/scripts/admin/views/installation/Installation.vue') - -// Modules -const ModuleIndex = () => import('@/scripts/admin/views/modules/Index.vue') - -const ModuleView = () => import('@/scripts/admin/views/modules/View.vue') -const InvoicePublicPage = () => - import('@/scripts/components/InvoicePublicPage.vue') - -// Administration (Super Admin) -const AdminDashboard = () => - import('@/scripts/admin/views/administration/AdminDashboard.vue') -const AdminCompaniesIndex = () => - import('@/scripts/admin/views/administration/companies/Index.vue') -const AdminCompaniesEdit = () => - import('@/scripts/admin/views/administration/companies/Edit.vue') -const AdminUsersIndex = () => - import('@/scripts/admin/views/administration/users/Index.vue') -const AdminUsersEdit = () => - import('@/scripts/admin/views/administration/users/Edit.vue') -const AdminSettingsIndex = () => - import('@/scripts/admin/views/administration/settings/SettingsIndex.vue') -const AdminMailConfig = () => - import('@/scripts/admin/views/settings/MailConfigSetting.vue') -const AdminPDFGeneration = () => - import('@/scripts/admin/views/settings/PDFGenerationSetting.vue') -const AdminBackup = () => - import('@/scripts/admin/views/settings/BackupSetting.vue') -const AdminUpdateApp = () => - import('@/scripts/admin/views/settings/UpdateAppSetting.vue') -const AdminFileDisk = () => - import('@/scripts/admin/views/settings/FileDiskSetting.vue') - -const NoCompanyView = () => - import('@/scripts/admin/views/NoCompanyView.vue') -const RegisterWithInvitation = () => - import('@/scripts/admin/views/auth/RegisterWithInvitation.vue') - -export default [ - { - path: '/register', - name: 'register', - component: RegisterWithInvitation, - meta: { requiresAuth: false }, - }, - { - path: '/installation', - component: LayoutInstallation, - meta: { requiresAuth: false }, - children: [ - { - path: '/installation', - component: Installation, - name: 'installation', - }, - ], - }, - - { - path: '/customer/invoices/view/:hash', - component: InvoicePublicPage, - name: 'invoice.public', - }, - - { - path: '/', - component: LayoutLogin, - meta: { requiresAuth: false, redirectIfAuthenticated: true }, - children: [ - { - path: '', - component: Login, - }, - { - path: 'login', - name: 'login', - component: Login, - }, - { - path: 'forgot-password', - component: ForgotPassword, - name: 'forgot-password', - }, - { - path: '/reset-password/:token', - component: ResetPassword, - name: 'reset-password', - }, - ], - }, - { - path: '/admin', - component: LayoutBasic, - meta: { requiresAuth: true }, - children: [ - { - path: 'no-company', - name: 'no.company', - component: NoCompanyView, - }, - { - path: 'dashboard', - name: 'dashboard', - meta: { ability: abilities.DASHBOARD }, - component: Dashboard, - }, - - // Customers - { - path: 'customers', - meta: { ability: abilities.VIEW_CUSTOMER }, - component: CustomerIndex, - }, - { - path: 'customers/create', - name: 'customers.create', - meta: { ability: abilities.CREATE_CUSTOMER }, - component: CustomerCreate, - }, - { - path: 'customers/:id/edit', - name: 'customers.edit', - meta: { ability: abilities.EDIT_CUSTOMER }, - component: CustomerCreate, - }, - { - path: 'customers/:id/view', - name: 'customers.view', - meta: { ability: abilities.VIEW_CUSTOMER }, - component: CustomerView, - }, - // Payments - { - path: 'payments', - meta: { ability: abilities.VIEW_PAYMENT }, - component: PaymentsIndex, - }, - { - path: 'payments/create', - name: 'payments.create', - meta: { ability: abilities.CREATE_PAYMENT }, - component: PaymentCreate, - }, - { - path: 'payments/:id/create', - name: 'invoice.payments.create', - meta: { ability: abilities.CREATE_PAYMENT }, - component: PaymentCreate, - }, - { - path: 'payments/:id/edit', - name: 'payments.edit', - meta: { ability: abilities.EDIT_PAYMENT }, - component: PaymentCreate, - }, - { - path: 'payments/:id/view', - name: 'payments.view', - meta: { ability: abilities.VIEW_PAYMENT }, - component: PaymentView, - }, - - // user settings - { - path: 'user-settings', - name: 'user.settings', - component: UserSettingsIndex, - children: [ - { - path: 'general', - name: 'user.settings.general', - component: UserSettingsGeneral, - }, - { - path: 'profile-photo', - name: 'user.settings.profile-photo', - component: UserSettingsProfilePhoto, - }, - { - path: 'security', - name: 'user.settings.security', - component: UserSettingsSecurity, - }, - ], - }, - - //settings - { - path: 'settings', - name: 'settings', - component: SettingsIndex, - children: [ - { - path: 'company-info', - name: 'company.info', - meta: { isOwner: true }, - component: CompanyInfo, - }, - { - path: 'preferences', - name: 'preferences', - meta: { isOwner: true }, - component: Preferences, - }, - { - path: 'customization', - name: 'customization', - meta: { isOwner: true }, - component: Customization, - }, - { - path: 'notifications', - name: 'notifications', - meta: { isOwner: true }, - component: Notifications, - }, - { - path: 'roles-settings', - name: 'roles.settings', - meta: { isOwner: true }, - component: RolesSettings, - }, - { - path: 'exchange-rate-provider', - name: 'exchange.rate.provider', - meta: { ability: abilities.VIEW_EXCHANGE_RATE }, - component: ExchangeRateSetting, - }, - { - path: 'tax-types', - name: 'tax.types', - meta: { ability: abilities.VIEW_TAX_TYPE }, - component: TaxTypes, - }, - { - path: 'notes', - name: 'notes', - meta: { ability: abilities.VIEW_ALL_NOTES }, - component: NotesSetting, - }, - { - path: 'payment-mode', - name: 'payment.mode', - component: PaymentMode, - }, - { - path: 'custom-fields', - name: 'custom.fields', - meta: { ability: abilities.VIEW_CUSTOM_FIELDS }, - component: CustomFieldsIndex, - }, - { - path: 'expense-category', - name: 'expense.category', - meta: { ability: abilities.VIEW_EXPENSE }, - component: ExpenseCategory, - }, - { - path: 'mail-configuration', - name: 'company.mailconfig', - meta: { isOwner: true }, - component: CompanyMailConfig, - }, - ], - }, - - // Items - { - path: 'items', - meta: { ability: abilities.VIEW_ITEM }, - component: ItemsIndex, - }, - { - path: 'items/create', - name: 'items.create', - meta: { ability: abilities.CREATE_ITEM }, - component: ItemCreate, - }, - { - path: 'items/:id/edit', - name: 'items.edit', - meta: { ability: abilities.EDIT_ITEM }, - component: ItemCreate, - }, - - // Expenses - { - path: 'expenses', - meta: { ability: abilities.VIEW_EXPENSE }, - component: ExpensesIndex, - }, - { - path: 'expenses/create', - name: 'expenses.create', - meta: { ability: abilities.CREATE_EXPENSE }, - component: ExpenseCreate, - }, - { - path: 'expenses/:id/edit', - name: 'expenses.edit', - meta: { ability: abilities.EDIT_EXPENSE }, - component: ExpenseCreate, - }, - - // Members - { - path: 'members', - name: 'members.index', - meta: { isOwner: true }, - component: MemberIndex, - }, - - // Estimates - { - path: 'estimates', - name: 'estimates.index', - meta: { ability: abilities.VIEW_ESTIMATE }, - component: EstimateIndex, - }, - { - path: 'estimates/create', - name: 'estimates.create', - meta: { ability: abilities.CREATE_ESTIMATE }, - component: EstimateCreate, - }, - { - path: 'estimates/:id/view', - name: 'estimates.view', - meta: { ability: abilities.VIEW_ESTIMATE }, - component: EstimateView, - }, - { - path: 'estimates/:id/edit', - name: 'estimates.edit', - meta: { ability: abilities.EDIT_ESTIMATE }, - component: EstimateCreate, - }, - - // Invoices - { - path: 'invoices', - name: 'invoices.index', - meta: { ability: abilities.VIEW_INVOICE }, - component: InvoiceIndex, - }, - { - path: 'invoices/create', - name: 'invoices.create', - meta: { ability: abilities.CREATE_INVOICE }, - component: InvoiceCreate, - }, - { - path: 'invoices/:id/view', - name: 'invoices.view', - meta: { ability: abilities.VIEW_INVOICE }, - component: InvoiceView, - }, - { - path: 'invoices/:id/edit', - name: 'invoices.edit', - meta: { ability: abilities.EDIT_INVOICE }, - component: InvoiceCreate, - }, - - // Recurring Invoices - { - path: 'recurring-invoices', - name: 'recurring-invoices.index', - meta: { ability: abilities.VIEW_RECURRING_INVOICE }, - component: RecurringInvoiceIndex, - }, - { - path: 'recurring-invoices/create', - name: 'recurring-invoices.create', - meta: { ability: abilities.CREATE_RECURRING_INVOICE }, - component: RecurringInvoiceCreate, - }, - { - path: 'recurring-invoices/:id/view', - name: 'recurring-invoices.view', - meta: { ability: abilities.VIEW_RECURRING_INVOICE }, - component: RecurringInvoiceView, - }, - { - path: 'recurring-invoices/:id/edit', - name: 'recurring-invoices.edit', - meta: { ability: abilities.EDIT_RECURRING_INVOICE }, - component: RecurringInvoiceCreate, - }, - - // Modules - { - path: 'modules', - name: 'modules.index', - meta: { isOwner: true }, - component: ModuleIndex, - }, - - { - path: 'modules/:slug', - name: 'modules.view', - meta: { isOwner: true }, - component: ModuleView, - }, - - // Reports - { - path: 'reports', - meta: { ability: abilities.VIEW_FINANCIAL_REPORT }, - component: ReportsIndex, - }, - - // Administration (Super Admin) - { - path: 'administration/dashboard', - name: 'admin.dashboard', - meta: { isSuperAdmin: true }, - component: AdminDashboard, - }, - { - path: 'administration/companies', - name: 'admin.companies.index', - meta: { isSuperAdmin: true }, - component: AdminCompaniesIndex, - }, - { - path: 'administration/companies/:id/edit', - name: 'admin.companies.edit', - meta: { isSuperAdmin: true }, - component: AdminCompaniesEdit, - }, - { - path: 'administration/users', - name: 'admin.users.index', - meta: { isSuperAdmin: true }, - component: AdminUsersIndex, - }, - { - path: 'administration/users/:id/edit', - name: 'admin.users.edit', - meta: { isSuperAdmin: true }, - component: AdminUsersEdit, - }, - { - path: 'administration/settings', - name: 'admin.settings', - meta: { isSuperAdmin: true }, - component: AdminSettingsIndex, - children: [ - { - path: 'mail-configuration', - name: 'admin.settings.mail', - component: AdminMailConfig, - }, - { - path: 'pdf-generation', - name: 'admin.settings.pdf', - component: AdminPDFGeneration, - }, - { - path: 'backup', - name: 'admin.settings.backup', - component: AdminBackup, - }, - { - path: 'update-app', - name: 'admin.settings.update', - component: AdminUpdateApp, - }, - { - path: 'file-disk', - name: 'admin.settings.filedisk', - component: AdminFileDisk, - }, - ], - }, - ], - }, - { path: '/:catchAll(.*)', component: NotFoundPage }, -] diff --git a/resources/scripts/admin/components/CopyInputField.vue b/resources/scripts/admin/components/CopyInputField.vue deleted file mode 100644 index 7e9512db..00000000 --- a/resources/scripts/admin/components/CopyInputField.vue +++ /dev/null @@ -1,98 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/ImpersonationBanner.vue b/resources/scripts/admin/components/ImpersonationBanner.vue deleted file mode 100644 index 3aaa7c5c..00000000 --- a/resources/scripts/admin/components/ImpersonationBanner.vue +++ /dev/null @@ -1,41 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/SelectNotePopup.vue b/resources/scripts/admin/components/SelectNotePopup.vue deleted file mode 100644 index 0cf7ed39..00000000 --- a/resources/scripts/admin/components/SelectNotePopup.vue +++ /dev/null @@ -1,209 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/charts/LineChart.vue b/resources/scripts/admin/components/charts/LineChart.vue deleted file mode 100644 index 0b6026f6..00000000 --- a/resources/scripts/admin/components/charts/LineChart.vue +++ /dev/null @@ -1,211 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/currency-exchange-rate/ExchangeRateBulkUpdate.vue b/resources/scripts/admin/components/currency-exchange-rate/ExchangeRateBulkUpdate.vue deleted file mode 100644 index 9b059f90..00000000 --- a/resources/scripts/admin/components/currency-exchange-rate/ExchangeRateBulkUpdate.vue +++ /dev/null @@ -1,118 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/custom-fields/CreateCustomFields.vue b/resources/scripts/admin/components/custom-fields/CreateCustomFields.vue deleted file mode 100644 index 70c9f059..00000000 --- a/resources/scripts/admin/components/custom-fields/CreateCustomFields.vue +++ /dev/null @@ -1,118 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/custom-fields/CreateCustomFieldsSingle.vue b/resources/scripts/admin/components/custom-fields/CreateCustomFieldsSingle.vue deleted file mode 100644 index 8b2320e6..00000000 --- a/resources/scripts/admin/components/custom-fields/CreateCustomFieldsSingle.vue +++ /dev/null @@ -1,72 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/custom-fields/types/DateTimeType.vue b/resources/scripts/admin/components/custom-fields/types/DateTimeType.vue deleted file mode 100644 index f29a01ab..00000000 --- a/resources/scripts/admin/components/custom-fields/types/DateTimeType.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/custom-fields/types/DateType.vue b/resources/scripts/admin/components/custom-fields/types/DateType.vue deleted file mode 100644 index f1954119..00000000 --- a/resources/scripts/admin/components/custom-fields/types/DateType.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/custom-fields/types/DropdownType.vue b/resources/scripts/admin/components/custom-fields/types/DropdownType.vue deleted file mode 100644 index 4309ef4d..00000000 --- a/resources/scripts/admin/components/custom-fields/types/DropdownType.vue +++ /dev/null @@ -1,45 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/custom-fields/types/InputType.vue b/resources/scripts/admin/components/custom-fields/types/InputType.vue deleted file mode 100644 index 026e4f3a..00000000 --- a/resources/scripts/admin/components/custom-fields/types/InputType.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/custom-fields/types/NumberType.vue b/resources/scripts/admin/components/custom-fields/types/NumberType.vue deleted file mode 100644 index 5c220c5f..00000000 --- a/resources/scripts/admin/components/custom-fields/types/NumberType.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/custom-fields/types/PhoneType.vue b/resources/scripts/admin/components/custom-fields/types/PhoneType.vue deleted file mode 100644 index 5d3c20b8..00000000 --- a/resources/scripts/admin/components/custom-fields/types/PhoneType.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/custom-fields/types/SwitchType.vue b/resources/scripts/admin/components/custom-fields/types/SwitchType.vue deleted file mode 100644 index 34c031ad..00000000 --- a/resources/scripts/admin/components/custom-fields/types/SwitchType.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/custom-fields/types/TextAreaType.vue b/resources/scripts/admin/components/custom-fields/types/TextAreaType.vue deleted file mode 100644 index 51dc62ba..00000000 --- a/resources/scripts/admin/components/custom-fields/types/TextAreaType.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/custom-fields/types/TimeType.vue b/resources/scripts/admin/components/custom-fields/types/TimeType.vue deleted file mode 100644 index d8c61702..00000000 --- a/resources/scripts/admin/components/custom-fields/types/TimeType.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/custom-fields/types/UrlType.vue b/resources/scripts/admin/components/custom-fields/types/UrlType.vue deleted file mode 100644 index 56aeba35..00000000 --- a/resources/scripts/admin/components/custom-fields/types/UrlType.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/dropdowns/AdminCompanyIndexDropdown.vue b/resources/scripts/admin/components/dropdowns/AdminCompanyIndexDropdown.vue deleted file mode 100644 index 1afadbed..00000000 --- a/resources/scripts/admin/components/dropdowns/AdminCompanyIndexDropdown.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/dropdowns/AdminUserIndexDropdown.vue b/resources/scripts/admin/components/dropdowns/AdminUserIndexDropdown.vue deleted file mode 100644 index ffcfc8b1..00000000 --- a/resources/scripts/admin/components/dropdowns/AdminUserIndexDropdown.vue +++ /dev/null @@ -1,77 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/dropdowns/CustomFieldIndexDropdown.vue b/resources/scripts/admin/components/dropdowns/CustomFieldIndexDropdown.vue deleted file mode 100644 index bdd76d0b..00000000 --- a/resources/scripts/admin/components/dropdowns/CustomFieldIndexDropdown.vue +++ /dev/null @@ -1,99 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/dropdowns/CustomerIndexDropdown.vue b/resources/scripts/admin/components/dropdowns/CustomerIndexDropdown.vue deleted file mode 100644 index baade448..00000000 --- a/resources/scripts/admin/components/dropdowns/CustomerIndexDropdown.vue +++ /dev/null @@ -1,113 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/dropdowns/EstimateIndexDropdown.vue b/resources/scripts/admin/components/dropdowns/EstimateIndexDropdown.vue deleted file mode 100644 index 6ee39ab2..00000000 --- a/resources/scripts/admin/components/dropdowns/EstimateIndexDropdown.vue +++ /dev/null @@ -1,369 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/dropdowns/ExpenseCategoryIndexDropdown.vue b/resources/scripts/admin/components/dropdowns/ExpenseCategoryIndexDropdown.vue deleted file mode 100644 index d24887f9..00000000 --- a/resources/scripts/admin/components/dropdowns/ExpenseCategoryIndexDropdown.vue +++ /dev/null @@ -1,105 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/dropdowns/ExpenseIndexDropdown.vue b/resources/scripts/admin/components/dropdowns/ExpenseIndexDropdown.vue deleted file mode 100644 index ef65ffa7..00000000 --- a/resources/scripts/admin/components/dropdowns/ExpenseIndexDropdown.vue +++ /dev/null @@ -1,94 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/dropdowns/InvoiceIndexDropdown.vue b/resources/scripts/admin/components/dropdowns/InvoiceIndexDropdown.vue deleted file mode 100755 index 0db6d0fb..00000000 --- a/resources/scripts/admin/components/dropdowns/InvoiceIndexDropdown.vue +++ /dev/null @@ -1,261 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/dropdowns/ItemIndexDropdown.vue b/resources/scripts/admin/components/dropdowns/ItemIndexDropdown.vue deleted file mode 100644 index 0abc691b..00000000 --- a/resources/scripts/admin/components/dropdowns/ItemIndexDropdown.vue +++ /dev/null @@ -1,96 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/dropdowns/MemberIndexDropdown.vue b/resources/scripts/admin/components/dropdowns/MemberIndexDropdown.vue deleted file mode 100644 index e02838ee..00000000 --- a/resources/scripts/admin/components/dropdowns/MemberIndexDropdown.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/dropdowns/NoteIndexDropdown.vue b/resources/scripts/admin/components/dropdowns/NoteIndexDropdown.vue deleted file mode 100644 index bb51920e..00000000 --- a/resources/scripts/admin/components/dropdowns/NoteIndexDropdown.vue +++ /dev/null @@ -1,109 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/dropdowns/PaymentIndexDropdown.vue b/resources/scripts/admin/components/dropdowns/PaymentIndexDropdown.vue deleted file mode 100644 index 540ae5c8..00000000 --- a/resources/scripts/admin/components/dropdowns/PaymentIndexDropdown.vue +++ /dev/null @@ -1,166 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/dropdowns/PaymentModeIndexDropdown.vue b/resources/scripts/admin/components/dropdowns/PaymentModeIndexDropdown.vue deleted file mode 100644 index 1e308ad9..00000000 --- a/resources/scripts/admin/components/dropdowns/PaymentModeIndexDropdown.vue +++ /dev/null @@ -1,93 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/dropdowns/RecurringInvoiceIndexDropdown.vue b/resources/scripts/admin/components/dropdowns/RecurringInvoiceIndexDropdown.vue deleted file mode 100644 index 2aaf52df..00000000 --- a/resources/scripts/admin/components/dropdowns/RecurringInvoiceIndexDropdown.vue +++ /dev/null @@ -1,131 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/dropdowns/RoleIndexDropdown.vue b/resources/scripts/admin/components/dropdowns/RoleIndexDropdown.vue deleted file mode 100644 index e54fbd9e..00000000 --- a/resources/scripts/admin/components/dropdowns/RoleIndexDropdown.vue +++ /dev/null @@ -1,106 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/dropdowns/TaxTypeIndexDropdown.vue b/resources/scripts/admin/components/dropdowns/TaxTypeIndexDropdown.vue deleted file mode 100644 index ba8c1654..00000000 --- a/resources/scripts/admin/components/dropdowns/TaxTypeIndexDropdown.vue +++ /dev/null @@ -1,104 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/estimate-invoice-common/CreateItemRow.vue b/resources/scripts/admin/components/estimate-invoice-common/CreateItemRow.vue deleted file mode 100644 index 4f0b42c5..00000000 --- a/resources/scripts/admin/components/estimate-invoice-common/CreateItemRow.vue +++ /dev/null @@ -1,483 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/estimate-invoice-common/CreateItemRowTax.vue b/resources/scripts/admin/components/estimate-invoice-common/CreateItemRowTax.vue deleted file mode 100644 index 3613e1ee..00000000 --- a/resources/scripts/admin/components/estimate-invoice-common/CreateItemRowTax.vue +++ /dev/null @@ -1,285 +0,0 @@ - - - - diff --git a/resources/scripts/admin/components/estimate-invoice-common/CreateItems.vue b/resources/scripts/admin/components/estimate-invoice-common/CreateItems.vue deleted file mode 100644 index 40d38244..00000000 --- a/resources/scripts/admin/components/estimate-invoice-common/CreateItems.vue +++ /dev/null @@ -1,229 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/estimate-invoice-common/CreateNotesField.vue b/resources/scripts/admin/components/estimate-invoice-common/CreateNotesField.vue deleted file mode 100644 index 4f002adf..00000000 --- a/resources/scripts/admin/components/estimate-invoice-common/CreateNotesField.vue +++ /dev/null @@ -1,46 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/estimate-invoice-common/CreateTotal.vue b/resources/scripts/admin/components/estimate-invoice-common/CreateTotal.vue deleted file mode 100644 index f8dcf578..00000000 --- a/resources/scripts/admin/components/estimate-invoice-common/CreateTotal.vue +++ /dev/null @@ -1,402 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/estimate-invoice-common/CreateTotalTaxes.vue b/resources/scripts/admin/components/estimate-invoice-common/CreateTotalTaxes.vue deleted file mode 100644 index 49a35db4..00000000 --- a/resources/scripts/admin/components/estimate-invoice-common/CreateTotalTaxes.vue +++ /dev/null @@ -1,108 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/estimate-invoice-common/ExchangeRateConverter.vue b/resources/scripts/admin/components/estimate-invoice-common/ExchangeRateConverter.vue deleted file mode 100644 index dc1c8b7d..00000000 --- a/resources/scripts/admin/components/estimate-invoice-common/ExchangeRateConverter.vue +++ /dev/null @@ -1,178 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/estimate-invoice-common/NetTotal.vue b/resources/scripts/admin/components/estimate-invoice-common/NetTotal.vue deleted file mode 100644 index 175f3d88..00000000 --- a/resources/scripts/admin/components/estimate-invoice-common/NetTotal.vue +++ /dev/null @@ -1,54 +0,0 @@ - - diff --git a/resources/scripts/admin/components/estimate-invoice-common/SalesTax.vue b/resources/scripts/admin/components/estimate-invoice-common/SalesTax.vue deleted file mode 100644 index ddae749a..00000000 --- a/resources/scripts/admin/components/estimate-invoice-common/SalesTax.vue +++ /dev/null @@ -1,216 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/estimate-invoice-common/SelectTaxPopup.vue b/resources/scripts/admin/components/estimate-invoice-common/SelectTaxPopup.vue deleted file mode 100644 index 27d5a7a5..00000000 --- a/resources/scripts/admin/components/estimate-invoice-common/SelectTaxPopup.vue +++ /dev/null @@ -1,243 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/estimate-invoice-common/SelectTemplateButton.vue b/resources/scripts/admin/components/estimate-invoice-common/SelectTemplateButton.vue deleted file mode 100644 index 3b48ab74..00000000 --- a/resources/scripts/admin/components/estimate-invoice-common/SelectTemplateButton.vue +++ /dev/null @@ -1,68 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/BackupModal.vue b/resources/scripts/admin/components/modal-components/BackupModal.vue deleted file mode 100644 index 28e92773..00000000 --- a/resources/scripts/admin/components/modal-components/BackupModal.vue +++ /dev/null @@ -1,181 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/CategoryModal.vue b/resources/scripts/admin/components/modal-components/CategoryModal.vue deleted file mode 100644 index 5134deb9..00000000 --- a/resources/scripts/admin/components/modal-components/CategoryModal.vue +++ /dev/null @@ -1,161 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/CompanyModal.vue b/resources/scripts/admin/components/modal-components/CompanyModal.vue deleted file mode 100644 index 0b1f9003..00000000 --- a/resources/scripts/admin/components/modal-components/CompanyModal.vue +++ /dev/null @@ -1,260 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/CustomerModal.vue b/resources/scripts/admin/components/modal-components/CustomerModal.vue deleted file mode 100644 index 38530adf..00000000 --- a/resources/scripts/admin/components/modal-components/CustomerModal.vue +++ /dev/null @@ -1,663 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/DeleteCompanyModal.vue b/resources/scripts/admin/components/modal-components/DeleteCompanyModal.vue deleted file mode 100644 index 2df776f3..00000000 --- a/resources/scripts/admin/components/modal-components/DeleteCompanyModal.vue +++ /dev/null @@ -1,157 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/ExchangeRateBulkUpdateModal.vue b/resources/scripts/admin/components/modal-components/ExchangeRateBulkUpdateModal.vue deleted file mode 100644 index 614ba01d..00000000 --- a/resources/scripts/admin/components/modal-components/ExchangeRateBulkUpdateModal.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/ExchangeRateProviderModal.vue b/resources/scripts/admin/components/modal-components/ExchangeRateProviderModal.vue deleted file mode 100644 index 87d3647c..00000000 --- a/resources/scripts/admin/components/modal-components/ExchangeRateProviderModal.vue +++ /dev/null @@ -1,484 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/FileDiskModal.vue b/resources/scripts/admin/components/modal-components/FileDiskModal.vue deleted file mode 100644 index 45d89595..00000000 --- a/resources/scripts/admin/components/modal-components/FileDiskModal.vue +++ /dev/null @@ -1,155 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/InviteMemberModal.vue b/resources/scripts/admin/components/modal-components/InviteMemberModal.vue deleted file mode 100644 index 9c51e7c0..00000000 --- a/resources/scripts/admin/components/modal-components/InviteMemberModal.vue +++ /dev/null @@ -1,132 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/ItemModal.vue b/resources/scripts/admin/components/modal-components/ItemModal.vue deleted file mode 100644 index 01fb6e10..00000000 --- a/resources/scripts/admin/components/modal-components/ItemModal.vue +++ /dev/null @@ -1,275 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/ItemUnitModal.vue b/resources/scripts/admin/components/modal-components/ItemUnitModal.vue deleted file mode 100644 index 83a2ec5b..00000000 --- a/resources/scripts/admin/components/modal-components/ItemUnitModal.vue +++ /dev/null @@ -1,143 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/MailTestModal.vue b/resources/scripts/admin/components/modal-components/MailTestModal.vue deleted file mode 100644 index b0cf1cf7..00000000 --- a/resources/scripts/admin/components/modal-components/MailTestModal.vue +++ /dev/null @@ -1,182 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/NoteModal.vue b/resources/scripts/admin/components/modal-components/NoteModal.vue deleted file mode 100644 index 5b1fe591..00000000 --- a/resources/scripts/admin/components/modal-components/NoteModal.vue +++ /dev/null @@ -1,290 +0,0 @@ - - - - - diff --git a/resources/scripts/admin/components/modal-components/PaymentModeModal.vue b/resources/scripts/admin/components/modal-components/PaymentModeModal.vue deleted file mode 100644 index 5526a638..00000000 --- a/resources/scripts/admin/components/modal-components/PaymentModeModal.vue +++ /dev/null @@ -1,133 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/RolesModal.vue b/resources/scripts/admin/components/modal-components/RolesModal.vue deleted file mode 100644 index 26817290..00000000 --- a/resources/scripts/admin/components/modal-components/RolesModal.vue +++ /dev/null @@ -1,299 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/SelectTemplateModal.vue b/resources/scripts/admin/components/modal-components/SelectTemplateModal.vue deleted file mode 100644 index df0aba62..00000000 --- a/resources/scripts/admin/components/modal-components/SelectTemplateModal.vue +++ /dev/null @@ -1,147 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/SendEstimateModal.vue b/resources/scripts/admin/components/modal-components/SendEstimateModal.vue deleted file mode 100644 index e0400da9..00000000 --- a/resources/scripts/admin/components/modal-components/SendEstimateModal.vue +++ /dev/null @@ -1,309 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/SendInvoiceModal.vue b/resources/scripts/admin/components/modal-components/SendInvoiceModal.vue deleted file mode 100644 index 79b9f27a..00000000 --- a/resources/scripts/admin/components/modal-components/SendInvoiceModal.vue +++ /dev/null @@ -1,322 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/SendPaymentModal.vue b/resources/scripts/admin/components/modal-components/SendPaymentModal.vue deleted file mode 100644 index 1a1d81d0..00000000 --- a/resources/scripts/admin/components/modal-components/SendPaymentModal.vue +++ /dev/null @@ -1,315 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/TaxTypeModal.vue b/resources/scripts/admin/components/modal-components/TaxTypeModal.vue deleted file mode 100644 index 4888ff9a..00000000 --- a/resources/scripts/admin/components/modal-components/TaxTypeModal.vue +++ /dev/null @@ -1,285 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/TaxationAddressModal.vue b/resources/scripts/admin/components/modal-components/TaxationAddressModal.vue deleted file mode 100644 index be98a14c..00000000 --- a/resources/scripts/admin/components/modal-components/TaxationAddressModal.vue +++ /dev/null @@ -1,209 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/custom-fields/CustomFieldModal.vue b/resources/scripts/admin/components/modal-components/custom-fields/CustomFieldModal.vue deleted file mode 100644 index 3cb8d76a..00000000 --- a/resources/scripts/admin/components/modal-components/custom-fields/CustomFieldModal.vue +++ /dev/null @@ -1,421 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/custom-fields/OptionsCreate.vue b/resources/scripts/admin/components/modal-components/custom-fields/OptionsCreate.vue deleted file mode 100644 index 0ec049bd..00000000 --- a/resources/scripts/admin/components/modal-components/custom-fields/OptionsCreate.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/disks/DoSpacesDisk.vue b/resources/scripts/admin/components/modal-components/disks/DoSpacesDisk.vue deleted file mode 100644 index 0f329827..00000000 --- a/resources/scripts/admin/components/modal-components/disks/DoSpacesDisk.vue +++ /dev/null @@ -1,330 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/disks/DropboxDisk.vue b/resources/scripts/admin/components/modal-components/disks/DropboxDisk.vue deleted file mode 100644 index 94bc577c..00000000 --- a/resources/scripts/admin/components/modal-components/disks/DropboxDisk.vue +++ /dev/null @@ -1,299 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/disks/LocalDisk.vue b/resources/scripts/admin/components/modal-components/disks/LocalDisk.vue deleted file mode 100644 index a33462c4..00000000 --- a/resources/scripts/admin/components/modal-components/disks/LocalDisk.vue +++ /dev/null @@ -1,221 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/disks/S3CompatDisk.vue b/resources/scripts/admin/components/modal-components/disks/S3CompatDisk.vue deleted file mode 100644 index b2a2970b..00000000 --- a/resources/scripts/admin/components/modal-components/disks/S3CompatDisk.vue +++ /dev/null @@ -1,325 +0,0 @@ - - - diff --git a/resources/scripts/admin/components/modal-components/disks/S3Disk.vue b/resources/scripts/admin/components/modal-components/disks/S3Disk.vue deleted file mode 100644 index 3b0c0241..00000000 --- a/resources/scripts/admin/components/modal-components/disks/S3Disk.vue +++ /dev/null @@ -1,304 +0,0 @@ - - - diff --git a/resources/scripts/admin/layouts/LayoutBasic.vue b/resources/scripts/admin/layouts/LayoutBasic.vue deleted file mode 100644 index a92dbae1..00000000 --- a/resources/scripts/admin/layouts/LayoutBasic.vue +++ /dev/null @@ -1,105 +0,0 @@ - - - diff --git a/resources/scripts/admin/layouts/LayoutInstallation.vue b/resources/scripts/admin/layouts/LayoutInstallation.vue deleted file mode 100644 index 951367be..00000000 --- a/resources/scripts/admin/layouts/LayoutInstallation.vue +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/resources/scripts/admin/layouts/LayoutLogin.vue b/resources/scripts/admin/layouts/LayoutLogin.vue deleted file mode 100644 index 850dd3c3..00000000 --- a/resources/scripts/admin/layouts/LayoutLogin.vue +++ /dev/null @@ -1,177 +0,0 @@ - - - - - diff --git a/resources/scripts/admin/layouts/partials/TheSiteHeader.vue b/resources/scripts/admin/layouts/partials/TheSiteHeader.vue deleted file mode 100644 index 67f6158c..00000000 --- a/resources/scripts/admin/layouts/partials/TheSiteHeader.vue +++ /dev/null @@ -1,282 +0,0 @@ - - - diff --git a/resources/scripts/admin/layouts/partials/TheSiteSidebar.vue b/resources/scripts/admin/layouts/partials/TheSiteSidebar.vue deleted file mode 100644 index 9838b99b..00000000 --- a/resources/scripts/admin/layouts/partials/TheSiteSidebar.vue +++ /dev/null @@ -1,223 +0,0 @@ - - - diff --git a/resources/scripts/admin/stores/administration.js b/resources/scripts/admin/stores/administration.js deleted file mode 100644 index 9a7dbe5a..00000000 --- a/resources/scripts/admin/stores/administration.js +++ /dev/null @@ -1,162 +0,0 @@ -import http from '@/scripts/http' -import Ls from '@/scripts/services/ls.js' -import { defineStore } from 'pinia' -import { useNotificationStore } from '@/scripts/stores/notification' -import { handleError } from '@/scripts/helpers/error-handling' - -export const useAdministrationStore = defineStore('administration', { - state: () => ({ - companies: [], - totalCompanies: 0, - selectedCompany: null, - - users: [], - totalUsers: 0, - }), - - actions: { - fetchCompanies(params) { - return new Promise((resolve, reject) => { - http - .get('/api/v1/super-admin/companies', { params }) - .then((response) => { - this.companies = response.data.data - this.totalCompanies = response.data.meta - ? response.data.meta.total - : response.data.data.length - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchCompany(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/super-admin/companies/${id}`) - .then((response) => { - this.selectedCompany = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchUsers(params) { - return new Promise((resolve, reject) => { - http - .get('/api/v1/super-admin/users', { params }) - .then((response) => { - this.users = response.data.data - this.totalUsers = response.data.meta - ? response.data.meta.total - : response.data.data.length - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchUser(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/super-admin/users/${id}`) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateUser(id, data) { - return new Promise((resolve, reject) => { - http - .put(`/api/v1/super-admin/users/${id}`, data) - .then((response) => { - const { global } = window.i18n - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('administration.users.updated_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - impersonateUser(id) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/super-admin/users/${id}/impersonate`) - .then((response) => { - Ls.set('admin.impersonating', 'true') - Ls.set('auth.token', `Bearer ${response.data.token}`) - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - stopImpersonating() { - return new Promise((resolve, reject) => { - http - .post('/api/v1/super-admin/stop-impersonating') - .then((response) => { - Ls.remove('admin.impersonating') - Ls.remove('auth.token') - - resolve(response) - }) - .catch((err) => { - Ls.remove('admin.impersonating') - Ls.remove('auth.token') - - handleError(err) - reject(err) - }) - }) - }, - - updateCompany(id, data) { - return new Promise((resolve, reject) => { - http - .put(`/api/v1/super-admin/companies/${id}`, data) - .then((response) => { - const { global } = window.i18n - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t( - 'administration.companies.updated_message' - ), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - }, -}) diff --git a/resources/scripts/admin/stores/auth.js b/resources/scripts/admin/stores/auth.js deleted file mode 100644 index 55321e1c..00000000 --- a/resources/scripts/admin/stores/auth.js +++ /dev/null @@ -1,78 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useNotificationStore } from '@/scripts/stores/notification' -import { handleError } from '@/scripts/helpers/error-handling' - -export const useAuthStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('auth', { - state: () => ({ - status: '', - - loginData: { - email: '', - password: '', - remember: '', - }, - }), - - actions: { - login(data) { - return new Promise((resolve, reject) => { - http.get('/sanctum/csrf-cookie').then((response) => { - if (response) { - http - .post('/login', data) - .then((response) => { - resolve(response) - - setTimeout(() => { - this.loginData.email = '' - this.loginData.password = '' - }, 1000) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - } - }) - }) - }, - - logout() { - return new Promise((resolve, reject) => { - http - .post('/auth/logout') - .then(async (response) => { - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: 'Logged out successfully.', - }) - - // Clear stored auth data so next login doesn't send stale tokens - window.Ls.remove('auth.token') - window.Ls.remove('selectedCompany') - - // Refresh CSRF token so next login works cleanly - await http.get('/sanctum/csrf-cookie').catch(() => {}) - - window.router.push('/login') - resolve(response) - }) - .catch((err) => { - handleError(err) - window.Ls.remove('auth.token') - window.Ls.remove('selectedCompany') - http.get('/sanctum/csrf-cookie').catch(() => {}) - window.router.push('/login') - reject(err) - }) - }) - }, - }, - })() -} \ No newline at end of file diff --git a/resources/scripts/admin/stores/backup.js b/resources/scripts/admin/stores/backup.js deleted file mode 100644 index eb14cf5b..00000000 --- a/resources/scripts/admin/stores/backup.js +++ /dev/null @@ -1,74 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useNotificationStore } from '@/scripts/stores/notification' -import { handleError } from '@/scripts/helpers/error-handling' - -export const useBackupStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('backup', { - state: () => ({ - backups: [], - currentBackupData: { - option: 'full', - selected_disk: null, - }, - }), - - actions: { - fetchBackups(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/backups`, { params }) - .then((response) => { - this.backups = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - createBackup(data) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/backups`, data) - .then((response) => { - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.backup.created_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - removeBackup(params) { - return new Promise((resolve, reject) => { - http - .delete(`/api/v1/backups/${params.disk}`, { params }) - .then((response) => { - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.backup.deleted_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/category.js b/resources/scripts/admin/stores/category.js deleted file mode 100644 index 500b7126..00000000 --- a/resources/scripts/admin/stores/category.js +++ /dev/null @@ -1,127 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useNotificationStore } from '@/scripts/stores/notification' -import { handleError } from '@/scripts/helpers/error-handling' - -export const useCategoryStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('category', { - state: () => ({ - categories: [], - currentCategory: { - id: null, - name: '', - description: '', - }, - editCategory: null - }), - - getters: { - isEdit: (state) => (state.currentCategory.id ? true : false), - }, - - actions: { - fetchCategories(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/categories`, { params }) - .then((response) => { - this.categories = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchCategory(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/categories/${id}`) - .then((response) => { - this.currentCategory = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addCategory(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/categories', data) - .then((response) => { - this.categories.push(response.data.data) - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.expense_category.created_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateCategory(data) { - return new Promise((resolve, reject) => { - http - .put(`/api/v1/categories/${data.id}`, data) - .then((response) => { - if (response.data) { - let pos = this.categories.findIndex( - (category) => category.id === response.data.data.id - ) - this.categories[pos] = data.categories - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t( - 'settings.expense_category.updated_message' - ), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteCategory(id) { - return new Promise((resolve) => { - http - .delete(`/api/v1/categories/${id}`) - .then((response) => { - let index = this.categories.findIndex( - (category) => category.id === id - ) - this.categories.splice(index, 1) - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.expense_category.deleted_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - console.error(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/company-mail.js b/resources/scripts/admin/stores/company-mail.js deleted file mode 100644 index 97a2850b..00000000 --- a/resources/scripts/admin/stores/company-mail.js +++ /dev/null @@ -1,91 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useNotificationStore } from '@/scripts/stores/notification' -import { handleError } from '@/scripts/helpers/error-handling' - -export const useCompanyMailStore = defineStore('company-mail', { - state: () => ({ - mailConfigData: null, - mail_driver: '', - mail_drivers: [], - }), - - actions: { - fetchMailDrivers() { - return new Promise((resolve, reject) => { - http - .get('/api/v1/mail/drivers') - .then((response) => { - if (response.data) { - this.mail_drivers = response.data - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchMailConfig() { - return new Promise((resolve, reject) => { - http - .get('/api/v1/company/mail/company-config') - .then((response) => { - if (response.data) { - this.mailConfigData = response.data - this.mail_driver = response.data.mail_driver || '' - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateMailConfig(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/company/mail/company-config', data) - .then((response) => { - const { global } = window.i18n - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.mail.company_mail_config_updated'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - sendTestMail(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/company/mail/company-test', data) - .then((response) => { - const { global } = window.i18n - const notificationStore = useNotificationStore() - if (response.data.success) { - notificationStore.showNotification({ - type: 'success', - message: global.t('general.send_mail_successfully'), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - }, -}) diff --git a/resources/scripts/admin/stores/company.js b/resources/scripts/admin/stores/company.js deleted file mode 100644 index e0f4c2f3..00000000 --- a/resources/scripts/admin/stores/company.js +++ /dev/null @@ -1,208 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useNotificationStore } from '@/scripts/stores/notification' -import { handleError } from '@/scripts/helpers/error-handling' -import Ls from '@/scripts/services/ls' - -export const useCompanyStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('company', { - state: () => ({ - companies: [], - selectedCompany: null, - selectedCompanySettings: {}, - selectedCompanyCurrency: null, - isAdminMode: window.Ls?.get('isAdminMode') === 'true', - }), - - actions: { - setSelectedCompany(data) { - if (data) { - window.Ls.set('selectedCompany', data.id) - window.Ls.remove('isAdminMode') - this.isAdminMode = false - } else { - window.Ls.remove('selectedCompany') - } - this.selectedCompany = data - }, - - setAdminMode(enabled) { - this.isAdminMode = enabled - if (enabled) { - window.Ls.set('isAdminMode', 'true') - window.Ls.remove('selectedCompany') - this.selectedCompany = null - } else { - window.Ls.remove('isAdminMode') - } - }, - - fetchBasicMailConfig() { - return new Promise((resolve, reject) => { - http - .get('/api/v1/company/mail/config') - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateCompany(data) { - return new Promise((resolve, reject) => { - http - .put('/api/v1/company', data) - .then((response) => { - const notificationStore = useNotificationStore() - - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.company_info.updated_message'), - }) - - this.selectedCompany = response.data.data - const companyIndex = this.companies.findIndex((company) => company.unique_hash === this.selectedCompany.unique_hash); - if (companyIndex !== -1) { - this.companies[companyIndex] = this.selectedCompany; - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateCompanyLogo(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/company/upload-logo', data) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addNewCompany(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/companies', data) - .then((response) => { - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('company_switcher.created_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchCompany(params) { - return new Promise((resolve, reject) => { - http - .get('/api/v1/current-company', params) - .then((response) => { - Object.assign(this.companyForm, response.data.data.address) - this.companyForm.name = response.data.data.name - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchUserCompanies() { - return new Promise((resolve, reject) => { - http - .get('/api/v1/companies') - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchCompanySettings(settings) { - return new Promise((resolve, reject) => { - http - .get('/api/v1/company/settings', { - params: { - settings, - }, - }) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateCompanySettings({ data, message }) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/company/settings', data) - .then((response) => { - Object.assign(this.selectedCompanySettings, data.settings) - - if (message) { - const notificationStore = useNotificationStore() - - notificationStore.showNotification({ - type: 'success', - message: global.t(message), - }) - } - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteCompany(data) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/companies/delete`, data) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - setDefaultCurrency(data) { - this.defaultCurrency = data.currency - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/custom-field.js b/resources/scripts/admin/stores/custom-field.js deleted file mode 100644 index 934c1b82..00000000 --- a/resources/scripts/admin/stores/custom-field.js +++ /dev/null @@ -1,209 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useNotificationStore } from '@/scripts/stores/notification' -import customFieldStub from '@/scripts/admin/stub/custom-field' -import utilities from '@/scripts/helpers/utilities' -import { util } from 'prettier' -import { handleError } from '@/scripts/helpers/error-handling' - -export const useCustomFieldStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('custom-field', { - state: () => ({ - customFields: [], - isRequestOngoing: false, - - currentCustomField: { - ...customFieldStub, - }, - }), - - getters: { - isEdit() { - return this.currentCustomField.id ? true : false - }, - }, - - actions: { - resetCustomFields() { - this.customFields = [] - }, - - resetCurrentCustomField() { - this.currentCustomField = { - ...customFieldStub, - } - }, - - fetchCustomFields(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/custom-fields`, { params }) - .then((response) => { - this.customFields = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchNoteCustomFields(params) { - return new Promise((resolve, reject) => { - if (this.isRequestOngoing) { - resolve({ requestOnGoing: true }) - return true - } - - this.isRequestOngoing = true - - http - .get(`/api/v1/custom-fields`, { params }) - .then((response) => { - this.customFields = response.data.data - this.isRequestOngoing = false - resolve(response) - }) - .catch((err) => { - this.isRequestOngoing = false - handleError(err) - reject(err) - }) - }) - }, - - fetchCustomField(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/custom-fields/${id}`) - .then((response) => { - this.currentCustomField = response.data.data - - if ( - this.currentCustomField.options && - this.currentCustomField.options.length - ) { - this.currentCustomField.options = - this.currentCustomField.options.map((option) => { - return (option = { name: option }) - }) - } - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addCustomField(params) { - const notificationStore = useNotificationStore() - return new Promise((resolve, reject) => { - http - .post(`/api/v1/custom-fields`, params) - .then((response) => { - let data = { - ...response.data.data, - } - - if (data.options) { - data.options = data.options.map((option) => { - return { name: option ? option : '' } - }) - } - - this.customFields.push(data) - - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.custom_fields.added_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateCustomField(params) { - const notificationStore = useNotificationStore() - - return new Promise((resolve, reject) => { - http - .put(`/api/v1/custom-fields/${params.id}`, params) - .then((response) => { - let data = { - ...response.data.data, - } - - if (data.options) { - data.options = data.options.map((option) => { - return { name: option ? option : '' } - }) - } - - let pos = this.customFields.findIndex((_f) => _f.id === data.id) - - if (this.customFields[pos]) { - this.customFields[pos] = data - } - - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.custom_fields.updated_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteCustomFields(id) { - const notificationStore = useNotificationStore() - return new Promise((resolve, reject) => { - http - .delete(`/api/v1/custom-fields/${id}`) - .then((response) => { - let index = this.customFields.findIndex( - (field) => field.id === id - ) - - this.customFields.splice(index, 1) - - if (response.data.error) { - notificationStore.showNotification({ - type: 'error', - message: global.t('settings.custom_fields.already_in_use'), - }) - } else { - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.custom_fields.deleted_message'), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - // notificationStore.showNotification({ - // type: 'error', - // message: global.t('settings.custom_fields.already_in_use'), - // }) - reject(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/customer.js b/resources/scripts/admin/stores/customer.js deleted file mode 100644 index 1338ad0e..00000000 --- a/resources/scripts/admin/stores/customer.js +++ /dev/null @@ -1,256 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useRoute } from 'vue-router' -import { handleError } from '@/scripts/helpers/error-handling' -import { useNotificationStore } from '@/scripts/stores/notification' -import { useGlobalStore } from '@/scripts/admin/stores/global' -import { useCompanyStore } from '@/scripts/admin/stores/company' -import addressStub from '@/scripts/admin/stub/address.js' -import customerStub from '@/scripts/admin/stub/customer' - -export const useCustomerStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('customer', { - state: () => ({ - customers: [], - totalCustomers: 0, - selectAllField: false, - selectedCustomers: [], - selectedViewCustomer: {}, - isFetchingInitialSettings: false, - isFetchingViewData: false, - currentCustomer: { - ...customerStub(), - }, - editCustomer: null - }), - - getters: { - isEdit: (state) => (state.currentCustomer.id ? true : false), - }, - - actions: { - resetCurrentCustomer() { - this.currentCustomer = { - ...customerStub(), - } - }, - - copyAddress() { - this.currentCustomer.shipping = { - ...this.currentCustomer.billing, - type: 'shipping', - } - }, - - fetchCustomerInitialSettings(isEdit) { - const route = useRoute() - const globalStore = useGlobalStore() - const companyStore = useCompanyStore() - - this.isFetchingInitialSettings = true - let editActions = [] - if (isEdit) { - editActions = [this.fetchCustomer(route.params.id)] - } else { - this.currentCustomer.currency_id = - companyStore.selectedCompanyCurrency.id - } - - Promise.all([ - globalStore.fetchCurrencies(), - globalStore.fetchCountries(), - ...editActions, - ]) - .then(async ([res1, res2, res3]) => { - this.isFetchingInitialSettings = false - }) - .catch((error) => { - handleError(error) - }) - }, - - fetchCustomers(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/customers`, { params }) - .then((response) => { - this.customers = response.data.data - this.totalCustomers = response.data.meta.customer_total_count - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchViewCustomer(params) { - return new Promise((resolve, reject) => { - this.isFetchingViewData = true - http - .get(`/api/v1/customers/${params.id}/stats`, { params }) - - .then((response) => { - this.selectedViewCustomer = {} - Object.assign(this.selectedViewCustomer, response.data.data) - this.setAddressStub(response.data.data) - this.isFetchingViewData = false - resolve(response) - }) - .catch((err) => { - this.isFetchingViewData = false - handleError(err) - reject(err) - }) - }) - }, - - fetchCustomer(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/customers/${id}`) - .then((response) => { - Object.assign(this.currentCustomer, response.data.data) - - this.setAddressStub(response.data.data) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addCustomer(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/customers', data) - .then((response) => { - this.customers.push(response.data.data) - - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('customers.created_message'), - }) - resolve(response) - }) - - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateCustomer(data) { - return new Promise((resolve, reject) => { - http - .put(`/api/v1/customers/${data.id}`, data) - .then((response) => { - if (response.data) { - let pos = this.customers.findIndex( - (customer) => customer.id === response.data.data.id - ) - this.customers[pos] = data - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('customers.updated_message'), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteCustomer(id) { - const notificationStore = useNotificationStore() - return new Promise((resolve, reject) => { - http - .post(`/api/v1/customers/delete`, id) - .then((response) => { - let index = this.customers.findIndex( - (customer) => customer.id === id - ) - this.customers.splice(index, 1) - notificationStore.showNotification({ - type: 'success', - message: global.t('customers.deleted_message', 1), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteMultipleCustomers() { - const notificationStore = useNotificationStore() - - return new Promise((resolve, reject) => { - http - .post(`/api/v1/customers/delete`, { ids: this.selectedCustomers }) - .then((response) => { - this.selectedCustomers.forEach((customer) => { - let index = this.customers.findIndex( - (_customer) => _customer.id === customer.id - ) - this.customers.splice(index, 1) - }) - - notificationStore.showNotification({ - type: 'success', - message: global.t('customers.deleted_message', 2), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - setSelectAllState(data) { - this.selectAllField = data - }, - - selectCustomer(data) { - this.selectedCustomers = data - if (this.selectedCustomers.length === this.customers.length) { - this.selectAllField = true - } else { - this.selectAllField = false - } - }, - - selectAllCustomers() { - if (this.selectedCustomers.length === this.customers.length) { - this.selectedCustomers = [] - this.selectAllField = false - } else { - let allCustomerIds = this.customers.map((customer) => customer.id) - this.selectedCustomers = allCustomerIds - this.selectAllField = true - } - }, - - setAddressStub(data) { - if (!data.billing) this.currentCustomer.billing = { ...addressStub } - if (!data.shipping) this.currentCustomer.shipping = { ...addressStub } - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/dashboard.js b/resources/scripts/admin/stores/dashboard.js deleted file mode 100644 index c92fdcee..00000000 --- a/resources/scripts/admin/stores/dashboard.js +++ /dev/null @@ -1,85 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useGlobalStore } from '@/scripts/admin/stores/global' -import { handleError } from '@/scripts/helpers/error-handling' - -export const useDashboardStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('dashboard', { - state: () => ({ - stats: { - totalAmountDue: 0, - totalCustomerCount: 0, - totalInvoiceCount: 0, - totalEstimateCount: 0, - }, - - chartData: { - months: [], - invoiceTotals: [], - expenseTotals: [], - receiptTotals: [], - netIncomeTotals: [], - }, - - totalSales: null, - totalReceipts: null, - totalExpenses: null, - totalNetIncome: null, - - recentDueInvoices: [], - recentEstimates: [], - - isDashboardDataLoaded: false, - }), - - actions: { - loadData(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/dashboard`, { params }) - .then((response) => { - // Stats - this.stats.totalAmountDue = response.data.total_amount_due - this.stats.totalCustomerCount = response.data.total_customer_count - this.stats.totalInvoiceCount = response.data.total_invoice_count - this.stats.totalEstimateCount = response.data.total_estimate_count - - // Dashboard Chart - if (this.chartData && response.data.chart_data) { - this.chartData.months = response.data.chart_data.months - this.chartData.invoiceTotals = - response.data.chart_data.invoice_totals - this.chartData.expenseTotals = - response.data.chart_data.expense_totals - this.chartData.receiptTotals = - response.data.chart_data.receipt_totals - this.chartData.netIncomeTotals = - response.data.chart_data.net_income_totals - } - - // Dashboard Chart Labels - this.totalSales = response.data.total_sales - this.totalReceipts = response.data.total_receipts - this.totalExpenses = response.data.total_expenses - this.totalNetIncome = response.data.total_net_income - - // Dashboard Table Data - this.recentDueInvoices = response.data.recent_due_invoices - this.recentEstimates = response.data.recent_estimates - - this.isDashboardDataLoaded = true - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/disk.js b/resources/scripts/admin/stores/disk.js deleted file mode 100644 index ca5148fb..00000000 --- a/resources/scripts/admin/stores/disk.js +++ /dev/null @@ -1,192 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useNotificationStore } from '@/scripts/stores/notification' -import { handleError } from '@/scripts/helpers/error-handling' - -export const useDiskStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('disk', { - state: () => ({ - disks: [], - diskDrivers: [], - diskConfigData: null, - selected_driver: 'local', - - doSpaceDiskConfig: { - name: '', - selected_driver: 'doSpaces', - key: '', - secret: '', - region: '', - bucket: '', - endpoint: '', - root: '', - }, - - dropBoxDiskConfig: { - name: '', - selected_driver: 'dropbox', - token: '', - key: '', - secret: '', - app: '', - }, - - localDiskConfig: { - name: '', - selected_driver: 'local', - root: '', - }, - - s3DiskConfigData: { - name: '', - selected_driver: 's3', - key: '', - secret: '', - region: '', - bucket: '', - root: '', - }, - - s3CompatDiskConfigData: { - name: '', - selected_driver: 's3compat', - key: '', - secret: '', - region: '', - bucket: '', - root: '', - endpoint: '', - }, - }), - - getters: { - getDiskDrivers: (state) => state.diskDrivers, - }, - - actions: { - fetchDiskEnv(data) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/disks/${data.disk}`) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchDisks(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/disks`, { params }) - .then((response) => { - this.disks = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchDiskDrivers() { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/disk/drivers`) - .then((response) => { - this.diskConfigData = response.data - this.diskDrivers = response.data.drivers - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteFileDisk(id) { - return new Promise((resolve, reject) => { - http - .delete(`/api/v1/disks/${id}`) - .then((response) => { - if (response.data.success) { - let index = this.disks.findIndex( - (category) => category.id === id - ) - this.disks.splice(index, 1) - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.disk.deleted_message'), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateDisk(data) { - return new Promise((resolve, reject) => { - http - .put(`/api/v1/disks/${data.id}`, data) - .then((response) => { - if (response.data) { - let pos = this.disks.findIndex( - (disk) => disk.id === response.data.data - ) - this.disks[pos] = data.disks - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.disk.success_set_default_disk'), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - createDisk(data) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/disks`, data) - .then((response) => { - if (response.data) { - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.disk.success_create'), - }) - } - this.disks.push(response.data) - resolve(response) - }) - .catch((err) => { - /* notificationStore.showNotification({ - type: 'error', - message: global.t('settings.disk.invalid_disk_credentials'), - }) */ - handleError(err) - reject(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/estimate.js b/resources/scripts/admin/stores/estimate.js deleted file mode 100644 index 7f3769ea..00000000 --- a/resources/scripts/admin/stores/estimate.js +++ /dev/null @@ -1,644 +0,0 @@ -import http from '@/scripts/http' -import moment from 'moment' -import Guid from 'guid' -import _ from 'lodash' -import { defineStore } from 'pinia' -import { useRoute } from 'vue-router' -import { useCompanyStore } from './company' -import { useCustomerStore } from './customer' -import { useNotificationStore } from '@/scripts/stores/notification' -import { useItemStore } from './item' -import { useTaxTypeStore } from './tax-type' -import { handleError } from '@/scripts/helpers/error-handling' -import estimateStub from '../stub/estimate' -import estimateItemStub from '../stub/estimate-item' -import taxStub from '../stub/tax' -import { useUserStore } from './user' -import { useNotesStore } from './note' - -export const useEstimateStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('estimate', { - state: () => ({ - templates: [], - - estimates: [], - selectAllField: false, - selectedEstimates: [], - totalEstimateCount: 0, - isFetchingInitialSettings: false, - showExchangeRate: false, - - newEstimate: { - ...estimateStub(), - }, - }), - - getters: { - getSubTotal() { - return this.newEstimate.items.reduce(function (a, b) { - return a + b['total'] - }, 0) - }, - getNetTotal() { - return this.getSubtotalWithDiscount - this.getTotalTax - }, - getTotalSimpleTax() { - return _.sumBy(this.newEstimate.taxes, function (tax) { - if (!tax.compound_tax) { - return tax.amount - } - return 0 - }) - }, - - getTotalCompoundTax() { - return _.sumBy(this.newEstimate.taxes, function (tax) { - if (tax.compound_tax) { - return tax.amount - } - return 0 - }) - }, - - getTotalTax() { - if ( - this.newEstimate.tax_per_item === 'NO' || - this.newEstimate.tax_per_item === null - ) { - return this.getTotalSimpleTax + this.getTotalCompoundTax - } - return _.sumBy(this.newEstimate.items, function (tax) { - return tax.tax - }) - }, - - getSubtotalWithDiscount() { - return this.getSubTotal - this.newEstimate.discount_val - }, - - getTotal() { - if (this.newEstimate.tax_included) { - return this.getSubtotalWithDiscount - } - return this.getSubtotalWithDiscount + this.getTotalTax - }, - - isEdit: (state) => (state.newEstimate.id ? true : false), - }, - - actions: { - resetCurrentEstimate() { - this.newEstimate = { - ...estimateStub(), - } - }, - - previewEstimate(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/estimates/${params.id}/send/preview`, { params }) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchEstimates(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/estimates`, { params }) - .then((response) => { - this.estimates = response.data.data - this.totalEstimateCount = response.data.meta.estimate_total_count - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - getNextNumber(params, setState = false) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/next-number?key=estimate`, { params }) - .then((response) => { - if (setState) { - this.newEstimate.estimate_number = response.data.nextNumber - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchEstimate(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/estimates/${id}`) - .then((response) => { - this.setEstimateData(response.data.data) - this.setCustomerAddresses(this.newEstimate.customer) - resolve(response) - }) - .catch((err) => { - console.log(err) - handleError(err) - reject(err) - }) - }) - }, - - setEstimateData(estimate) { - Object.assign(this.newEstimate, estimate) - if (this.newEstimate.tax_per_item === 'YES') { - this.newEstimate.items.forEach((_i) => { - if (_i.taxes && !_i.taxes.length) { - _i.taxes.push({ ...taxStub, id: Guid.raw() }) - } - }) - } - if (this.newEstimate.discount_per_item === 'YES') { - this.newEstimate.items.forEach((_i, index) => { - if (_i.discount_type === 'fixed') { - this.newEstimate.items[index].discount = _i.discount / 100 - } - }) - } else { - if (this.newEstimate.discount_type === 'fixed') { - this.newEstimate.discount = this.newEstimate.discount / 100 - } - } - }, - - setCustomerAddresses(customer) { - const customer_business = customer.customer_business - - if (customer_business?.billing_address) { - this.newEstimate.customer.billing_address = - customer_business.billing_address - } - - if (customer_business?.shipping_address) { - this.newEstimate.customer.shipping_address = - customer_business.shipping_address - } - }, - - addSalesTaxUs() { - const taxTypeStore = useTaxTypeStore() - let salesTax = { ...taxStub } - let found = this.newEstimate.taxes.find( - (_t) => _t.name === 'Sales Tax' && _t.type === 'MODULE', - ) - if (found) { - for (const key in found) { - if (Object.prototype.hasOwnProperty.call(salesTax, key)) { - salesTax[key] = found[key] - } - } - salesTax.id = found.tax_type_id - console.log(salesTax, 'salesTax') - - taxTypeStore.taxTypes.push(salesTax) - console.log(taxTypeStore.taxTypes) - } - }, - - sendEstimate(data) { - const notificationStore = useNotificationStore() - - return new Promise((resolve, reject) => { - http - .post(`/api/v1/estimates/${data.id}/send`, data) - .then((response) => { - if (!data.is_preview) { - notificationStore.showNotification({ - type: 'success', - message: global.t('estimates.send_estimate_successfully'), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addEstimate(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/estimates', data) - .then((response) => { - this.estimates = [...this.estimates, response.data.estimate] - const notificationStore = useNotificationStore() - - notificationStore.showNotification({ - type: 'success', - message: global.t('estimates.created_message'), - }) - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteEstimate(id) { - const notificationStore = useNotificationStore() - - return new Promise((resolve, reject) => { - http - .post(`/api/v1/estimates/delete`, id) - .then((response) => { - let index = this.estimates.findIndex( - (estimate) => estimate.id === id, - ) - - this.estimates.splice(index, 1) - - notificationStore.showNotification({ - type: 'success', - message: global.t('estimates.deleted_message', 1), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteMultipleEstimates(id) { - const notificationStore = useNotificationStore() - - return new Promise((resolve, reject) => { - http - .post(`/api/v1/estimates/delete`, { ids: this.selectedEstimates }) - .then((response) => { - this.selectedEstimates.forEach((estimate) => { - let index = this.estimates.findIndex( - (_est) => _est.id === estimate.id, - ) - this.estimates.splice(index, 1) - }) - this.selectedEstimates = [] - - notificationStore.showNotification({ - type: 'success', - message: global.t('estimates.deleted_message', 2), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateEstimate(data) { - return new Promise((resolve, reject) => { - http - .put(`/api/v1/estimates/${data.id}`, data) - .then((response) => { - let pos = this.estimates.findIndex( - (estimate) => estimate.id === response.data.data.id, - ) - this.estimates[pos] = response.data.data - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('estimates.updated_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - cloneEstimate(data) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/estimates/${data.id}/clone`, data) - .then((response) => { - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('estimates.cloned_successfully'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - markAsAccepted(data) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/estimates/${data.id}/status`, data) - .then((response) => { - let pos = this.estimates.findIndex( - (estimate) => estimate.id === data.id, - ) - if (this.estimates[pos]) { - this.estimates[pos].status = 'ACCEPTED' - - const notificationStore = useNotificationStore() - - notificationStore.showNotification({ - type: 'success', - message: global.t('estimates.marked_as_accepted_message'), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - markAsRejected(data) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/estimates/${data.id}/status`, data) - .then((response) => { - const notificationStore = useNotificationStore() - - notificationStore.showNotification({ - type: 'success', - message: global.t('estimates.marked_as_rejected_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - markAsSent(data) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/estimates/${data.id}/status`, data) - .then((response) => { - let pos = this.estimates.findIndex( - (estimate) => estimate.id === data.id, - ) - if (this.estimates[pos]) { - this.estimates[pos].status = 'SENT' - - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('estimates.mark_as_sent_successfully'), - }) - } - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - convertToInvoice(id) { - const notificationStore = useNotificationStore() - return new Promise((resolve, reject) => { - http - .post(`/api/v1/estimates/${id}/convert-to-invoice`) - .then((response) => { - notificationStore.showNotification({ - type: 'success', - message: global.t('estimates.conversion_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - searchEstimate(data) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/estimates?${data}`) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - selectEstimate(data) { - this.selectedEstimates = data - if (this.selectedEstimates.length === this.estimates.length) { - this.selectAllField = true - } else { - this.selectAllField = false - } - }, - - selectAllEstimates() { - if (this.selectedEstimates.length === this.estimates.length) { - this.selectedEstimates = [] - this.selectAllField = false - } else { - let allEstimateIds = this.estimates.map((estimate) => estimate.id) - this.selectedEstimates = allEstimateIds - this.selectAllField = true - } - }, - - selectCustomer(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/customers/${id}`) - .then((response) => { - this.newEstimate.customer = response.data.data - this.newEstimate.customer_id = response.data.data.id - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - fetchEstimateTemplates(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/estimates/templates`, { params }) - .then((response) => { - this.templates = response.data.estimateTemplates - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - setTemplate(data) { - this.newEstimate.template_name = data - }, - - resetSelectedCustomer() { - this.newEstimate.customer = null - this.newEstimate.customer_id = '' - }, - - selectNote(data) { - this.newEstimate.selectedNote = null - this.newEstimate.selectedNote = data - }, - - resetSelectedNote() { - this.newEstimate.selectedNote = null - }, - - addItem() { - this.newEstimate.items.push({ - ...estimateItemStub, - id: Guid.raw(), - taxes: [{ ...taxStub, id: Guid.raw() }], - }) - }, - - updateItem(data) { - Object.assign(this.newEstimate.items[data.index], { ...data }) - }, - - removeItem(index) { - this.newEstimate.items.splice(index, 1) - }, - - deselectItem(index) { - this.newEstimate.items[index] = { - ...estimateItemStub, - id: Guid.raw(), - taxes: [{ ...taxStub, id: Guid.raw() }], - } - }, - - async fetchEstimateInitialSettings(isEdit) { - const companyStore = useCompanyStore() - const customerStore = useCustomerStore() - const itemStore = useItemStore() - const taxTypeStore = useTaxTypeStore() - const route = useRoute() - const userStore = useUserStore() - const notesStore = useNotesStore() - - this.isFetchingInitialSettings = true - this.newEstimate.selectedCurrency = companyStore.selectedCompanyCurrency - - if (route.query.customer) { - let response = await customerStore.fetchCustomer(route.query.customer) - this.newEstimate.customer = response.data.data - this.newEstimate.customer_id = response.data.data.id - } - - let editActions = [] - - if (!isEdit) { - await notesStore.fetchNotes() - this.newEstimate.notes = - notesStore.getDefaultNoteForType('Estimate')?.notes - this.newEstimate.tax_per_item = - companyStore.selectedCompanySettings.tax_per_item - this.newEstimate.sales_tax_type = - companyStore.selectedCompanySettings.sales_tax_type - this.newEstimate.sales_tax_address_type = - companyStore.selectedCompanySettings.sales_tax_address_type - this.newEstimate.discount_per_item = - companyStore.selectedCompanySettings.discount_per_item - this.newEstimate.estimate_date = moment().format('YYYY-MM-DD') - if ( - companyStore.selectedCompanySettings - .estimate_set_expiry_date_automatically === 'YES' - ) { - this.newEstimate.expiry_date = moment() - .add( - companyStore.selectedCompanySettings.estimate_expiry_date_days, - 'days', - ) - .format('YYYY-MM-DD') - } - } else { - editActions = [this.fetchEstimate(route.params.id)] - } - - Promise.all([ - itemStore.fetchItems({ - filter: {}, - orderByField: '', - orderBy: '', - }), - this.resetSelectedNote(), - this.fetchEstimateTemplates(), - this.getNextNumber(), - taxTypeStore.fetchTaxTypes({ limit: 'all' }), - ...editActions, - ]) - .then(async ([res1, res2, res3, res4, res5, res6, res7]) => { - // Create - if (!isEdit) { - if (res4.data) { - this.newEstimate.estimate_number = res4.data.nextNumber - } - - this.setTemplate(this.templates[0].name) - this.newEstimate.template_name = userStore.currentUserSettings - .default_estimate_template - ? userStore.currentUserSettings.default_estimate_template - : this.newEstimate.template_name - } - - if (isEdit) { - this.addSalesTaxUs() - } - this.isFetchingInitialSettings = false - }) - .catch((err) => { - handleError(err) - this.isFetchingInitialSettings = false - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/exchange-rate.js b/resources/scripts/admin/stores/exchange-rate.js deleted file mode 100644 index d79443ba..00000000 --- a/resources/scripts/admin/stores/exchange-rate.js +++ /dev/null @@ -1,247 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useNotificationStore } from '@/scripts/stores/notification' -import { handleError } from '@/scripts/helpers/error-handling' - -export const useExchangeRateStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - const notificationStore = useNotificationStore() - - return defineStoreFunc('exchange-rate', { - state: () => ({ - supportedCurrencies: [], - drivers: [], - activeUsedCurrencies: [], - providers: [], - currencies: null, - currentExchangeRate: { - id: null, - driver: '', - key: '', - active: true, - currencies: [], - }, - currencyConverter: { - type: '', - url: '', - }, - bulkCurrencies: [], - }), - getters: { - isEdit: (state) => (state.currentExchangeRate.id ? true : false), - }, - - actions: { - fetchProviders(params) { - return new Promise((resolve, reject) => { - http - .get('/api/v1/exchange-rate-providers', { params }) - .then((response) => { - this.providers = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchDefaultProviders() { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/config?key=exchange_rate_drivers`) - .then((response) => { - this.drivers = response.data.exchange_rate_drivers - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchProvider(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/exchange-rate-providers/${id}`) - .then((response) => { - this.currentExchangeRate = response.data.data - this.currencyConverter = response.data.data.driver_config - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addProvider(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/exchange-rate-providers', data) - .then((response) => { - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.exchange_rate.created_message'), - }) - - resolve(response) - }) - .catch((err) => { - handleError(err) - - reject(err) - }) - }) - }, - - updateProvider(data) { - return new Promise((resolve, reject) => { - http - .put(`/api/v1/exchange-rate-providers/${data.id}`, data) - .then((response) => { - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.exchange_rate.updated_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteExchangeRate(id) { - return new Promise((resolve, reject) => { - http - .delete(`/api/v1/exchange-rate-providers/${id}`) - .then((response) => { - let index = this.drivers.findIndex((driver) => driver.id === id) - this.drivers.splice(index, 1) - if (response.data.success) { - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.exchange_rate.deleted_message'), - }) - } else { - notificationStore.showNotification({ - type: 'error', - message: global.t('settings.exchange_rate.error'), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - fetchCurrencies(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/supported-currencies`, { params }) - .then((response) => { - this.supportedCurrencies = response.data.supportedCurrencies - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - fetchActiveCurrency(params) { - return new Promise((resolve, reject) => { - http - .get('/api/v1/used-currencies', { params }) - .then((response) => { - this.activeUsedCurrencies = response.data.activeUsedCurrencies - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - fetchBulkCurrencies() { - return new Promise((resolve, reject) => { - http - .get('/api/v1/currencies/used') - .then((response) => { - this.bulkCurrencies = response.data.currencies.map((_m) => { - _m.exchange_rate = null - return _m - }) - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - updateBulkExchangeRate(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/currencies/bulk-update-exchange-rate', data) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - getCurrentExchangeRate(currencyId) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/currencies/${currencyId}/exchange-rate`) - .then((response) => { - resolve(response) - }) - .catch((err) => { - reject(err) - }) - }) - }, - getCurrencyConverterServers() { - return new Promise((resolve, reject) => { - http - .get('/api/v1/config?key=currency_converter_servers') - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - checkForActiveProvider(currency_id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/currencies/${currency_id}/active-provider`) - .then((response) => { - resolve(response) - }) - .catch((err) => { - reject(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/expense.js b/resources/scripts/admin/stores/expense.js deleted file mode 100644 index 024e5459..00000000 --- a/resources/scripts/admin/stores/expense.js +++ /dev/null @@ -1,238 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { handleError } from '@/scripts/helpers/error-handling' -import { useNotificationStore } from '@/scripts/stores/notification' -import expenseStub from '@/scripts/admin/stub/expense' -import utils from '@/scripts/helpers/utilities' - -export const useExpenseStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('expense', { - state: () => ({ - expenses: [], - totalExpenses: 0, - selectAllField: false, - selectedExpenses: [], - paymentModes: [], - showExchangeRate: false, - currentExpense: { - ...expenseStub, - }, - }), - - getters: { - getCurrentExpense: (state) => state.currentExpense, - getSelectedExpenses: (state) => state.selectedExpenses, - }, - - actions: { - resetCurrentExpenseData() { - this.currentExpense = { - ...expenseStub, - } - }, - - fetchExpenses(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/expenses`, { params }) - .then((response) => { - this.expenses = response.data.data - this.totalExpenses = response.data.meta.expense_total_count - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchExpense(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/expenses/${id}`) - .then((response) => { - if (response.data) { - Object.assign(this.currentExpense, response.data.data) - this.currentExpense.selectedCurrency = - response.data.data.currency - this.currentExpense.attachment_receipt = null - if (response.data.data.attachment_receipt_url) { - if ( - utils.isImageFile( - response.data.data.attachment_receipt_meta.mime_type - ) - ) { - this.currentExpense.receiptFiles = [ - { image: `/reports/expenses/${id}/receipt?${response.data.data.attachment_receipt_meta.uuid}` }, - ] - } else { - this.currentExpense.receiptFiles = [ - { - type: 'document', - name: response.data.data.attachment_receipt_meta - .file_name, - }, - ] - } - } else { - this.currentExpense.receiptFiles = [] - } - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addExpense(data) { - const formData = utils.toFormData(data) - - return new Promise((resolve, reject) => { - http - .post('/api/v1/expenses', formData) - .then((response) => { - this.expenses.push(response.data) - - const notificationStore = useNotificationStore() - - notificationStore.showNotification({ - type: 'success', - message: global.t('expenses.created_message'), - }) - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateExpense({ id, data, isAttachmentReceiptRemoved }) { - const notificationStore = useNotificationStore() - - const formData = utils.toFormData(data) - - formData.append('_method', 'PUT') - formData.append('is_attachment_receipt_removed', isAttachmentReceiptRemoved) - - return new Promise((resolve) => { - http.post(`/api/v1/expenses/${id}`, formData).then((response) => { - let pos = this.expenses.findIndex( - (expense) => expense.id === response.data.id - ) - - this.expenses[pos] = data.expense - - notificationStore.showNotification({ - type: 'success', - message: global.t('expenses.updated_message'), - }) - - resolve(response) - }) - }).catch((err) => { - handleError(err) - reject(err) - }) - }, - - setSelectAllState(data) { - this.selectAllField = data - }, - - selectExpense(data) { - this.selectedExpenses = data - if (this.selectedExpenses.length === this.expenses.length) { - this.selectAllField = true - } else { - this.selectAllField = false - } - }, - - selectAllExpenses(data) { - if (this.selectedExpenses.length === this.expenses.length) { - this.selectedExpenses = [] - this.selectAllField = false - } else { - let allExpenseIds = this.expenses.map((expense) => expense.id) - this.selectedExpenses = allExpenseIds - this.selectAllField = true - } - }, - - deleteExpense(id) { - const notificationStore = useNotificationStore() - - return new Promise((resolve, reject) => { - http - .post(`/api/v1/expenses/delete`, id) - .then((response) => { - let index = this.expenses.findIndex( - (expense) => expense.id === id - ) - this.expenses.splice(index, 1) - - notificationStore.showNotification({ - type: 'success', - message: global.t('expenses.deleted_message', 1), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteMultipleExpenses() { - const notificationStore = useNotificationStore() - - return new Promise((resolve, reject) => { - http - .post(`/api/v1/expenses/delete`, { ids: this.selectedExpenses }) - .then((response) => { - this.selectedExpenses.forEach((expense) => { - let index = this.expenses.findIndex( - (_expense) => _expense.id === expense.id - ) - this.expenses.splice(index, 1) - }) - notificationStore.showNotification({ - type: 'success', - message: global.t('expenses.deleted_message', 2), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - fetchPaymentModes(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/payment-methods`, { params }) - .then((response) => { - this.paymentModes = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/global.js b/resources/scripts/admin/stores/global.js deleted file mode 100644 index 76a490e0..00000000 --- a/resources/scripts/admin/stores/global.js +++ /dev/null @@ -1,309 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useCompanyStore } from './company' -import { useUserStore } from './user' -import { useModuleStore } from './module' -import { useNotificationStore } from '@/scripts/stores/notification' -import { handleError } from '@/scripts/helpers/error-handling' -import _ from 'lodash' - -export const useGlobalStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('global', { - state: () => ({ - // Global Configuration - config: null, - globalSettings: null, - - // Global Lists - timeZones: [], - dateFormats: [], - timeFormats: [], - currencies: [], - countries: [], - languages: [], - fiscalYears: [], - - // Menus - mainMenu: [], - settingMenu: [], - - // Boolean Flags - isAppLoaded: false, - isSidebarOpen: false, - isSidebarCollapsed: window.Ls?.get('sidebarCollapsed') === 'true', - areCurrenciesLoading: false, - - downloadReport: null, - }), - - getters: { - menuGroups: (state) => { - return Object.values(_.groupBy(state.mainMenu, 'group')) - }, - }, - - actions: { - bootstrap() { - return new Promise((resolve, reject) => { - const companyStore = useCompanyStore() - const url = companyStore.isAdminMode - ? '/api/v1/bootstrap?admin_mode=1' - : '/api/v1/bootstrap' - - http - .get(url) - .then(async (response) => { - const userStore = useUserStore() - const moduleStore = useModuleStore() - - this.mainMenu = response.data.main_menu - this.settingMenu = response.data.setting_menu - - this.config = response.data.config - this.globalSettings = response.data.global_settings - - // user store - userStore.currentUser = response.data.current_user - userStore.currentUserSettings = - response.data.current_user_settings - userStore.currentAbilities = response.data.current_user_abilities - - // Module store - moduleStore.apiToken = response.data.global_settings.api_token - moduleStore.enableModules = response.data.modules - - // invitation store - if (response.data.pending_invitations) { - const { useInvitationStore } = await import('@/scripts/admin/stores/invitation') - const invitationStore = useInvitationStore() - invitationStore.setPendingInvitations(response.data.pending_invitations) - } - - // company store - companyStore.companies = response.data.companies - - if (response.data.current_company) { - companyStore.setSelectedCompany(response.data.current_company) - companyStore.selectedCompanySettings = - response.data.current_company_settings - companyStore.selectedCompanyCurrency = - response.data.current_company_currency - } else { - companyStore.setSelectedCompany(null) - companyStore.selectedCompanySettings = {} - companyStore.selectedCompanyCurrency = null - } - - // Determine and load the appropriate language - const userLanguage = response.data.current_user_settings?.language - const companyLanguage = response.data.current_company_settings?.language - const targetLanguage = userLanguage || companyLanguage || 'en' - - // Load the language dynamically if it's not English - if (targetLanguage !== 'en' && window.loadLanguage) { - try { - await window.loadLanguage(targetLanguage) - } catch (error) { - console.warn('Failed to load language during bootstrap:', error) - // Fall back to English if loading fails - if (typeof global.locale !== 'string') { - global.locale.value = 'en' - } else { - global.locale = 'en' - } - } - } else { - // Set locale for English or when loadLanguage is not available - if (typeof global.locale !== 'string') { - global.locale.value = targetLanguage - } else { - global.locale = targetLanguage - } - } - - this.isAppLoaded = true - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchCurrencies() { - return new Promise((resolve, reject) => { - if (this.currencies.length || this.areCurrenciesLoading) { - resolve(this.currencies) - } else { - this.areCurrenciesLoading = true - http - .get('/api/v1/currencies') - .then((response) => { - this.currencies = response.data.data.filter((currency) => { - return (currency.name = `${currency.code} - ${currency.name}`) - }) - this.areCurrenciesLoading = false - resolve(response) - }) - .catch((err) => { - handleError(err) - this.areCurrenciesLoading = false - reject(err) - }) - } - }) - }, - - fetchConfig(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/config`, { params }) - .then((response) => { - if (response.data.languages) { - this.languages = response.data.languages - } else { - this.fiscalYears = response.data.fiscal_years - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchDateFormats() { - return new Promise((resolve, reject) => { - if (this.dateFormats.length) { - resolve(this.dateFormats) - } else { - http - .get('/api/v1/date/formats') - .then((response) => { - this.dateFormats = response.data.date_formats - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - } - }) - }, - - fetchTimeFormats() { - return new Promise((resolve, reject) => { - if (this.timeFormats.length) { - resolve(this.timeFormats) - } else { - http - .get('/api/v1/time/formats') - .then((response) => { - this.timeFormats = response.data.time_formats - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - } - }) - }, - - fetchTimeZones() { - return new Promise((resolve, reject) => { - if (this.timeZones.length) { - resolve(this.timeZones) - } else { - http - .get('/api/v1/timezones') - .then((response) => { - this.timeZones = response.data.time_zones - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - } - }) - }, - - fetchCountries() { - return new Promise((resolve, reject) => { - if (this.countries.length) { - resolve(this.countries) - } else { - http - .get('/api/v1/countries') - .then((response) => { - this.countries = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - } - }) - }, - - fetchPlaceholders(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/number-placeholders`, { params }) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - setSidebarVisibility(val) { - this.isSidebarOpen = val - }, - - toggleSidebarCollapse() { - this.isSidebarCollapsed = !this.isSidebarCollapsed - window.Ls.set('sidebarCollapsed', this.isSidebarCollapsed ? 'true' : 'false') - }, - - setIsAppLoaded(isAppLoaded) { - this.isAppLoaded = isAppLoaded - }, - - updateGlobalSettings({ data, message }) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/settings', data) - .then((response) => { - Object.assign(this.globalSettings, data.settings) - - if (message) { - const notificationStore = useNotificationStore() - - notificationStore.showNotification({ - type: 'success', - message: global.t(message), - }) - } - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/installation.js b/resources/scripts/admin/stores/installation.js deleted file mode 100644 index eca15672..00000000 --- a/resources/scripts/admin/stores/installation.js +++ /dev/null @@ -1,200 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useCompanyStore } from './company' -import { handleError } from '@/scripts/helpers/error-handling' - -export const useInstallationStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - const companyStore = useCompanyStore() - - return defineStoreFunc('installation', { - state: () => ({ - currentDataBaseData: { - database_connection: 'mysql', - database_hostname: '127.0.0.1', - database_port: '3306', - database_name: null, - database_username: null, - database_password: null, - database_overwrite: false, - app_url: window.location.origin, - app_locale: null - }, - }), - - actions: { - fetchInstallationLanguages() { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/installation/languages`) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchInstallationRequirements() { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/installation/requirements`) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchInstallationStep() { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/installation/wizard-step`) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addInstallationStep(data) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/installation/wizard-step`, data) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addInstallationLanguage(data) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/installation/wizard-language`, data) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchInstallationPermissions() { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/installation/permissions`) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchInstallationDatabase(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/installation/database/config`, { params }) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addInstallationDatabase(data) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/installation/database/config`, data) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addInstallationFinish() { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/installation/finish`) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - setInstallationDomain(data) { - return new Promise((resolve, reject) => { - http - .put(`/api/v1/installation/set-domain`, data) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - installationLogin() { - return new Promise((resolve, reject) => { - http.get('/sanctum/csrf-cookie').then((response) => { - if (response) { - http - .post('/api/v1/installation/login') - .then((response) => { - companyStore.setSelectedCompany(response.data.company) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - } - }) - }) - }, - - checkAuthenticated() { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/auth/check`) - .then((response) => { - resolve(response) - }) - .catch((err) => { - reject(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/invitation.js b/resources/scripts/admin/stores/invitation.js deleted file mode 100644 index da551120..00000000 --- a/resources/scripts/admin/stores/invitation.js +++ /dev/null @@ -1,56 +0,0 @@ -import { defineStore } from 'pinia' -import { useNotificationStore } from '@/scripts/stores/notification' -import { useGlobalStore } from '@/scripts/admin/stores/global' -import http from '@/scripts/http' - -export const useInvitationStore = defineStore('invitation', { - state: () => ({ - pendingInvitations: [], - }), - - actions: { - setPendingInvitations(invitations) { - this.pendingInvitations = invitations - }, - - async fetchPending() { - const response = await http.get('/api/v1/invitations/pending') - this.pendingInvitations = response.data.invitations - return response - }, - - async accept(token) { - const notificationStore = useNotificationStore() - const globalStore = useGlobalStore() - - const response = await http.post(`/api/v1/invitations/${token}/accept`) - - notificationStore.showNotification({ - type: 'success', - message: 'Invitation accepted!', - }) - - // Refresh bootstrap to get updated companies list - await globalStore.bootstrap() - - return response - }, - - async decline(token) { - const notificationStore = useNotificationStore() - - const response = await http.post(`/api/v1/invitations/${token}/decline`) - - this.pendingInvitations = this.pendingInvitations.filter( - (inv) => inv.token !== token - ) - - notificationStore.showNotification({ - type: 'success', - message: 'Invitation declined.', - }) - - return response - }, - }, -}) diff --git a/resources/scripts/admin/stores/invoice.js b/resources/scripts/admin/stores/invoice.js deleted file mode 100644 index a3b3a33e..00000000 --- a/resources/scripts/admin/stores/invoice.js +++ /dev/null @@ -1,579 +0,0 @@ -import http from '@/scripts/http' -import moment from 'moment' -import Guid from 'guid' -import _ from 'lodash' -import { defineStore } from 'pinia' -import { useRoute } from 'vue-router' -import { handleError } from '@/scripts/helpers/error-handling' -import invoiceItemStub from '../stub/invoice-item' -import taxStub from '../stub/tax' -import invoiceStub from '../stub/invoice' - -import { useNotificationStore } from '@/scripts/stores/notification' -import { useCustomerStore } from './customer' -import { useTaxTypeStore } from './tax-type' -import { useCompanyStore } from './company' -import { useItemStore } from './item' -import { useUserStore } from './user' -import { useNotesStore } from './note' - -export const useInvoiceStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - const notificationStore = useNotificationStore() - - return defineStoreFunc('invoice', { - state: () => ({ - templates: [], - invoices: [], - selectedInvoices: [], - selectAllField: false, - invoiceTotalCount: 0, - showExchangeRate: false, - isFetchingInitialSettings: false, - isFetchingInvoice: false, - - newInvoice: { - ...invoiceStub(), - }, - }), - - getters: { - getInvoice: (state) => (id) => { - let invId = parseInt(id) - return state.invoices.find((invoice) => invoice.id === invId) - }, - - getSubTotal() { - return this.newInvoice.items.reduce(function (a, b) { - return a + b['total'] - }, 0) - }, - - getNetTotal() { - return this.getSubtotalWithDiscount - this.getTotalTax - }, - - getTotalSimpleTax() { - return _.sumBy(this.newInvoice.taxes, function (tax) { - if (!tax.compound_tax) { - return tax.amount - } - return 0 - }) - }, - - getTotalCompoundTax() { - return _.sumBy(this.newInvoice.taxes, function (tax) { - if (tax.compound_tax) { - return tax.amount - } - return 0 - }) - }, - - getTotalTax() { - if ( - this.newInvoice.tax_per_item === 'NO' || - this.newInvoice.tax_per_item === null - ) { - return this.getTotalSimpleTax + this.getTotalCompoundTax - } - return _.sumBy(this.newInvoice.items, function (tax) { - return tax.tax - }) - }, - - getSubtotalWithDiscount() { - return this.getSubTotal - this.newInvoice.discount_val - }, - - getTotal() { - if (this.newInvoice.tax_included) { - return this.getSubtotalWithDiscount - } - return this.getSubtotalWithDiscount + this.getTotalTax - }, - - isEdit: (state) => (state.newInvoice.id ? true : false), - }, - - actions: { - resetCurrentInvoice() { - this.newInvoice = { - ...invoiceStub(), - } - }, - - previewInvoice(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/invoices/${params.id}/send/preview`, { params }) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchInvoices(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/invoices`, { params }) - .then((response) => { - this.invoices = response.data.data - this.invoiceTotalCount = response.data.meta.invoice_total_count - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchInvoice(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/invoices/${id}`) - .then((response) => { - this.setInvoiceData(response.data.data) - this.setCustomerAddresses(this.newInvoice.customer) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - setInvoiceData(invoice) { - Object.assign(this.newInvoice, invoice) - - if (this.newInvoice.tax_per_item === 'YES') { - this.newInvoice.items.forEach((_i) => { - if (_i.taxes && !_i.taxes.length) - _i.taxes.push({ ...taxStub, id: Guid.raw() }) - }) - } - - if (this.newInvoice.discount_per_item === 'YES') { - this.newInvoice.items.forEach((_i, index) => { - if (_i.discount_type === 'fixed') - this.newInvoice.items[index].discount = _i.discount / 100 - }) - } else { - if (this.newInvoice.discount_type === 'fixed') - this.newInvoice.discount = this.newInvoice.discount / 100 - } - }, - - setCustomerAddresses(customer) { - const customer_business = customer.customer_business - - if (customer_business?.billing_address) - this.newInvoice.customer.billing_address = - customer_business.billing_address - - if (customer_business?.shipping_address) - this.newInvoice.customer.shipping_address = - customer_business.shipping_address - }, - - addSalesTaxUs() { - const taxTypeStore = useTaxTypeStore() - let salesTax = { ...taxStub } - let found = this.newInvoice.taxes.find( - (_t) => _t.name === 'Sales Tax' && _t.type === 'MODULE', - ) - if (found) { - for (const key in found) { - if (Object.prototype.hasOwnProperty.call(salesTax, key)) { - salesTax[key] = found[key] - } - } - salesTax.id = found.tax_type_id - taxTypeStore.taxTypes.push(salesTax) - } - }, - - sendInvoice(data) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/invoices/${data.id}/send`, data) - .then((response) => { - notificationStore.showNotification({ - type: 'success', - message: global.t('invoices.invoice_sent_successfully'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addInvoice(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/invoices', data) - .then((response) => { - this.invoices = [...this.invoices, response.data.invoice] - - notificationStore.showNotification({ - type: 'success', - message: global.t('invoices.created_message'), - }) - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteInvoice(id) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/invoices/delete`, id) - .then((response) => { - let index = this.invoices.findIndex( - (invoice) => invoice.id === id, - ) - this.invoices.splice(index, 1) - - notificationStore.showNotification({ - type: 'success', - message: global.t('invoices.deleted_message', 1), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteMultipleInvoices(id) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/invoices/delete`, { ids: this.selectedInvoices }) - .then((response) => { - this.selectedInvoices.forEach((invoice) => { - let index = this.invoices.findIndex( - (_inv) => _inv.id === invoice.id, - ) - this.invoices.splice(index, 1) - }) - this.selectedInvoices = [] - - notificationStore.showNotification({ - type: 'success', - message: global.t('invoices.deleted_message', 2), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateInvoice(data) { - return new Promise((resolve, reject) => { - http - .put(`/api/v1/invoices/${data.id}`, data) - .then((response) => { - let pos = this.invoices.findIndex( - (invoice) => invoice.id === response.data.data.id, - ) - this.invoices[pos] = response.data.data - - notificationStore.showNotification({ - type: 'success', - message: global.t('invoices.updated_message'), - }) - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - cloneInvoice(data) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/invoices/${data.id}/clone`, data) - .then((response) => { - notificationStore.showNotification({ - type: 'success', - message: global.t('invoices.cloned_successfully'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - markAsSent(data) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/invoices/${data.id}/status`, data) - .then((response) => { - let pos = this.invoices.findIndex( - (invoices) => invoices.id === data.id, - ) - - if (this.invoices[pos]) { - this.invoices[pos].status = 'SENT' - } - - notificationStore.showNotification({ - type: 'success', - message: global.t('invoices.mark_as_sent_successfully'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - getNextNumber(params, setState = false) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/next-number?key=invoice`, { params }) - .then((response) => { - if (setState) { - this.newInvoice.invoice_number = response.data.nextNumber - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - searchInvoice(data) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/invoices?${data}`) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - selectInvoice(data) { - this.selectedInvoices = data - if (this.selectedInvoices.length === this.invoices.length) { - this.selectAllField = true - } else { - this.selectAllField = false - } - }, - - selectAllInvoices() { - if (this.selectedInvoices.length === this.invoices.length) { - this.selectedInvoices = [] - this.selectAllField = false - } else { - let allInvoiceIds = this.invoices.map((invoice) => invoice.id) - this.selectedInvoices = allInvoiceIds - this.selectAllField = true - } - }, - - selectCustomer(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/customers/${id}`) - .then((response) => { - this.newInvoice.customer = response.data.data - this.newInvoice.customer_id = response.data.data.id - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchInvoiceTemplates(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/invoices/templates`, { params }) - .then((response) => { - this.templates = response.data.invoiceTemplates - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - selectNote(data) { - this.newInvoice.selectedNote = null - this.newInvoice.selectedNote = data - }, - - setTemplate(data) { - this.newInvoice.template_name = data - }, - - resetSelectedCustomer() { - this.newInvoice.customer = null - this.newInvoice.customer_id = null - }, - - addItem() { - this.newInvoice.items.push({ - ...invoiceItemStub, - id: Guid.raw(), - taxes: [{ ...taxStub, id: Guid.raw() }], - }) - }, - - updateItem(data) { - Object.assign(this.newInvoice.items[data.index], { ...data }) - }, - - removeItem(index) { - this.newInvoice.items.splice(index, 1) - }, - - deselectItem(index) { - this.newInvoice.items[index] = { - ...invoiceItemStub, - id: Guid.raw(), - taxes: [{ ...taxStub, id: Guid.raw() }], - } - }, - - resetSelectedNote() { - this.newInvoice.selectedNote = null - }, - - // On Load actions - async fetchInvoiceInitialSettings(isEdit) { - const companyStore = useCompanyStore() - const customerStore = useCustomerStore() - const itemStore = useItemStore() - const taxTypeStore = useTaxTypeStore() - const route = useRoute() - const userStore = useUserStore() - const notesStore = useNotesStore() - - this.isFetchingInitialSettings = true - - this.newInvoice.selectedCurrency = companyStore.selectedCompanyCurrency - - if (route.query.customer) { - let response = await customerStore.fetchCustomer(route.query.customer) - this.newInvoice.customer = response.data.data - this.newInvoice.customer_id = response.data.data.id - } - - let editActions = [] - - if (!isEdit) { - await notesStore.fetchNotes() - this.newInvoice.notes = - notesStore.getDefaultNoteForType('Invoice')?.notes - this.newInvoice.tax_per_item = - companyStore.selectedCompanySettings.tax_per_item - this.newInvoice.sales_tax_type = - companyStore.selectedCompanySettings.sales_tax_type - this.newInvoice.sales_tax_address_type = - companyStore.selectedCompanySettings.sales_tax_address_type - this.newInvoice.discount_per_item = - companyStore.selectedCompanySettings.discount_per_item - - let dateFormat = 'YYYY-MM-DD' - if (companyStore.selectedCompanySettings.invoice_use_time === 'YES') { - dateFormat += ' HH:mm' - } - - this.newInvoice.invoice_date = moment().format(dateFormat) - if ( - companyStore.selectedCompanySettings - .invoice_set_due_date_automatically === 'YES' - ) { - this.newInvoice.due_date = moment() - .add( - companyStore.selectedCompanySettings.invoice_due_date_days, - 'days', - ) - .format('YYYY-MM-DD') - } - } else { - editActions = [this.fetchInvoice(route.params.id)] - } - - Promise.all([ - itemStore.fetchItems({ - filter: {}, - orderByField: '', - orderBy: '', - }), - this.resetSelectedNote(), - this.fetchInvoiceTemplates(), - this.getNextNumber(), - taxTypeStore.fetchTaxTypes({ limit: 'all' }), - ...editActions, - ]) - .then(async ([res1, res2, res3, res4, res5, res6]) => { - if (!isEdit) { - if (res4.data) { - this.newInvoice.invoice_number = res4.data.nextNumber - } - - if (res3.data) { - this.setTemplate(this.templates[0].name) - this.newInvoice.template_name = userStore.currentUserSettings - .default_invoice_template - ? userStore.currentUserSettings.default_invoice_template - : this.newInvoice.template_name - } - } - if (isEdit) { - this.addSalesTaxUs() - } - - this.isFetchingInitialSettings = false - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/item.js b/resources/scripts/admin/stores/item.js deleted file mode 100644 index d004489e..00000000 --- a/resources/scripts/admin/stores/item.js +++ /dev/null @@ -1,335 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useNotificationStore } from '@/scripts/stores/notification' -import { handleError } from '@/scripts/helpers/error-handling' - -export const useItemStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('item', { - state: () => ({ - items: [], - totalItems: 0, - selectAllField: false, - selectedItems: [], - itemUnits: [], - currentItemUnit: { - id: null, - name: '', - }, - currentItem: { - name: '', - description: '', - price: 0, - unit_id: '', - unit: null, - taxes: [], - tax_per_item: false, - }, - }), - getters: { - isItemUnitEdit: (state) => (state.currentItemUnit.id ? true : false), - }, - actions: { - resetCurrentItem() { - this.currentItem = { - name: '', - description: '', - price: 0, - unit_id: '', - unit: null, - taxes: [], - } - }, - fetchItems(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/items`, { params }) - .then((response) => { - this.items = response.data.data - this.totalItems = response.data.meta.item_total_count - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchItem(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/items/${id}`) - .then((response) => { - if (response.data) { - Object.assign(this.currentItem, response.data.data) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addItem(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/items', data) - .then((response) => { - const notificationStore = useNotificationStore() - - this.items.push(response.data.data) - - notificationStore.showNotification({ - type: 'success', - message: global.t('items.created_message'), - }) - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateItem(data) { - return new Promise((resolve, reject) => { - http - .put(`/api/v1/items/${data.id}`, data) - .then((response) => { - if (response.data) { - const notificationStore = useNotificationStore() - - let pos = this.items.findIndex( - (item) => item.id === response.data.data.id - ) - - this.items[pos] = data.item - - notificationStore.showNotification({ - type: 'success', - message: global.t('items.updated_message'), - }) - } - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteItem(id) { - const notificationStore = useNotificationStore() - - return new Promise((resolve, reject) => { - http - .post(`/api/v1/items/delete`, id) - .then((response) => { - let index = this.items.findIndex((item) => item.id === id) - this.items.splice(index, 1) - - notificationStore.showNotification({ - type: 'success', - message: global.t('items.deleted_message', 1), - }) - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteMultipleItems() { - const notificationStore = useNotificationStore() - - return new Promise((resolve, reject) => { - http - .post(`/api/v1/items/delete`, { ids: this.selectedItems }) - .then((response) => { - this.selectedItems.forEach((item) => { - let index = this.items.findIndex( - (_item) => _item.id === item.id - ) - this.items.splice(index, 1) - }) - - notificationStore.showNotification({ - type: 'success', - message: global.t('items.deleted_message', 2), - }) - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - selectItem(data) { - this.selectedItems = data - if (this.selectedItems.length === this.items.length) { - this.selectAllField = true - } else { - this.selectAllField = false - } - }, - - selectAllItems(data) { - if (this.selectedItems.length === this.items.length) { - this.selectedItems = [] - this.selectAllField = false - } else { - let allItemIds = this.items.map((item) => item.id) - this.selectedItems = allItemIds - this.selectAllField = true - } - }, - - addItemUnit(data) { - const notificationStore = useNotificationStore() - - return new Promise((resolve, reject) => { - http - .post(`/api/v1/units`, data) - .then((response) => { - this.itemUnits.push(response.data.data) - - if (response.data.data) { - notificationStore.showNotification({ - type: 'success', - message: global.t( - 'settings.customization.items.item_unit_added' - ), - }) - } - - if (response.data.errors) { - notificationStore.showNotification({ - type: 'error', - message: err.response.data.errors[0], - }) - } - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateItemUnit(data) { - const notificationStore = useNotificationStore() - - return new Promise((resolve, reject) => { - http - .put(`/api/v1/units/${data.id}`, data) - .then((response) => { - let pos = this.itemUnits.findIndex( - (unit) => unit.id === response.data.data.id - ) - - this.itemUnits[pos] = data - - if (response.data.data) { - notificationStore.showNotification({ - type: 'success', - message: global.t( - 'settings.customization.items.item_unit_updated' - ), - }) - } - - if (response.data.errors) { - notificationStore.showNotification({ - type: 'error', - message: err.response.data.errors[0], - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchItemUnits(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/units`, { params }) - .then((response) => { - this.itemUnits = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchItemUnit(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/units/${id}`) - .then((response) => { - this.currentItemUnit = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteItemUnit(id) { - const notificationStore = useNotificationStore() - - return new Promise((resolve, reject) => { - http - .delete(`/api/v1/units/${id}`) - .then((response) => { - if (!response.data.error) { - let index = this.itemUnits.findIndex((unit) => unit.id === id) - this.itemUnits.splice(index, 1) - } - - if (response.data.success) { - notificationStore.showNotification({ - type: 'success', - message: global.t( - 'settings.customization.items.deleted_message' - ), - }) - } - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/mail-driver.js b/resources/scripts/admin/stores/mail-driver.js deleted file mode 100644 index 02115579..00000000 --- a/resources/scripts/admin/stores/mail-driver.js +++ /dev/null @@ -1,144 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useNotificationStore } from '@/scripts/stores/notification' -import { handleError } from '@/scripts/helpers/error-handling' - -export const useMailDriverStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('mail-driver', { - state: () => ({ - mailConfigData: null, - mail_driver: 'smtp', - mail_drivers: [], - - basicMailConfig: { - mail_driver: '', - mail_host: '', - from_mail: '', - from_name: '', - }, - - mailgunConfig: { - mail_driver: '', - mail_mailgun_domain: '', - mail_mailgun_secret: '', - mail_mailgun_endpoint: '', - from_mail: '', - from_name: '', - }, - - sesConfig: { - mail_driver: '', - mail_host: '', - mail_port: null, - mail_ses_key: '', - mail_ses_secret: '', - mail_ses_region: '', - from_mail: '', - from_name: '', - }, - - smtpConfig: { - mail_driver: '', - mail_host: '', - mail_port: null, - mail_username: '', - mail_password: '', - mail_encryption: '', - from_mail: '', - from_name: '', - }, - }), - - actions: { - fetchMailDrivers() { - return new Promise((resolve, reject) => { - http - .get('/api/v1/mail/drivers') - .then((response) => { - if (response.data) { - this.mail_drivers = response.data - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchMailConfig() { - return new Promise((resolve, reject) => { - http - .get('/api/v1/mail/config') - .then((response) => { - if (response.data) { - this.mailConfigData = response.data - this.mail_driver = response.data.mail_driver - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateMailConfig(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/mail/config', data) - .then((response) => { - const notificationStore = useNotificationStore() - if (response.data.success) { - notificationStore.showNotification({ - type: 'success', - message: global.t('wizard.success.' + response.data.success), - }) - } else { - notificationStore.showNotification({ - type: 'error', - message: global.t('wizard.errors.' + response.data.error), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - sendTestMail(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/mail/test', data) - .then((response) => { - const notificationStore = useNotificationStore() - if (response.data.success) { - notificationStore.showNotification({ - type: 'success', - message: global.t('general.send_mail_successfully'), - }) - } else { - notificationStore.showNotification({ - type: 'error', - message: global.t('validation.something_went_wrong'), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/members.js b/resources/scripts/admin/stores/members.js deleted file mode 100644 index d223175a..00000000 --- a/resources/scripts/admin/stores/members.js +++ /dev/null @@ -1,289 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useNotificationStore } from '@/scripts/stores/notification' -import { handleError } from '@/scripts/helpers/error-handling' - -export const useMembersStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('members', { - state: () => ({ - roles: [], - users: [], - totalUsers: 0, - pendingInvitations: [], - currentUser: null, - selectAllField: false, - selectedUsers: [], - customerList: [], - userList: [], - - userData: { - name: '', - email: '', - password: null, - phone: null, - companies: [], - }, - }), - - actions: { - resetUserData() { - this.userData = { - name: '', - email: '', - password: null, - phone: null, - role: null, - companies: [], - } - }, - - fetchUsers(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/members`, { params }) - .then((response) => { - this.users = response.data.data - this.totalUsers = response.data.meta.total - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchUser(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/members/${id}`) - .then((response) => { - this.userData = response.data.data - if (this.userData?.companies?.length) { - this.userData.companies.forEach((c, i) => { - this.userData.roles.forEach((r) => { - if (r.scope === c.id) - this.userData.companies[i].role = r.name - }) - }) - } - resolve(response) - }) - .catch((err) => { - console.log(err) - handleError(err) - reject(err) - }) - }) - }, - - fetchRoles(state) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/roles`) - .then((response) => { - this.roles = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addUser(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/members', data) - .then((response) => { - this.users.push(response.data) - const notificationStore = useNotificationStore() - - notificationStore.showNotification({ - type: 'success', - message: global.t('members.created_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateUser(data) { - return new Promise((resolve, reject) => { - http - .put(`/api/v1/members/${data.id}`, data) - .then((response) => { - if (response) { - let pos = this.users.findIndex( - (user) => user.id === response.data.data.id - ) - this.users[pos] = response.data.data - } - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('members.updated_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteUser(id) { - const notificationStore = useNotificationStore() - - return new Promise((resolve, reject) => { - http - .post(`/api/v1/members/delete`, { users: id.ids }) - .then((response) => { - let index = this.users.findIndex((user) => user.id === id) - this.users.splice(index, 1) - notificationStore.showNotification({ - type: 'success', - message: global.t('members.deleted_message', 1), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteMultipleUsers() { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/members/delete`, { users: this.selectedUsers }) - .then((response) => { - this.selectedUsers.forEach((user) => { - let index = this.users.findIndex( - (_user) => _user.id === user.id - ) - this.users.splice(index, 1) - }) - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('members.deleted_message', 2), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - searchUsers(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/search`, { params }) - .then((response) => { - this.userList = response.data.users.data - this.customerList = response.data.customers.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - setSelectAllState(data) { - this.selectAllField = data - }, - - selectUser(data) { - this.selectedUsers = data - if (this.selectedUsers.length === this.users.length) { - this.selectAllField = true - } else { - this.selectAllField = false - } - }, - - selectAllUsers() { - if (this.selectedUsers.length === this.users.length) { - this.selectedUsers = [] - this.selectAllField = false - } else { - let allUserIds = this.users.map((user) => user.id) - this.selectedUsers = allUserIds - this.selectAllField = true - } - }, - - fetchPendingInvitations() { - return new Promise((resolve, reject) => { - http - .get('/api/v1/company-invitations') - .then((response) => { - this.pendingInvitations = response.data.invitations - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - inviteMember(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/company-invitations', data) - .then((response) => { - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('members.invited_message'), - }) - this.fetchPendingInvitations() - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - cancelInvitation(id) { - return new Promise((resolve, reject) => { - http - .delete(`/api/v1/company-invitations/${id}`) - .then((response) => { - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('members.invitation_cancelled'), - }) - this.pendingInvitations = this.pendingInvitations.filter( - (inv) => inv.id !== id - ) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/module.js b/resources/scripts/admin/stores/module.js deleted file mode 100644 index 736eff9a..00000000 --- a/resources/scripts/admin/stores/module.js +++ /dev/null @@ -1,130 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { handleError } from '@/scripts/helpers/error-handling' -import { useNotificationStore } from '@/scripts/stores/notification' - -export const useModuleStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('modules', { - state: () => ({ - currentModule: {}, - modules: [], - apiToken: null, - currentUser: { - api_token: null, - }, - enableModules: [] - }), - - getters: { - salesTaxUSEnabled: (state) => (state.enableModules.includes('SalesTaxUS')), - }, - - actions: { - fetchModules(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/modules`) - .then((response) => { - this.modules = response.data.data - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchModule(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/modules/${id}`) - .then((response) => { - if (response.data.error === 'invalid_token') { - this.currentModule = {}, - this.modules = [], - this.apiToken = null, - this.currentUser.api_token = null, - window.router.push('/admin/modules') - } else { - this.currentModule = response.data - } - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - checkApiToken(token) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/modules/check?api_token=${token}`) - .then((response) => { - const notificationStore = useNotificationStore() - if (response.data.error === 'invalid_token') { - notificationStore.showNotification({ - type: 'error', - message: global.t('modules.invalid_api_token'), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - disableModule(module) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/modules/${module}/disable`) - .then((response) => { - const notificationStore = useNotificationStore() - if (response.data.success) { - notificationStore.showNotification({ - type: 'success', - message: global.t('modules.module_disabled'), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - enableModule(module) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/modules/${module}/enable`) - .then((response) => { - const notificationStore = useNotificationStore() - if (response.data.success) { - notificationStore.showNotification({ - type: 'success', - message: global.t('modules.module_enabled'), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/note.js b/resources/scripts/admin/stores/note.js deleted file mode 100644 index 8520f683..00000000 --- a/resources/scripts/admin/stores/note.js +++ /dev/null @@ -1,121 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { handleError } from '@/scripts/helpers/error-handling' - -export const useNotesStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('notes', { - state: () => ({ - notes: [], - currentNote: { - id: null, - type: '', - is_default: false, - name: '', - notes: '', - }, - }), - - getters: { - isEdit: (state) => (state.currentNote.id ? true : false), - }, - - actions: { - getDefaultNoteForType(type) { - return this.notes.find((note) => note.type === type && note.is_default) - }, - - resetCurrentNote() { - this.currentNote = { - type: '', - is_default: false, - name: '', - notes: '', - } - }, - - fetchNotes(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/notes`, { params }) - .then((response) => { - this.notes = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchNote(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/notes/${id}`) - .then((response) => { - this.currentNote = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addNote(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/notes', data) - .then((response) => { - this.notes.push(response.data) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateNote(data) { - return new Promise((resolve, reject) => { - http - .put(`/api/v1/notes/${data.id}`, data) - .then((response) => { - if (response.data) { - let pos = this.notes.findIndex( - (notes) => notes.id === response.data.data.id - ) - this.notes[pos] = data.notes - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteNote(id) { - return new Promise((resolve, reject) => { - http - .delete(`/api/v1/notes/${id}`) - .then((response) => { - let index = this.notes.findIndex((note) => note.id === id) - this.notes.splice(index, 1) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/payment.js b/resources/scripts/admin/stores/payment.js deleted file mode 100644 index 413e7ff7..00000000 --- a/resources/scripts/admin/stores/payment.js +++ /dev/null @@ -1,435 +0,0 @@ -import http from '@/scripts/http' -import moment from 'moment' -import { defineStore } from 'pinia' -import { useRoute } from 'vue-router' -import { useCompanyStore } from './company' -import { useNotificationStore } from '@/scripts/stores/notification' -import paymentStub from '../stub/payment' -import { handleError } from '@/scripts/helpers/error-handling' -import { useNotesStore } from './note' - -export const usePaymentStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('payment', { - state: () => ({ - payments: [], - paymentTotalCount: 0, - - selectAllField: false, - selectedPayments: [], - selectedNote: null, - showExchangeRate: false, - drivers: [], - providers: [], - - paymentProviders: { - id: null, - name: '', - driver: '', - active: false, - settings: { - key: '', - secret: '', - }, - }, - - currentPayment: { - ...paymentStub, - }, - - paymentModes: [], - currentPaymentMode: { - id: '', - name: null, - }, - - isFetchingInitialData: false, - }), - - getters: { - isEdit: (state) => (state.paymentProviders.id ? true : false), - }, - - actions: { - fetchPaymentInitialData(isEdit) { - const companyStore = useCompanyStore() - const notesStore = useNotesStore() - const route = useRoute() - - this.isFetchingInitialData = true - - let actions = [] - if (isEdit) { - actions = [this.fetchPayment(route.params.id)] - } - Promise.all([ - this.fetchPaymentModes({ limit: 'all' }), - this.getNextNumber(), - ...actions, - ]) - .then(async ([res1, res2, res3]) => { - if (isEdit) { - if (res3.data.data.invoice) { - this.currentPayment.maxPayableAmount = parseInt( - res3.data.data.invoice.due_amount - ) - } - } - - // On Create - else if (!isEdit && res2.data) { - await notesStore.fetchNotes() - this.currentPayment.notes = notesStore.getDefaultNoteForType('Payment')?.notes - this.currentPayment.payment_date = moment().format('YYYY-MM-DD') - this.currentPayment.payment_number = res2.data.nextNumber - this.currentPayment.currency = - companyStore.selectedCompanyCurrency - } - - this.isFetchingInitialData = false - }) - .catch((err) => { - handleError(err) - }) - }, - - fetchPayments(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/payments`, { params }) - .then((response) => { - this.payments = response.data.data - this.paymentTotalCount = response.data.meta.payment_total_count - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchPayment(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/payments/${id}`) - .then((response) => { - Object.assign(this.currentPayment, response.data.data) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addPayment(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/payments', data) - .then((response) => { - this.payments.push(response.data) - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('payments.created_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updatePayment(data) { - return new Promise((resolve, reject) => { - http - .put(`/api/v1/payments/${data.id}`, data) - .then((response) => { - if (response.data) { - let pos = this.payments.findIndex( - (payment) => payment.id === response.data.data.id - ) - - this.payments[pos] = data.payment - - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('payments.updated_message'), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deletePayment(id) { - const notificationStore = useNotificationStore() - - return new Promise((resolve, reject) => { - http - .post(`/api/v1/payments/delete`, id) - .then((response) => { - let index = this.payments.findIndex( - (payment) => payment.id === id - ) - this.payments.splice(index, 1) - - notificationStore.showNotification({ - type: 'success', - message: global.t('payments.deleted_message', 1), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteMultiplePayments() { - const notificationStore = useNotificationStore() - return new Promise((resolve, reject) => { - http - .post(`/api/v1/payments/delete`, { ids: this.selectedPayments }) - .then((response) => { - this.selectedPayments.forEach((payment) => { - let index = this.payments.findIndex( - (_payment) => _payment.id === payment.id - ) - this.payments.splice(index, 1) - }) - notificationStore.showNotification({ - type: 'success', - message: global.t('payments.deleted_message', 2), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - setSelectAllState(data) { - this.selectAllField = data - }, - - selectPayment(data) { - this.selectedPayments = data - if (this.selectedPayments.length === this.payments.length) { - this.selectAllField = true - } else { - this.selectAllField = false - } - }, - - selectAllPayments() { - if (this.selectedPayments.length === this.payments.length) { - this.selectedPayments = [] - this.selectAllField = false - } else { - let allPaymentIds = this.payments.map((payment) => payment.id) - this.selectedPayments = allPaymentIds - this.selectAllField = true - } - }, - - selectNote(data) { - this.selectedNote = null - this.selectedNote = data - }, - - resetSelectedNote(data) { - this.selectedNote = null - }, - - searchPayment(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/payments`, { params }) - .then((response) => { - this.payments = response.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - previewPayment(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/payments/${params.id}/send/preview`, { params }) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - sendEmail(data) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/payments/${data.id}/send`, data) - .then((response) => { - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('payments.send_payment_successfully'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - getNextNumber(params, setState = false) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/next-number?key=payment`, { params }) - .then((response) => { - if (setState) { - this.currentPayment.payment_number = response.data.nextNumber - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - resetCurrentPayment() { - this.currentPayment = { - ...paymentStub, - } - }, - - fetchPaymentModes(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/payment-methods`, { params }) - .then((response) => { - this.paymentModes = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchPaymentMode(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/payment-methods/${id}`) - .then((response) => { - this.currentPaymentMode = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addPaymentMode(data) { - const notificationStore = useNotificationStore() - return new Promise((resolve, reject) => { - http - .post(`/api/v1/payment-methods`, data) - .then((response) => { - this.paymentModes.push(response.data.data) - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.payment_modes.payment_mode_added'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updatePaymentMode(data) { - const notificationStore = useNotificationStore() - return new Promise((resolve, reject) => { - http - .put(`/api/v1/payment-methods/${data.id}`, data) - .then((response) => { - if (response.data) { - let pos = this.paymentModes.findIndex( - (paymentMode) => paymentMode.id === response.data.data.id - ) - this.paymentModes[pos] = data.paymentModes - notificationStore.showNotification({ - type: 'success', - message: global.t( - 'settings.payment_modes.payment_mode_updated' - ), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deletePaymentMode(id) { - const notificationStore = useNotificationStore() - - return new Promise((resolve, reject) => { - http - .delete(`/api/v1/payment-methods/${id}`) - .then((response) => { - let index = this.paymentModes.findIndex( - (paymentMode) => paymentMode.id === id - ) - this.paymentModes.splice(index, 1) - if (response.data.success) { - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.payment_modes.deleted_message'), - }) - } - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/pdf-driver.js b/resources/scripts/admin/stores/pdf-driver.js deleted file mode 100644 index 1e32c941..00000000 --- a/resources/scripts/admin/stores/pdf-driver.js +++ /dev/null @@ -1,68 +0,0 @@ -const { defineStore } = window.pinia -import { handleError } from '@/scripts/helpers/error-handling' -import { useNotificationStore } from '@/scripts/stores/notification' -import http from '@/scripts/http' - -export const usePDFDriverStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('pdf-driver', { - state: () => ({ - pdfDriverConfig: null, - pdf_driver: 'dompdf', - pdf_drivers: [], - - dompdf: { - pdf_driver: '', - }, - gotenberg: { - pdf_driver: '', - gotenberg_host: '', - gotenberg_papersize: '' - } - }), - - actions: { - async fetchDrivers() { - try { - const response = await http.get('/api/v1/pdf/drivers') - this.pdf_drivers = response.data - } catch (err) { - handleError(err) - throw err - } - }, - async fetchConfig() { - try { - const response = await http.get('/api/v1/pdf/config') - this.pdfDriverConfig = response.data - this.pdf_driver = response.data.pdf_driver - } catch (err) { - handleError(err) - throw err - } - }, - async updateConfig(data) { - try { - const response = await http.post('/api/v1/pdf/config', data) - const notificationStore = useNotificationStore() - if (response.data.success) { - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.pdf.' + response.data.success), - }) - } else { - notificationStore.showNotification({ - type: 'error', - message: global.t('settings.pdf.' + response.data.error), - }) - } - } catch (err) { - handleError(err) - throw err - } - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/recurring-invoice.js b/resources/scripts/admin/stores/recurring-invoice.js deleted file mode 100644 index 801b8a18..00000000 --- a/resources/scripts/admin/stores/recurring-invoice.js +++ /dev/null @@ -1,514 +0,0 @@ -import { defineStore } from 'pinia' -import http from '@/scripts/http' -import recurringInvoiceStub from '@/scripts/admin/stub/recurring-invoice' -import recurringInvoiceItemStub from '@/scripts/admin/stub/recurring-invoice-item' -import TaxStub from '../stub/tax' -import { useRoute } from 'vue-router' -import { useCompanyStore } from './company' -import { useItemStore } from './item' -import { useTaxTypeStore } from './tax-type' -import { useCustomerStore } from './customer' -import Guid from 'guid' -import { handleError } from '@/scripts/helpers/error-handling' -import moment from 'moment' -import _ from 'lodash' -import { useInvoiceStore } from './invoice' -import { useNotificationStore } from '@/scripts/stores/notification' -import { useNotesStore } from './note' - -export const useRecurringInvoiceStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('recurring-invoice', { - state: () => ({ - templates: [], - recurringInvoices: [], - selectedRecurringInvoices: [], - totalRecurringInvoices: 0, - isFetchingInitialSettings: false, - isFetchingViewData: false, - showExchangeRate: false, - selectAllField: false, - newRecurringInvoice: { - ...recurringInvoiceStub(), - }, - - frequencies: [ - { - label: global.t('recurring_invoices.frequency.every_minute'), - value: '* * * * *', - }, - { - label: global.t('recurring_invoices.frequency.every_30_minute'), - value: '*/30 * * * *', - }, - { - label: global.t('recurring_invoices.frequency.every_hour'), - value: '0 * * * *', - }, - { - label: global.t('recurring_invoices.frequency.every_2_hour'), - value: '0 */2 * * *', - }, - { - label: global.t('recurring_invoices.frequency.every_day_at_midnight'), - value: '0 0 * * *', - }, - { - label: global.t('recurring_invoices.frequency.every_week'), - value: '0 0 * * 0', - }, - { - label: global.t( - 'recurring_invoices.frequency.every_15_days_at_midnight', - ), - value: '0 5 */15 * *', - }, - { - label: global.t( - 'recurring_invoices.frequency.on_the_first_day_of_every_month_at_midnight', - ), - value: '0 0 1 * *', - }, - { - label: global.t('recurring_invoices.frequency.every_6_month'), - value: '0 0 1 */6 *', - }, - { - label: global.t( - 'recurring_invoices.frequency.every_year_on_the_first_day_of_january_at_midnight', - ), - value: '0 0 1 1 *', - }, - { - label: global.t('recurring_invoices.frequency.custom'), - value: 'CUSTOM', - }, - ], - }), - - getters: { - getSubTotal() { - return ( - this.newRecurringInvoice?.items.reduce(function (a, b) { - return a + b['total'] - }, 0) || 0 - ) - }, - - getNetTotal() { - return this.getSubtotalWithDiscount - this.getTotalTax - }, - - getTotalSimpleTax() { - return _.sumBy(this.newRecurringInvoice.taxes, function (tax) { - if (!tax.compound_tax) { - return tax.amount - } - return 0 - }) - }, - - getTotalCompoundTax() { - return _.sumBy(this.newRecurringInvoice.taxes, function (tax) { - if (tax.compound_tax) { - return tax.amount - } - return 0 - }) - }, - - getTotalTax() { - if ( - this.newRecurringInvoice.tax_per_item === 'NO' || - this.newRecurringInvoice.tax_per_item === null - ) { - return this.getTotalSimpleTax + this.getTotalCompoundTax - } - return _.sumBy(this.newRecurringInvoice.items, function (tax) { - return tax.tax - }) - }, - - getSubtotalWithDiscount() { - return this.getSubTotal - this.newRecurringInvoice.discount_val - }, - - getTotal() { - if (this.newRecurringInvoice.tax_included) { - return this.getSubtotalWithDiscount - } - return this.getSubtotalWithDiscount + this.getTotalTax - }, - }, - - actions: { - resetCurrentRecurringInvoice() { - this.newRecurringInvoice = { - ...recurringInvoiceStub(), - } - }, - - deselectItem(index) { - this.newRecurringInvoice.items[index] = { - ...recurringInvoiceItemStub, - id: Guid.raw(), - taxes: [{ ...TaxStub, id: Guid.raw() }], - } - }, - - addRecurringInvoice(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/recurring-invoices', data) - .then((response) => { - this.recurringInvoices = [ - ...this.recurringInvoices, - response.data.recurringInvoice, - ] - const notificationStore = useNotificationStore() - - notificationStore.showNotification({ - type: 'success', - message: global.t('recurring_invoices.created_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchRecurringInvoice(id) { - return new Promise((resolve, reject) => { - this.isFetchingViewData = true - http - .get(`/api/v1/recurring-invoices/${id}`) - .then((response) => { - Object.assign(this.newRecurringInvoice, response.data.data) - this.newRecurringInvoice.invoices = - response.data.data.invoices || [] - this.setSelectedFrequency() - this.isFetchingViewData = false - resolve(response) - }) - .catch((err) => { - this.isFetchingViewData = false - handleError(err) - reject(err) - }) - }) - }, - - updateRecurringInvoice(data) { - return new Promise((resolve, reject) => { - http - .put(`/api/v1/recurring-invoices/${data.id}`, data) - .then((response) => { - resolve(response) - - const notificationStore = useNotificationStore() - - notificationStore.showNotification({ - type: 'success', - message: global.t('recurring_invoices.updated_message'), - }) - - let pos = this.recurringInvoices.findIndex( - (invoice) => invoice.id === response.data.data.id, - ) - - this.recurringInvoices[pos] = response.data.data - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - selectCustomer(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/customers/${id}`) - .then((response) => { - this.newRecurringInvoice.customer = response.data.data - this.newRecurringInvoice.customer_id = response.data.data.id - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - searchRecurringInvoice(data) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/recurring-invoices?${data}`) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchRecurringInvoices(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/recurring-invoices`, { params }) - .then((response) => { - this.recurringInvoices = response.data.data - this.totalRecurringInvoices = - response.data.meta.recurring_invoice_total_count - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteRecurringInvoice(id) { - return new Promise((resolve, reject) => { - http - .post(`/api/v1/recurring-invoices/delete`, id) - .then((response) => { - let index = this.recurringInvoices.findIndex( - (invoice) => invoice.id === id, - ) - this.recurringInvoices.splice(index, 1) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteMultipleRecurringInvoices(id) { - return new Promise((resolve, reject) => { - let ids = this.selectedRecurringInvoices - if (id) { - ids = [id] - } - http - .post(`/api/v1/recurring-invoices/delete`, { - ids: ids, - }) - .then((response) => { - this.selectedRecurringInvoices.forEach((invoice) => { - let index = this.recurringInvoices.findIndex( - (_inv) => _inv.id === invoice.id, - ) - this.recurringInvoices.splice(index, 1) - }) - this.selectedRecurringInvoices = [] - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - resetSelectedCustomer() { - this.newRecurringInvoice.customer = null - this.newRecurringInvoice.customer_id = '' - }, - - selectRecurringInvoice(data) { - this.selectedRecurringInvoices = data - if ( - this.selectedRecurringInvoices.length === - this.recurringInvoices.length - ) { - this.selectAllField = true - } else { - this.selectAllField = false - } - }, - - selectAllRecurringInvoices() { - if ( - this.selectedRecurringInvoices.length === - this.recurringInvoices.length - ) { - this.selectedRecurringInvoices = [] - this.selectAllField = false - } else { - let allInvoiceIds = this.recurringInvoices.map( - (invoice) => invoice.id, - ) - this.selectedRecurringInvoices = allInvoiceIds - this.selectAllField = true - } - }, - - addItem() { - this.newRecurringInvoice.items.push({ - ...recurringInvoiceItemStub, - id: Guid.raw(), - taxes: [{ ...TaxStub, id: Guid.raw() }], - }) - }, - - removeItem(index) { - this.newRecurringInvoice.items.splice(index, 1) - }, - - updateItem(data) { - Object.assign(this.newRecurringInvoice.items[data.index], { ...data }) - }, - - async fetchRecurringInvoiceInitialSettings(isEdit) { - const companyStore = useCompanyStore() - const customerStore = useCustomerStore() - const itemStore = useItemStore() - const invoiceStore = useInvoiceStore() - const taxTypeStore = useTaxTypeStore() - const route = useRoute() - const notesStore = useNotesStore() - - this.isFetchingInitialSettings = true - this.newRecurringInvoice.currency = companyStore.selectedCompanyCurrency - - if (route.query.customer) { - let response = await customerStore.fetchCustomer(route.query.customer) - this.newRecurringInvoice.customer = response.data.data - this.selectCustomer(response.data.data.id) - } - - let editActions = [] - - // on create - if (!isEdit) { - await notesStore.fetchNotes() - this.newRecurringInvoice.notes = - notesStore.getDefaultNoteForType('Invoice')?.notes - this.newRecurringInvoice.tax_per_item = - companyStore.selectedCompanySettings.tax_per_item - this.newRecurringInvoice.discount_per_item = - companyStore.selectedCompanySettings.discount_per_item - this.newRecurringInvoice.sales_tax_type = - companyStore.selectedCompanySettings.sales_tax_type - this.newRecurringInvoice.sales_tax_address_type = - companyStore.selectedCompanySettings.sales_tax_address_type - this.newRecurringInvoice.starts_at = moment().format('YYYY-MM-DD') - this.newRecurringInvoice.next_invoice_date = moment() - .add(7, 'days') - .format('YYYY-MM-DD') - } else { - editActions = [this.fetchRecurringInvoice(route.params.id)] - } - - Promise.all([ - itemStore.fetchItems({ - filter: {}, - orderByField: '', - orderBy: '', - }), - this.resetSelectedNote(), - invoiceStore.fetchInvoiceTemplates(), - taxTypeStore.fetchTaxTypes({ limit: 'all' }), - ...editActions, - ]) - .then(async ([res1, res2, res3, res4, res5]) => { - if (res3.data) { - this.templates = invoiceStore.templates - } - - if (!isEdit) { - this.setTemplate(this.templates[0].name) - } - - if (isEdit && res5?.data) { - let data = { - ...res5.data.data, - } - - this.setTemplate(res5?.data?.data?.template_name) - } - if (isEdit) { - this.addSalesTaxUs() - } - this.isFetchingInitialSettings = false - }) - .catch((err) => { - console.log(err) - handleError(err) - }) - }, - - addSalesTaxUs() { - const taxTypeStore = useTaxTypeStore() - let salesTax = { ...TaxStub } - let found = this.newRecurringInvoice.taxes.find( - (_t) => _t.name === 'Sales Tax' && _t.type === 'MODULE', - ) - if (found) { - for (const key in found) { - if (Object.prototype.hasOwnProperty.call(salesTax, key)) { - salesTax[key] = found[key] - } - } - salesTax.id = found.tax_type_id - taxTypeStore.taxTypes.push(salesTax) - } - }, - - setTemplate(data) { - this.newRecurringInvoice.template_name = data - }, - - setSelectedFrequency() { - let data = this.frequencies.find((frequency) => { - return frequency.value === this.newRecurringInvoice.frequency - }) - data - ? (this.newRecurringInvoice.selectedFrequency = data) - : (this.newRecurringInvoice.selectedFrequency = { - label: 'Custom', - value: 'CUSTOM', - }) - }, - - resetSelectedNote() { - this.newRecurringInvoice.selectedNote = null - }, - - fetchRecurringInvoiceFrequencyDate(params) { - return new Promise((resolve, reject) => { - http - .get('/api/v1/recurring-invoice-frequency', { params }) - .then((response) => { - this.newRecurringInvoice.next_invoice_at = - response.data.next_invoice_at - - resolve(response) - }) - .catch((err) => { - const notificationStore = useNotificationStore() - - notificationStore.showNotification({ - type: 'error', - message: global.t('errors.enter_valid_cron_format'), - }) - reject(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/reset.js b/resources/scripts/admin/stores/reset.js deleted file mode 100644 index 9b107c86..00000000 --- a/resources/scripts/admin/stores/reset.js +++ /dev/null @@ -1,89 +0,0 @@ -import { defineStore } from 'pinia' -import { useBackupStore } from './backup' -import { useCategoryStore } from './category' -import { useCompanyStore } from './company' -import { useCustomFieldStore } from './custom-field' -import { useCustomerStore } from './customer' -import { useDashboardStore } from './dashboard' -import { useDialogStore } from '@/scripts/stores/dialog' -import { useDiskStore } from './disk' -import { useEstimateStore } from './estimate' -import { useExchangeRateStore } from './exchange-rate' -import { useExpenseStore } from './expense' -import { useGlobalStore } from './global' -import { useInstallationStore } from './installation' -import { useInvoiceStore } from './invoice' -import { useItemStore } from './item' -import { useMailDriverStore } from './mail-driver' -import { useModalStore } from '@/scripts/stores/modal' -import { useNotesStore } from './note' -import { useNotificationStore } from '@/scripts/stores/notification' -import { usePaymentStore } from './payment' -import { useRecurringInvoiceStore } from './recurring-invoice' -import { useRoleStore } from './role' -import { useTaxTypeStore } from './tax-type' -import { useUserStore } from './user' -import { useMembersStore } from './users' - -export const useResetStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('reset', { - actions: { - clearPinia() { - const backupStore = useBackupStore() - const categoryStore = useCategoryStore() - const companyStore = useCompanyStore() - const customFieldStore = useCustomFieldStore() - const customerStore = useCustomerStore() - const dashboardStore = useDashboardStore() - const dialogStore = useDialogStore() - const diskStore = useDiskStore() - const estimateStore = useEstimateStore() - const exchangeRateStore = useExchangeRateStore() - const expenseStore = useExpenseStore() - const globalStore = useGlobalStore() - const installationStore = useInstallationStore() - const invoiceStore = useInvoiceStore() - const itemStore = useItemStore() - const mailDriverStore = useMailDriverStore() - const modalStore = useModalStore() - const noteStore = useNotesStore() - const notificationStore = useNotificationStore() - const paymentStore = usePaymentStore() - const recurringInvoiceStore = useRecurringInvoiceStore() - const roleStore = useRoleStore() - const taxTypeStore = useTaxTypeStore() - const userStore = useUserStore() - const usersStore = useMembersStore() - - backupStore.$reset() - categoryStore.$reset() - companyStore.$reset() - customFieldStore.$reset() - customerStore.$reset() - dashboardStore.$reset() - dialogStore.$reset() - diskStore.$reset() - estimateStore.$reset() - exchangeRateStore.$reset() - expenseStore.$reset() - globalStore.$reset() - installationStore.$reset() - invoiceStore.$reset() - itemStore.$reset() - mailDriverStore.$reset() - modalStore.$reset() - noteStore.$reset() - notificationStore.$reset() - paymentStore.$reset() - recurringInvoiceStore.$reset() - roleStore.$reset() - taxTypeStore.$reset() - userStore.$reset() - usersStore.$reset() - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/role.js b/resources/scripts/admin/stores/role.js deleted file mode 100644 index 191daa5a..00000000 --- a/resources/scripts/admin/stores/role.js +++ /dev/null @@ -1,168 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useNotificationStore } from '@/scripts/stores/notification' -import _ from 'lodash' -import { handleError } from '@/scripts/helpers/error-handling' - -export const useRoleStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('role', { - state: () => ({ - roles: [], - allAbilities: [], - selectedRoles: [], - currentRole: { - id: null, - name: '', - abilities: [], - }, - }), - - getters: { - isEdit: (state) => (state.currentRole.id ? true : false), - abilitiesList: (state) => { - let abilities = state.allAbilities.map((a) => ({ - modelName: a.model - ? a.model.substring(a.model.lastIndexOf('\\') + 1) - : 'Common', - disabled: false, - ...a, - })) - return _.groupBy(abilities, 'modelName') - }, - }, - - actions: { - fetchRoles(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/roles`, { params }) - .then((response) => { - this.roles = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchRole(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/roles/${id}`) - .then((response) => { - this.currentRole.name = response.data.data.name - this.currentRole.id = response.data.data.id - - response.data.data.abilities.forEach((_ra) => { - for (const property in this.abilitiesList) { - this.abilitiesList[property].forEach((_p) => { - if (_p.ability === _ra.name) { - this.currentRole.abilities.push(_p) - } - }) - } - }) - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addRole(data) { - const notificationStore = useNotificationStore() - return new Promise((resolve, reject) => { - http - .post('/api/v1/roles', data) - .then((response) => { - this.roles.push(response.data.role) - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.roles.created_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateRole(data) { - const notificationStore = useNotificationStore() - return new Promise((resolve, reject) => { - http - .put(`/api/v1/roles/${data.id}`, data) - .then((response) => { - if (response.data) { - let pos = this.roles.findIndex( - (role) => role.id === response.data.data.id - ) - this.roles[pos] = data.role - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.roles.updated_message'), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchAbilities(params) { - return new Promise((resolve, reject) => { - if (this.allAbilities.length) { - resolve(this.allAbilities) - } else { - http - .get(`/api/v1/abilities`, { params }) - .then((response) => { - this.allAbilities = response.data.abilities - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - } - }) - }, - - deleteRole(id) { - const notificationStore = useNotificationStore() - return new Promise((resolve, reject) => { - http - .delete(`/api/v1/roles/${id}`) - .then((response) => { - let index = this.roles.findIndex((role) => role.id === id) - this.roles.splice(index, 1) - - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.roles.deleted_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/tax-type.js b/resources/scripts/admin/stores/tax-type.js deleted file mode 100644 index d1edb08b..00000000 --- a/resources/scripts/admin/stores/tax-type.js +++ /dev/null @@ -1,166 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useNotificationStore } from '@/scripts/stores/notification' -import { handleError } from '@/scripts/helpers/error-handling' - -export const useTaxTypeStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('taxType', { - state: () => ({ - taxTypes: [], - currentTaxType: { - id: null, - name: '', - calculation_type: 'percentage', - percent: 0, - fixed_amount: 0, - description: '', - compound_tax: false, - collective_tax: 0, - }, - }), - - getters: { - isEdit: (state) => (state.currentTaxType.id ? true : false), - }, - - actions: { - resetCurrentTaxType() { - this.currentTaxType = { - id: null, - name: '', - calculation_type: 'percentage', - percent: 0, - fixed_amount: 0, - description: '', - compound_tax: false, - collective_tax: 0, - } - }, - - fetchTaxTypes(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/tax-types`, { params }) - .then((response) => { - this.taxTypes = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchTaxType(id) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/tax-types/${id}`) - .then((response) => { - this.currentTaxType = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - addTaxType(data) { - const notificationStore = useNotificationStore() - return new Promise((resolve, reject) => { - http - .post('/api/v1/tax-types', data) - .then((response) => { - this.taxTypes.push(response.data.data) - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.tax_types.created_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateTaxType(data) { - const notificationStore = useNotificationStore() - return new Promise((resolve, reject) => { - http - .put(`/api/v1/tax-types/${data.id}`, data) - .then((response) => { - if (response.data) { - let pos = this.taxTypes.findIndex( - (taxTypes) => taxTypes.id === response.data.data.id - ) - this.taxTypes[pos] = data.taxTypes - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.tax_types.updated_message'), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchSalesTax(data) { - return new Promise((resolve, reject) => { - http - .post('/api/m/sales-tax-us/current-tax', data) - .then((response) => { - if (response.data) { - let pos = this.taxTypes.findIndex( - (_t) => _t.name === 'SalesTaxUs' - ) - pos > -1 ? this.taxTypes.splice(pos, 1) : '' - this.taxTypes.push({ ...response.data.data, tax_type_id: response.data.data.id }) - } - - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - deleteTaxType(id) { - return new Promise((resolve, reject) => { - http - .delete(`/api/v1/tax-types/${id}`) - .then((response) => { - if (response.data.success) { - let index = this.taxTypes.findIndex( - (taxType) => taxType.id === id - ) - this.taxTypes.splice(index, 1) - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.tax_types.deleted_message'), - }) - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - }, - })() -} diff --git a/resources/scripts/admin/stores/user.js b/resources/scripts/admin/stores/user.js deleted file mode 100644 index 84101f21..00000000 --- a/resources/scripts/admin/stores/user.js +++ /dev/null @@ -1,153 +0,0 @@ -import http from '@/scripts/http' -import { defineStore } from 'pinia' -import { useNotificationStore } from '@/scripts/stores/notification' -import { handleError } from '@/scripts/helpers/error-handling' - -export const useUserStore = (useWindow = false) => { - const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore - const { global } = window.i18n - - return defineStoreFunc('user', { - state: () => ({ - currentUser: null, - currentAbilities: [], - currentUserSettings: {}, - - userForm: { - name: '', - email: '', - password: '', - confirm_password: '', - language: '', - }, - }), - - getters: { - currentAbilitiesCount: (state) => state.currentAbilities.length, - }, - - actions: { - updateCurrentUser(data) { - return new Promise((resolve, reject) => { - http - .put('/api/v1/me', data) - .then((response) => { - this.currentUser = response.data.data - Object.assign(this.userForm, response.data.data) - const notificationStore = useNotificationStore() - notificationStore.showNotification({ - type: 'success', - message: global.t('settings.account_settings.updated_message'), - }) - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchCurrentUser(params) { - return new Promise((resolve, reject) => { - http - .get(`/api/v1/me`, params) - .then((response) => { - this.currentUser = response.data.data - this.userForm = response.data.data - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - uploadAvatar(data) { - return new Promise((resolve, reject) => { - http - .post('/api/v1/me/upload-avatar', data) - .then((response) => { - this.currentUser.avatar = response.data.data.avatar - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - fetchUserSettings(settings) { - return new Promise((resolve, reject) => { - http - .get('/api/v1/me/settings', { - params: { - settings, - }, - }) - .then((response) => { - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - updateUserSettings(data) { - return new Promise((resolve, reject) => { - http - .put('/api/v1/me/settings', data) - .then((response) => { - if (data.settings.language) { - this.currentUserSettings.language = data.settings.language - global.locale.value = data.settings.language - } - if (data.settings.default_estimate_template) { - this.currentUserSettings.default_estimate_template = - data.settings.default_estimate_template - } - if (data.settings.default_invoice_template) { - this.currentUserSettings.default_invoice_template = - data.settings.default_invoice_template - } - resolve(response) - }) - .catch((err) => { - handleError(err) - reject(err) - }) - }) - }, - - hasAbilities(abilities) { - return !!this.currentAbilities.find((ab) => { - if (ab.name === '*') return true - if (typeof abilities === 'string') { - return ab.name === abilities - } - return !!abilities.find((p) => { - return ab.name === p - }) - }) - }, - - hasAllAbilities(abilities) { - let isAvailable = true - this.currentAbilities.filter((ab) => { - let hasContain = !!abilities.find((p) => { - return ab.name === p - }) - if (!hasContain) { - isAvailable = false - } - }) - - return isAvailable - }, - }, - })() -} diff --git a/resources/scripts/admin/stub/abilities.js b/resources/scripts/admin/stub/abilities.js deleted file mode 100644 index 024e9992..00000000 --- a/resources/scripts/admin/stub/abilities.js +++ /dev/null @@ -1,79 +0,0 @@ -export default { - DASHBOARD: 'dashboard', - - // customers - CREATE_CUSTOMER: 'create-customer', - DELETE_CUSTOMER: 'delete-customer', - EDIT_CUSTOMER: 'edit-customer', - VIEW_CUSTOMER: 'view-customer', - - // Items - CREATE_ITEM: 'create-item', - DELETE_ITEM: 'delete-item', - EDIT_ITEM: 'edit-item', - VIEW_ITEM: 'view-item', - - // Tax Types - CREATE_TAX_TYPE: 'create-tax-type', - DELETE_TAX_TYPE: 'delete-tax-type', - EDIT_TAX_TYPE: 'edit-tax-type', - VIEW_TAX_TYPE: 'view-tax-type', - - // Estimates - CREATE_ESTIMATE: 'create-estimate', - DELETE_ESTIMATE: 'delete-estimate', - EDIT_ESTIMATE: 'edit-estimate', - VIEW_ESTIMATE: 'view-estimate', - SEND_ESTIMATE: 'send-estimate', - - // Invoices - CREATE_INVOICE: 'create-invoice', - DELETE_INVOICE: 'delete-invoice', - EDIT_INVOICE: 'edit-invoice', - VIEW_INVOICE: 'view-invoice', - SEND_INVOICE: 'send-invoice', - - // Recurring Invoices - CREATE_RECURRING_INVOICE: 'create-recurring-invoice', - DELETE_RECURRING_INVOICE: 'delete-recurring-invoice', - EDIT_RECURRING_INVOICE: 'edit-recurring-invoice', - VIEW_RECURRING_INVOICE: 'view-recurring-invoice', - - // Payment - CREATE_PAYMENT: 'create-payment', - DELETE_PAYMENT: 'delete-payment', - EDIT_PAYMENT: 'edit-payment', - VIEW_PAYMENT: 'view-payment', - SEND_PAYMENT: 'send-payment', - - // Payment - CREATE_EXPENSE: 'create-expense', - DELETE_EXPENSE: 'delete-expense', - EDIT_EXPENSE: 'edit-expense', - VIEW_EXPENSE: 'view-expense', - - // Custom fields - CREATE_CUSTOM_FIELDS: 'create-custom-field', - DELETE_CUSTOM_FIELDS: 'delete-custom-field', - EDIT_CUSTOM_FIELDS: 'edit-custom-field', - VIEW_CUSTOM_FIELDS: 'view-custom-field', - - // Roles - CREATE_ROLE: 'create-role', - DELETE_ROLE: 'delete-role', - EDIT_ROLE: 'edit-role', - VIEW_ROLE: 'view-role', - - // exchange rates - VIEW_EXCHANGE_RATE: 'view-exchange-rate-provider', - CREATE_EXCHANGE_RATE: 'create-exchange-rate-provider', - EDIT_EXCHANGE_RATE: 'edit-exchange-rate-provider', - DELETE_EXCHANGE_RATE: 'delete-exchange-rate-provider', - - // Reports - VIEW_FINANCIAL_REPORT: 'view-financial-reports', - - // settings - MANAGE_NOTE: 'manage-all-notes', - VIEW_NOTE: 'view-all-notes', -} diff --git a/resources/scripts/admin/stub/address.js b/resources/scripts/admin/stub/address.js deleted file mode 100644 index cb5f067f..00000000 --- a/resources/scripts/admin/stub/address.js +++ /dev/null @@ -1,11 +0,0 @@ -export default { - name: null, - phone: null, - address_street_1: null, - address_street_2: null, - city: null, - state: null, - country_id: null, - zip: null, - type: null, -} diff --git a/resources/scripts/admin/stub/custom-field.js b/resources/scripts/admin/stub/custom-field.js deleted file mode 100644 index af04dac3..00000000 --- a/resources/scripts/admin/stub/custom-field.js +++ /dev/null @@ -1,12 +0,0 @@ -export default { - id: null, - label: null, - type: null, - name: null, - default_answer: null, - is_required: false, - placeholder: null, - model_type: null, - order: 1, - options: [], -} diff --git a/resources/scripts/admin/stub/customer.js b/resources/scripts/admin/stub/customer.js deleted file mode 100644 index 55512add..00000000 --- a/resources/scripts/admin/stub/customer.js +++ /dev/null @@ -1,19 +0,0 @@ -import addressStub from '@/scripts/admin/stub/address.js' - -export default function () { - return { - name: '', - contact_name: '', - email: '', - phone: null, - password: '', - confirm_password:'', - currency_id: null, - website: null, - billing: { ...addressStub }, - shipping: { ...addressStub }, - customFields: [], - fields: [], - enable_portal: false, - } -} diff --git a/resources/scripts/admin/stub/estimate-item.js b/resources/scripts/admin/stub/estimate-item.js deleted file mode 100644 index 3cd1a3b4..00000000 --- a/resources/scripts/admin/stub/estimate-item.js +++ /dev/null @@ -1,19 +0,0 @@ -export default { - estimate_id: null, - item_id: null, - name: '', - title: '', - description: null, - quantity: 1, - price: 0, - discount_type: 'fixed', - discount_val: 0, - discount: 0, - total: 0, - sub_total: 0, - totalTax: 0, - totalSimpleTax: 0, - totalCompoundTax: 0, - tax: 0, - taxes: [], -} diff --git a/resources/scripts/admin/stub/estimate.js b/resources/scripts/admin/stub/estimate.js deleted file mode 100644 index f323cc3e..00000000 --- a/resources/scripts/admin/stub/estimate.js +++ /dev/null @@ -1,40 +0,0 @@ -import Guid from 'guid' -import estimateItemStub from './estimate-item' -import taxStub from './tax' - -export default function () { - return { - id: null, - customer: null, - template_name: '', - tax_per_item: null, - tax_included: false, - sales_tax_type: null, - sales_tax_address_type: null, - discount_per_item: null, - estimate_date: '', - expiry_date: '', - estimate_number: '', - customer_id: null, - sub_total: 0, - total: 0, - tax: 0, - notes: '', - discount_type: 'fixed', - discount_val: 0, - reference_number: null, - discount: 0, - items: [ - { - ...estimateItemStub, - id: Guid.raw(), - taxes: [{ ...taxStub, id: Guid.raw() }], - }, - ], - taxes: [], - customFields: [], - fields: [], - selectedNote: null, - selectedCurrency: '', - } -} diff --git a/resources/scripts/admin/stub/expense.js b/resources/scripts/admin/stub/expense.js deleted file mode 100644 index 49c6789e..00000000 --- a/resources/scripts/admin/stub/expense.js +++ /dev/null @@ -1,18 +0,0 @@ -import moment from 'moment' - -export default { - expense_category_id: null, - expense_date: moment().format('YYYY-MM-DD'), - expense_number: '', - amount: 100, - notes: '', - attachment_receipt: null, - customer_id: '', - currency_id: '', - payment_method_id: '', - receiptFiles: [], - customFields: [], - fields: [], - in_use: false, - selectedCurrency: null -} diff --git a/resources/scripts/admin/stub/invoice-item.js b/resources/scripts/admin/stub/invoice-item.js deleted file mode 100644 index fdb0ced0..00000000 --- a/resources/scripts/admin/stub/invoice-item.js +++ /dev/null @@ -1,18 +0,0 @@ -export default { - invoice_id: null, - item_id: null, - name: '', - title: '', - description: null, - quantity: 1, - price: 0, - discount_type: 'fixed', - discount_val: 0, - discount: 0, - total: 0, - totalTax: 0, - totalSimpleTax: 0, - totalCompoundTax: 0, - tax: 0, - taxes: [], -} diff --git a/resources/scripts/admin/stub/invoice.js b/resources/scripts/admin/stub/invoice.js deleted file mode 100644 index fdfb1989..00000000 --- a/resources/scripts/admin/stub/invoice.js +++ /dev/null @@ -1,40 +0,0 @@ -import Guid from 'guid' -import invoiceItemStub from './invoice-item' -import taxStub from './tax' - -export default function () { - return { - id: null, - invoice_number: '', - customer: null, - customer_id: null, - template_name: null, - invoice_date: '', - due_date: '', - notes: '', - discount: 0, - discount_type: 'fixed', - discount_val: 0, - reference_number: null, - tax: 0, - sub_total: 0, - total: 0, - tax_per_item: null, - tax_included: false, - sales_tax_type: null, - sales_tax_address_type: null, - discount_per_item: null, - taxes: [], - items: [ - { - ...invoiceItemStub, - id: Guid.raw(), - taxes: [{ ...taxStub, id: Guid.raw() }], - }, - ], - customFields: [], - fields: [], - selectedNote: null, - selectedCurrency: '', - } -} diff --git a/resources/scripts/admin/stub/payment.js b/resources/scripts/admin/stub/payment.js deleted file mode 100644 index ca044500..00000000 --- a/resources/scripts/admin/stub/payment.js +++ /dev/null @@ -1,15 +0,0 @@ -export default { - maxPayableAmount: Number.MAX_SAFE_INTEGER, - selectedCustomer: '', - currency: null, - currency_id: '', - customer_id: '', - payment_number: '', - payment_date: '', - amount: 0, - invoice_id: '', - notes: '', - payment_method_id: '', - customFields: [], - fields: [] -} diff --git a/resources/scripts/admin/stub/recurring-invoice-item.js b/resources/scripts/admin/stub/recurring-invoice-item.js deleted file mode 100644 index 78abb27f..00000000 --- a/resources/scripts/admin/stub/recurring-invoice-item.js +++ /dev/null @@ -1,20 +0,0 @@ -export default { - recurring_invoice_id: null, - item_id: null, - name: '', - title: '', - sales_tax_type: null, - sales_tax_address_type: null, - description: null, - quantity: 1, - price: 0, - discount_type: 'fixed', - discount_val: 0, - discount: 0, - total: 0, - totalTax: 0, - totalSimpleTax: 0, - totalCompoundTax: 0, - tax: 0, - taxes: [], -} diff --git a/resources/scripts/admin/stub/recurring-invoice.js b/resources/scripts/admin/stub/recurring-invoice.js deleted file mode 100644 index d2b6a361..00000000 --- a/resources/scripts/admin/stub/recurring-invoice.js +++ /dev/null @@ -1,50 +0,0 @@ -import Guid from 'guid' -import recurringInvoiceItemStub from './recurring-invoice-item' -import taxStub from './tax' -import { useI18n } from 'vue-i18n' - -export default function () { - const { t } = useI18n() - return { - currency: null, - customer: null, - - customer_id: null, - invoice_template_id: 1, - sub_total: 0, - total: 0, - tax: 0, - notes: '', - discount_type: 'fixed', - discount_val: 0, - discount: 0, - starts_at: null, - send_automatically: true, - status: 'ACTIVE', - company_id: null, - next_invoice_at: null, - next_invoice_date: null, - frequency: '0 0 * * 0', - limit_count: null, - limit_by: 'NONE', - limit_date: null, - exchange_rate: null, - tax_per_item: null, - discount_per_item: null, - template_name: null, - items: [ - { - ...recurringInvoiceItemStub, - id: Guid.raw(), - taxes: [{ ...taxStub, id: Guid.raw() }], - }, - ], - taxes: [], - customFields: [], - fields: [], - invoices: [], - selectedNote: null, - selectedFrequency: { label: t('recurring_invoices.frequency.every_week'), value: '0 0 * * 0' }, - selectedInvoice: null, - } -} diff --git a/resources/scripts/admin/stub/tax.js b/resources/scripts/admin/stub/tax.js deleted file mode 100644 index 1c37a189..00000000 --- a/resources/scripts/admin/stub/tax.js +++ /dev/null @@ -1,8 +0,0 @@ -export default { - name: '', - tax_type_id: 0, - type: 'GENERAL', - amount: null, - percent: null, - compound_tax: false, -} diff --git a/resources/scripts/admin/views/NoCompanyView.vue b/resources/scripts/admin/views/NoCompanyView.vue deleted file mode 100644 index 9dfb2aed..00000000 --- a/resources/scripts/admin/views/NoCompanyView.vue +++ /dev/null @@ -1,84 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/SampleTable.vue b/resources/scripts/admin/views/SampleTable.vue deleted file mode 100644 index 60c031ad..00000000 --- a/resources/scripts/admin/views/SampleTable.vue +++ /dev/null @@ -1,175 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/administration/AdminDashboard.vue b/resources/scripts/admin/views/administration/AdminDashboard.vue deleted file mode 100644 index 1841be54..00000000 --- a/resources/scripts/admin/views/administration/AdminDashboard.vue +++ /dev/null @@ -1,104 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/administration/companies/Edit.vue b/resources/scripts/admin/views/administration/companies/Edit.vue deleted file mode 100644 index 9b1f726e..00000000 --- a/resources/scripts/admin/views/administration/companies/Edit.vue +++ /dev/null @@ -1,255 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/administration/companies/Index.vue b/resources/scripts/admin/views/administration/companies/Index.vue deleted file mode 100644 index 78de8150..00000000 --- a/resources/scripts/admin/views/administration/companies/Index.vue +++ /dev/null @@ -1,188 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/administration/settings/SettingsIndex.vue b/resources/scripts/admin/views/administration/settings/SettingsIndex.vue deleted file mode 100644 index 945349f3..00000000 --- a/resources/scripts/admin/views/administration/settings/SettingsIndex.vue +++ /dev/null @@ -1,113 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/administration/users/Edit.vue b/resources/scripts/admin/views/administration/users/Edit.vue deleted file mode 100644 index 2750255b..00000000 --- a/resources/scripts/admin/views/administration/users/Edit.vue +++ /dev/null @@ -1,181 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/administration/users/Index.vue b/resources/scripts/admin/views/administration/users/Index.vue deleted file mode 100644 index 878c1b7e..00000000 --- a/resources/scripts/admin/views/administration/users/Index.vue +++ /dev/null @@ -1,252 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/auth/ForgotPassword.vue b/resources/scripts/admin/views/auth/ForgotPassword.vue deleted file mode 100644 index 9ddc54b1..00000000 --- a/resources/scripts/admin/views/auth/ForgotPassword.vue +++ /dev/null @@ -1,92 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/auth/Login.vue b/resources/scripts/admin/views/auth/Login.vue deleted file mode 100644 index d1c40a4a..00000000 --- a/resources/scripts/admin/views/auth/Login.vue +++ /dev/null @@ -1,129 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/auth/RegisterWithInvitation.vue b/resources/scripts/admin/views/auth/RegisterWithInvitation.vue deleted file mode 100644 index 15326fbd..00000000 --- a/resources/scripts/admin/views/auth/RegisterWithInvitation.vue +++ /dev/null @@ -1,213 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/auth/ResetPassword.vue b/resources/scripts/admin/views/auth/ResetPassword.vue deleted file mode 100644 index d23e55ce..00000000 --- a/resources/scripts/admin/views/auth/ResetPassword.vue +++ /dev/null @@ -1,165 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/customers/Create.vue b/resources/scripts/admin/views/customers/Create.vue deleted file mode 100644 index 8f4b06e5..00000000 --- a/resources/scripts/admin/views/customers/Create.vue +++ /dev/null @@ -1,757 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/customers/Index.vue b/resources/scripts/admin/views/customers/Index.vue deleted file mode 100644 index 902ef71e..00000000 --- a/resources/scripts/admin/views/customers/Index.vue +++ /dev/null @@ -1,366 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/customers/View.vue b/resources/scripts/admin/views/customers/View.vue deleted file mode 100644 index e9a935fb..00000000 --- a/resources/scripts/admin/views/customers/View.vue +++ /dev/null @@ -1,144 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/customers/partials/CustomerChart.vue b/resources/scripts/admin/views/customers/partials/CustomerChart.vue deleted file mode 100644 index dbbede03..00000000 --- a/resources/scripts/admin/views/customers/partials/CustomerChart.vue +++ /dev/null @@ -1,224 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/customers/partials/CustomerChartPlaceholder.vue b/resources/scripts/admin/views/customers/partials/CustomerChartPlaceholder.vue deleted file mode 100644 index 29c73166..00000000 --- a/resources/scripts/admin/views/customers/partials/CustomerChartPlaceholder.vue +++ /dev/null @@ -1,79 +0,0 @@ - diff --git a/resources/scripts/admin/views/customers/partials/CustomerInfo.vue b/resources/scripts/admin/views/customers/partials/CustomerInfo.vue deleted file mode 100644 index 5a294096..00000000 --- a/resources/scripts/admin/views/customers/partials/CustomerInfo.vue +++ /dev/null @@ -1,124 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/customers/partials/CustomerViewSidebar.vue b/resources/scripts/admin/views/customers/partials/CustomerViewSidebar.vue deleted file mode 100644 index 84cbc913..00000000 --- a/resources/scripts/admin/views/customers/partials/CustomerViewSidebar.vue +++ /dev/null @@ -1,327 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/dashboard/Dashboard.vue b/resources/scripts/admin/views/dashboard/Dashboard.vue deleted file mode 100644 index 649b388c..00000000 --- a/resources/scripts/admin/views/dashboard/Dashboard.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/dashboard/DashboardChart.vue b/resources/scripts/admin/views/dashboard/DashboardChart.vue deleted file mode 100644 index d30159b8..00000000 --- a/resources/scripts/admin/views/dashboard/DashboardChart.vue +++ /dev/null @@ -1,189 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/dashboard/DashboardChartPlaceholder.vue b/resources/scripts/admin/views/dashboard/DashboardChartPlaceholder.vue deleted file mode 100644 index 04e4fd73..00000000 --- a/resources/scripts/admin/views/dashboard/DashboardChartPlaceholder.vue +++ /dev/null @@ -1,88 +0,0 @@ - diff --git a/resources/scripts/admin/views/dashboard/DashboardStats.vue b/resources/scripts/admin/views/dashboard/DashboardStats.vue deleted file mode 100644 index 6c392c35..00000000 --- a/resources/scripts/admin/views/dashboard/DashboardStats.vue +++ /dev/null @@ -1,71 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/dashboard/DashboardStatsItem.vue b/resources/scripts/admin/views/dashboard/DashboardStatsItem.vue deleted file mode 100644 index 89da715d..00000000 --- a/resources/scripts/admin/views/dashboard/DashboardStatsItem.vue +++ /dev/null @@ -1,66 +0,0 @@ - - - - diff --git a/resources/scripts/admin/views/dashboard/DashboardStatsPlaceholder.vue b/resources/scripts/admin/views/dashboard/DashboardStatsPlaceholder.vue deleted file mode 100644 index e5a99893..00000000 --- a/resources/scripts/admin/views/dashboard/DashboardStatsPlaceholder.vue +++ /dev/null @@ -1,20 +0,0 @@ - diff --git a/resources/scripts/admin/views/dashboard/DashboardStatsSmPlaceholder.vue b/resources/scripts/admin/views/dashboard/DashboardStatsSmPlaceholder.vue deleted file mode 100644 index 9a7ee56c..00000000 --- a/resources/scripts/admin/views/dashboard/DashboardStatsSmPlaceholder.vue +++ /dev/null @@ -1,31 +0,0 @@ - diff --git a/resources/scripts/admin/views/dashboard/DashboardTable.vue b/resources/scripts/admin/views/dashboard/DashboardTable.vue deleted file mode 100644 index 5a95a4a4..00000000 --- a/resources/scripts/admin/views/dashboard/DashboardTable.vue +++ /dev/null @@ -1,186 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/errors/404.vue b/resources/scripts/admin/views/errors/404.vue deleted file mode 100644 index 2137c657..00000000 --- a/resources/scripts/admin/views/errors/404.vue +++ /dev/null @@ -1,64 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/estimates/Index.vue b/resources/scripts/admin/views/estimates/Index.vue deleted file mode 100644 index daa9e9a5..00000000 --- a/resources/scripts/admin/views/estimates/Index.vue +++ /dev/null @@ -1,492 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/estimates/View.vue b/resources/scripts/admin/views/estimates/View.vue deleted file mode 100644 index c99a6381..00000000 --- a/resources/scripts/admin/views/estimates/View.vue +++ /dev/null @@ -1,539 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/modules/partials/ModuleCard.vue b/resources/scripts/admin/views/modules/partials/ModuleCard.vue deleted file mode 100644 index d4134e15..00000000 --- a/resources/scripts/admin/views/modules/partials/ModuleCard.vue +++ /dev/null @@ -1,139 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/modules/partials/ModuleCardPlaceholder.vue b/resources/scripts/admin/views/modules/partials/ModuleCardPlaceholder.vue deleted file mode 100644 index e500594e..00000000 --- a/resources/scripts/admin/views/modules/partials/ModuleCardPlaceholder.vue +++ /dev/null @@ -1,49 +0,0 @@ - \ No newline at end of file diff --git a/resources/scripts/admin/views/modules/partials/ModulePlaceholder.vue b/resources/scripts/admin/views/modules/partials/ModulePlaceholder.vue deleted file mode 100644 index 7bf138ea..00000000 --- a/resources/scripts/admin/views/modules/partials/ModulePlaceholder.vue +++ /dev/null @@ -1,104 +0,0 @@ - diff --git a/resources/scripts/admin/views/modules/partials/RecentModuleCard.vue b/resources/scripts/admin/views/modules/partials/RecentModuleCard.vue deleted file mode 100644 index dcd88651..00000000 --- a/resources/scripts/admin/views/modules/partials/RecentModuleCard.vue +++ /dev/null @@ -1,63 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/payments/Create.vue b/resources/scripts/admin/views/payments/Create.vue deleted file mode 100644 index 55c4de15..00000000 --- a/resources/scripts/admin/views/payments/Create.vue +++ /dev/null @@ -1,531 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/payments/Index.vue b/resources/scripts/admin/views/payments/Index.vue deleted file mode 100644 index 2006ab1a..00000000 --- a/resources/scripts/admin/views/payments/Index.vue +++ /dev/null @@ -1,380 +0,0 @@ - - - diff --git a/resources/scripts/admin/views/payments/View.vue b/resources/scripts/admin/views/payments/View.vue deleted file mode 100644 index 34313d99..00000000 --- a/resources/scripts/admin/views/payments/View.vue +++ /dev/null @@ -1,459 +0,0 @@ -