gitextract_t1weeugo/ ├── .dockerignore ├── .editorconfig ├── .eslintrc.js ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ └── workflows/ │ ├── ci.yaml │ ├── uffizzi-build.yml │ └── uffizzi-preview.yml ├── .gitignore ├── .php-cs-fixer.dist.php ├── .prettierrc.json ├── CODE_OF_CONDUCT.md ├── Dockerfile ├── LICENSE ├── SECURITY.md ├── _ide_helper.php ├── app/ │ ├── Console/ │ │ ├── Commands/ │ │ │ ├── CheckEstimateStatus.php │ │ │ ├── CheckInvoiceStatus.php │ │ │ ├── CreateTemplateCommand.php │ │ │ ├── InstallModuleCommand.php │ │ │ ├── ResetApp.php │ │ │ └── UpdateCommand.php │ │ └── Kernel.php │ ├── Events/ │ │ ├── ModuleDisabledEvent.php │ │ ├── ModuleEnabledEvent.php │ │ ├── ModuleInstalledEvent.php │ │ └── UpdateFinished.php │ ├── Exceptions/ │ │ └── Handler.php │ ├── Generators/ │ │ └── CustomPathGenerator.php │ ├── Http/ │ │ ├── Controllers/ │ │ │ ├── AppVersionController.php │ │ │ ├── Controller.php │ │ │ └── V1/ │ │ │ ├── Admin/ │ │ │ │ ├── Auth/ │ │ │ │ │ ├── ConfirmPasswordController.php │ │ │ │ │ ├── ForgotPasswordController.php │ │ │ │ │ ├── LoginController.php │ │ │ │ │ ├── RegisterController.php │ │ │ │ │ ├── ResetPasswordController.php │ │ │ │ │ └── VerificationController.php │ │ │ │ ├── Backup/ │ │ │ │ │ ├── ApiController.php │ │ │ │ │ ├── BackupsController.php │ │ │ │ │ └── DownloadBackupController.php │ │ │ │ ├── Company/ │ │ │ │ │ ├── CompaniesController.php │ │ │ │ │ └── CompanyController.php │ │ │ │ ├── Config/ │ │ │ │ │ ├── FiscalYearsController.php │ │ │ │ │ ├── LanguagesController.php │ │ │ │ │ └── RetrospectiveEditsController.php │ │ │ │ ├── CustomField/ │ │ │ │ │ └── CustomFieldsController.php │ │ │ │ ├── Customer/ │ │ │ │ │ ├── CustomerStatsController.php │ │ │ │ │ └── CustomersController.php │ │ │ │ ├── Dashboard/ │ │ │ │ │ └── DashboardController.php │ │ │ │ ├── Estimate/ │ │ │ │ │ ├── ChangeEstimateStatusController.php │ │ │ │ │ ├── ConvertEstimateController.php │ │ │ │ │ ├── EstimateTemplatesController.php │ │ │ │ │ ├── EstimatesController.php │ │ │ │ │ ├── SendEstimateController.php │ │ │ │ │ └── SendEstimatePreviewController.php │ │ │ │ ├── ExchangeRate/ │ │ │ │ │ ├── ExchangeRateProviderController.php │ │ │ │ │ ├── GetActiveProviderController.php │ │ │ │ │ ├── GetExchangeRateController.php │ │ │ │ │ ├── GetSupportedCurrenciesController.php │ │ │ │ │ └── GetUsedCurrenciesController.php │ │ │ │ ├── Expense/ │ │ │ │ │ ├── ExpenseCategoriesController.php │ │ │ │ │ ├── ExpensesController.php │ │ │ │ │ ├── ShowReceiptController.php │ │ │ │ │ └── UploadReceiptController.php │ │ │ │ ├── General/ │ │ │ │ │ ├── BootstrapController.php │ │ │ │ │ ├── BulkExchangeRateController.php │ │ │ │ │ ├── ConfigController.php │ │ │ │ │ ├── CountriesController.php │ │ │ │ │ ├── CurrenciesController.php │ │ │ │ │ ├── DateFormatsController.php │ │ │ │ │ ├── GetAllUsedCurrenciesController.php │ │ │ │ │ ├── NextNumberController.php │ │ │ │ │ ├── NotesController.php │ │ │ │ │ ├── NumberPlaceholdersController.php │ │ │ │ │ ├── SearchController.php │ │ │ │ │ ├── SearchUsersController.php │ │ │ │ │ └── TimezonesController.php │ │ │ │ ├── Invoice/ │ │ │ │ │ ├── ChangeInvoiceStatusController.php │ │ │ │ │ ├── CloneInvoiceController.php │ │ │ │ │ ├── InvoiceTemplatesController.php │ │ │ │ │ ├── InvoicesController.php │ │ │ │ │ ├── SendInvoiceController.php │ │ │ │ │ └── SendInvoicePreviewController.php │ │ │ │ ├── Item/ │ │ │ │ │ ├── ItemsController.php │ │ │ │ │ └── UnitsController.php │ │ │ │ ├── Mobile/ │ │ │ │ │ └── AuthController.php │ │ │ │ ├── Modules/ │ │ │ │ │ ├── ApiTokenController.php │ │ │ │ │ ├── CompleteModuleInstallationController.php │ │ │ │ │ ├── CopyModuleController.php │ │ │ │ │ ├── DisableModuleController.php │ │ │ │ │ ├── DownloadModuleController.php │ │ │ │ │ ├── EnableModuleController.php │ │ │ │ │ ├── ModuleController.php │ │ │ │ │ ├── ModulesController.php │ │ │ │ │ ├── UnzipModuleController.php │ │ │ │ │ └── UploadModuleController.php │ │ │ │ ├── Payment/ │ │ │ │ │ ├── PaymentMethodsController.php │ │ │ │ │ ├── PaymentsController.php │ │ │ │ │ ├── SendPaymentController.php │ │ │ │ │ └── SendPaymentPreviewController.php │ │ │ │ ├── RecurringInvoice/ │ │ │ │ │ ├── RecurringInvoiceController.php │ │ │ │ │ └── RecurringInvoiceFrequencyController.php │ │ │ │ ├── Report/ │ │ │ │ │ ├── CustomerSalesReportController.php │ │ │ │ │ ├── ExpensesReportController.php │ │ │ │ │ ├── ItemSalesReportController.php │ │ │ │ │ ├── ProfitLossReportController.php │ │ │ │ │ └── TaxSummaryReportController.php │ │ │ │ ├── Role/ │ │ │ │ │ ├── AbilitiesController.php │ │ │ │ │ └── RolesController.php │ │ │ │ ├── Settings/ │ │ │ │ │ ├── CompanyController.php │ │ │ │ │ ├── CompanyCurrencyCheckTransactionsController.php │ │ │ │ │ ├── DiskController.php │ │ │ │ │ ├── GetCompanyMailConfigurationController.php │ │ │ │ │ ├── GetCompanySettingsController.php │ │ │ │ │ ├── GetSettingsController.php │ │ │ │ │ ├── GetUserSettingsController.php │ │ │ │ │ ├── MailConfigurationController.php │ │ │ │ │ ├── TaxTypesController.php │ │ │ │ │ ├── UpdateCompanySettingsController.php │ │ │ │ │ ├── UpdateSettingsController.php │ │ │ │ │ └── UpdateUserSettingsController.php │ │ │ │ ├── Update/ │ │ │ │ │ ├── CheckVersionController.php │ │ │ │ │ ├── CopyFilesController.php │ │ │ │ │ ├── DeleteFilesController.php │ │ │ │ │ ├── DownloadUpdateController.php │ │ │ │ │ ├── FinishUpdateController.php │ │ │ │ │ ├── MigrateUpdateController.php │ │ │ │ │ ├── UnzipUpdateController.php │ │ │ │ │ └── UpdateController.php │ │ │ │ └── Users/ │ │ │ │ └── UsersController.php │ │ │ ├── Customer/ │ │ │ │ ├── Auth/ │ │ │ │ │ ├── ForgotPasswordController.php │ │ │ │ │ ├── LoginController.php │ │ │ │ │ └── ResetPasswordController.php │ │ │ │ ├── Estimate/ │ │ │ │ │ ├── AcceptEstimateController.php │ │ │ │ │ └── EstimatesController.php │ │ │ │ ├── EstimatePdfController.php │ │ │ │ ├── Expense/ │ │ │ │ │ └── ExpensesController.php │ │ │ │ ├── General/ │ │ │ │ │ ├── BootstrapController.php │ │ │ │ │ ├── DashboardController.php │ │ │ │ │ └── ProfileController.php │ │ │ │ ├── Invoice/ │ │ │ │ │ └── InvoicesController.php │ │ │ │ ├── InvoicePdfController.php │ │ │ │ ├── Payment/ │ │ │ │ │ ├── PaymentMethodController.php │ │ │ │ │ └── PaymentsController.php │ │ │ │ └── PaymentPdfController.php │ │ │ ├── Installation/ │ │ │ │ ├── AppDomainController.php │ │ │ │ ├── DatabaseConfigurationController.php │ │ │ │ ├── FilePermissionsController.php │ │ │ │ ├── FinishController.php │ │ │ │ ├── LoginController.php │ │ │ │ ├── OnboardingWizardController.php │ │ │ │ └── RequirementsController.php │ │ │ ├── Modules/ │ │ │ │ ├── ScriptController.php │ │ │ │ └── StyleController.php │ │ │ ├── PDF/ │ │ │ │ ├── DownloadInvoicePdfController.php │ │ │ │ ├── DownloadPaymentPdfController.php │ │ │ │ ├── DownloadReceiptController.php │ │ │ │ ├── EstimatePdfController.php │ │ │ │ ├── InvoicePdfController.php │ │ │ │ └── PaymentPdfController.php │ │ │ └── Webhook/ │ │ │ └── CronJobController.php │ │ ├── Kernel.php │ │ ├── Middleware/ │ │ │ ├── AdminMiddleware.php │ │ │ ├── Authenticate.php │ │ │ ├── CompanyMiddleware.php │ │ │ ├── ConfigMiddleware.php │ │ │ ├── CronJobMiddleware.php │ │ │ ├── CustomerPortalMiddleware.php │ │ │ ├── EncryptCookies.php │ │ │ ├── InstallationMiddleware.php │ │ │ ├── PdfMiddleware.php │ │ │ ├── RedirectIfAuthenticated.php │ │ │ ├── RedirectIfInstalled.php │ │ │ ├── RedirectIfUnauthorized.php │ │ │ ├── ScopeBouncer.php │ │ │ ├── TrimStrings.php │ │ │ ├── TrustProxies.php │ │ │ └── VerifyCsrfToken.php │ │ ├── Requests/ │ │ │ ├── AvatarRequest.php │ │ │ ├── BulkExchangeRateRequest.php │ │ │ ├── CompaniesRequest.php │ │ │ ├── CompanyLogoRequest.php │ │ │ ├── CompanyRequest.php │ │ │ ├── CompanySettingRequest.php │ │ │ ├── CustomFieldRequest.php │ │ │ ├── Customer/ │ │ │ │ ├── CustomerLoginRequest.php │ │ │ │ └── CustomerProfileRequest.php │ │ │ ├── CustomerEstimateStatusRequest.php │ │ │ ├── CustomerRequest.php │ │ │ ├── DatabaseEnvironmentRequest.php │ │ │ ├── DeleteCustomersRequest.php │ │ │ ├── DeleteEstimatesRequest.php │ │ │ ├── DeleteExpensesRequest.php │ │ │ ├── DeleteInvoiceRequest.php │ │ │ ├── DeleteItemsRequest.php │ │ │ ├── DeletePaymentsRequest.php │ │ │ ├── DeleteUserRequest.php │ │ │ ├── DiskEnvironmentRequest.php │ │ │ ├── DomainEnvironmentRequest.php │ │ │ ├── EstimatesRequest.php │ │ │ ├── ExchangeRateLogRequest.php │ │ │ ├── ExchangeRateProviderRequest.php │ │ │ ├── ExpenseCategoryRequest.php │ │ │ ├── ExpenseRequest.php │ │ │ ├── GetSettingRequest.php │ │ │ ├── GetSettingsRequest.php │ │ │ ├── InvoicesRequest.php │ │ │ ├── ItemsRequest.php │ │ │ ├── LoginRequest.php │ │ │ ├── MailEnvironmentRequest.php │ │ │ ├── NotesRequest.php │ │ │ ├── PaymentMethodRequest.php │ │ │ ├── PaymentRequest.php │ │ │ ├── ProfileRequest.php │ │ │ ├── RecurringInvoiceRequest.php │ │ │ ├── Request.php │ │ │ ├── RoleRequest.php │ │ │ ├── SendEstimatesRequest.php │ │ │ ├── SendInvoiceRequest.php │ │ │ ├── SendPaymentRequest.php │ │ │ ├── SettingKeyRequest.php │ │ │ ├── SettingRequest.php │ │ │ ├── TaxTypeRequest.php │ │ │ ├── UnitRequest.php │ │ │ ├── UnzipUpdateRequest.php │ │ │ ├── UpdateSettingsRequest.php │ │ │ ├── UploadExpenseReceiptRequest.php │ │ │ ├── UploadModuleRequest.php │ │ │ └── UserRequest.php │ │ └── Resources/ │ │ ├── AbilityCollection.php │ │ ├── AbilityResource.php │ │ ├── AddressCollection.php │ │ ├── AddressResource.php │ │ ├── CompanyCollection.php │ │ ├── CompanyResource.php │ │ ├── CountryCollection.php │ │ ├── CountryResource.php │ │ ├── CurrencyCollection.php │ │ ├── CurrencyResource.php │ │ ├── CustomFieldCollection.php │ │ ├── CustomFieldResource.php │ │ ├── CustomFieldValueCollection.php │ │ ├── CustomFieldValueResource.php │ │ ├── Customer/ │ │ │ ├── AddressCollection.php │ │ │ ├── AddressResource.php │ │ │ ├── CompanyResource.php │ │ │ ├── CountryCollection.php │ │ │ ├── CountryResource.php │ │ │ ├── CurrencyCollection.php │ │ │ ├── CurrencyResource.php │ │ │ ├── CustomFieldCollection.php │ │ │ ├── CustomFieldResource.php │ │ │ ├── CustomFieldValueCollection.php │ │ │ ├── CustomFieldValueResource.php │ │ │ ├── CustomerCollection.php │ │ │ ├── CustomerResource.php │ │ │ ├── EstimateCollection.php │ │ │ ├── EstimateItemCollection.php │ │ │ ├── EstimateItemResource.php │ │ │ ├── EstimateResource.php │ │ │ ├── ExpenseCategoryCollection.php │ │ │ ├── ExpenseCategoryResource.php │ │ │ ├── ExpenseCollection.php │ │ │ ├── ExpenseResource.php │ │ │ ├── InvoiceCollection.php │ │ │ ├── InvoiceItemCollection.php │ │ │ ├── InvoiceItemResource.php │ │ │ ├── InvoiceResource.php │ │ │ ├── ItemCollection.php │ │ │ ├── PaymentCollection.php │ │ │ ├── PaymentMethodCollection.php │ │ │ ├── PaymentMethodResource.php │ │ │ ├── PaymentResource.php │ │ │ ├── RecurringInvoiceCollection.php │ │ │ ├── RecurringInvoiceResource.php │ │ │ ├── TaxCollection.php │ │ │ ├── TaxResource.php │ │ │ ├── TaxTypeCollection.php │ │ │ ├── TaxTypeResource.php │ │ │ ├── TransactionCollection.php │ │ │ ├── TransactionResource.php │ │ │ ├── UserCollection.php │ │ │ └── UserResource.php │ │ ├── CustomerCollection.php │ │ ├── CustomerResource.php │ │ ├── EstimateCollection.php │ │ ├── EstimateItemCollection.php │ │ ├── EstimateItemResource.php │ │ ├── EstimateResource.php │ │ ├── ExchangeRateLogCollection.php │ │ ├── ExchangeRateLogResource.php │ │ ├── ExchangeRateProviderCollection.php │ │ ├── ExchangeRateProviderResource.php │ │ ├── ExpenseCategoryCollection.php │ │ ├── ExpenseCategoryResource.php │ │ ├── ExpenseCollection.php │ │ ├── ExpenseResource.php │ │ ├── FileDiskCollection.php │ │ ├── FileDiskResource.php │ │ ├── InvoiceCollection.php │ │ ├── InvoiceItemCollection.php │ │ ├── InvoiceItemResource.php │ │ ├── InvoiceResource.php │ │ ├── ItemCollection.php │ │ ├── ItemResource.php │ │ ├── ModuleCollection.php │ │ ├── ModuleResource.php │ │ ├── NoteCollection.php │ │ ├── NoteResource.php │ │ ├── PaymentCollection.php │ │ ├── PaymentMethodCollection.php │ │ ├── PaymentMethodResource.php │ │ ├── PaymentResource.php │ │ ├── RecurringInvoiceCollection.php │ │ ├── RecurringInvoiceResource.php │ │ ├── RoleCollection.php │ │ ├── RoleResource.php │ │ ├── TaxCollection.php │ │ ├── TaxResource.php │ │ ├── TaxTypeCollection.php │ │ ├── TaxTypeResource.php │ │ ├── TransactionCollection.php │ │ ├── TransactionResource.php │ │ ├── UnitCollection.php │ │ ├── UnitResource.php │ │ ├── UserCollection.php │ │ └── UserResource.php │ ├── Jobs/ │ │ ├── CreateBackupJob.php │ │ ├── GenerateEstimatePdfJob.php │ │ ├── GenerateInvoicePdfJob.php │ │ └── GeneratePaymentPdfJob.php │ ├── Listeners/ │ │ └── Updates/ │ │ ├── Listener.php │ │ ├── v1/ │ │ │ └── Version110.php │ │ ├── v2/ │ │ │ ├── Version200.php │ │ │ ├── Version201.php │ │ │ ├── Version202.php │ │ │ └── Version210.php │ │ └── v3/ │ │ ├── Version300.php │ │ ├── Version310.php │ │ └── Version311.php │ ├── Mail/ │ │ ├── EstimateViewedMail.php │ │ ├── InvoiceViewedMail.php │ │ ├── SendEstimateMail.php │ │ ├── SendInvoiceMail.php │ │ ├── SendPaymentMail.php │ │ └── TestMail.php │ ├── Models/ │ │ ├── Address.php │ │ ├── Company.php │ │ ├── CompanySetting.php │ │ ├── Country.php │ │ ├── Currency.php │ │ ├── CustomField.php │ │ ├── CustomFieldValue.php │ │ ├── Customer.php │ │ ├── EmailLog.php │ │ ├── Estimate.php │ │ ├── EstimateItem.php │ │ ├── ExchangeRateLog.php │ │ ├── ExchangeRateProvider.php │ │ ├── Expense.php │ │ ├── ExpenseCategory.php │ │ ├── FileDisk.php │ │ ├── Invoice.php │ │ ├── InvoiceItem.php │ │ ├── Item.php │ │ ├── Module.php │ │ ├── Note.php │ │ ├── Payment.php │ │ ├── PaymentMethod.php │ │ ├── RecurringInvoice.php │ │ ├── Setting.php │ │ ├── Tax.php │ │ ├── TaxType.php │ │ ├── Transaction.php │ │ ├── Unit.php │ │ ├── User.php │ │ └── UserSetting.php │ ├── Notifications/ │ │ ├── CustomerMailResetPasswordNotification.php │ │ └── MailResetPasswordNotification.php │ ├── Policies/ │ │ ├── CompanyPolicy.php │ │ ├── CustomFieldPolicy.php │ │ ├── CustomerPolicy.php │ │ ├── DashboardPolicy.php │ │ ├── EstimatePolicy.php │ │ ├── ExchangeRateProviderPolicy.php │ │ ├── ExpenseCategoryPolicy.php │ │ ├── ExpensePolicy.php │ │ ├── InvoicePolicy.php │ │ ├── ItemPolicy.php │ │ ├── ModulesPolicy.php │ │ ├── NotePolicy.php │ │ ├── OwnerPolicy.php │ │ ├── PaymentMethodPolicy.php │ │ ├── PaymentPolicy.php │ │ ├── RecurringInvoicePolicy.php │ │ ├── ReportPolicy.php │ │ ├── RolePolicy.php │ │ ├── SettingsPolicy.php │ │ ├── TaxTypePolicy.php │ │ ├── UnitPolicy.php │ │ └── UserPolicy.php │ ├── Providers/ │ │ ├── AppServiceProvider.php │ │ ├── AuthServiceProvider.php │ │ ├── BroadcastServiceProvider.php │ │ ├── DropboxServiceProvider.php │ │ ├── EventServiceProvider.php │ │ ├── RouteServiceProvider.php │ │ └── ViewServiceProvider.php │ ├── Rules/ │ │ ├── Backup/ │ │ │ ├── BackupDisk.php │ │ │ ├── FilesystemDisks.php │ │ │ └── PathToZip.php │ │ ├── Base64Mime.php │ │ └── RelationNotExist.php │ ├── Services/ │ │ ├── Module/ │ │ │ ├── Module.php │ │ │ └── ModuleFacade.php │ │ └── SerialNumberFormatter.php │ ├── Space/ │ │ ├── DateFormatter.php │ │ ├── EnvironmentManager.php │ │ ├── FilePermissionChecker.php │ │ ├── ModuleInstaller.php │ │ ├── RequirementsChecker.php │ │ ├── SiteApi.php │ │ ├── TimeZones.php │ │ ├── Updater.php │ │ └── helpers.php │ └── Traits/ │ ├── ExchangeRateProvidersTrait.php │ ├── GeneratesMenuTrait.php │ ├── GeneratesPdfTrait.php │ └── HasCustomFieldsTrait.php ├── artisan ├── bootstrap/ │ ├── app.php │ └── cache/ │ └── .gitignore ├── composer.json ├── config/ │ ├── abilities.php │ ├── app.php │ ├── auth.php │ ├── backup.php │ ├── broadcasting.php │ ├── cache.php │ ├── compile.php │ ├── cors.php │ ├── crater.php │ ├── database.php │ ├── dompdf.php │ ├── filesystems.php │ ├── hashids.php │ ├── hashing.php │ ├── image.php │ ├── installer.php │ ├── logging.php │ ├── mail.php │ ├── media-library.php │ ├── modules.php │ ├── queue.php │ ├── sanctum.php │ ├── services.php │ ├── session.php │ ├── trustedproxy.php │ ├── view.php │ └── vite.php ├── crater.code-workspace ├── crowdin.yml ├── database/ │ ├── .gitignore │ ├── factories/ │ │ ├── AddressFactory.php │ │ ├── CompanyFactory.php │ │ ├── CompanySettingFactory.php │ │ ├── CustomFieldFactory.php │ │ ├── CustomFieldValueFactory.php │ │ ├── CustomerFactory.php │ │ ├── EmailLogFactory.php │ │ ├── EstimateFactory.php │ │ ├── EstimateItemFactory.php │ │ ├── ExchangeRateLogFactory.php │ │ ├── ExchangeRateProviderFactory.php │ │ ├── ExpenseCategoryFactory.php │ │ ├── ExpenseFactory.php │ │ ├── FileDiskFactory.php │ │ ├── InvoiceFactory.php │ │ ├── InvoiceItemFactory.php │ │ ├── ItemFactory.php │ │ ├── NoteFactory.php │ │ ├── PaymentFactory.php │ │ ├── PaymentMethodFactory.php │ │ ├── RecurringInvoiceFactory.php │ │ ├── TaxFactory.php │ │ ├── TaxTypeFactory.php │ │ ├── UnitFactory.php │ │ └── UserFactory.php │ ├── migrations/ │ │ ├── 2014_10_11_071840_create_companies_table.php │ │ ├── 2014_10_11_125754_create_currencies_table.php │ │ ├── 2014_10_12_000000_create_users_table.php │ │ ├── 2014_10_12_100000_create_password_resets_table.php │ │ ├── 2016_05_13_060834_create_settings_table.php │ │ ├── 2017_04_11_064308_create_units_table.php │ │ ├── 2017_04_11_081227_create_items_table.php │ │ ├── 2017_04_12_090759_create_invoices_table.php │ │ ├── 2017_04_12_091015_create_invoice_items_table.php │ │ ├── 2017_05_05_055609_create_estimates_table.php │ │ ├── 2017_05_05_073927_create_notifications_table.php │ │ ├── 2017_05_06_173745_create_countries_table.php │ │ ├── 2017_10_02_123501_create_estimate_items_table.php │ │ ├── 2018_11_02_133825_create_ expense_categories_table.php │ │ ├── 2018_11_02_133956_create_expenses_table.php │ │ ├── 2019_08_30_072639_create_addresses_table.php │ │ ├── 2019_09_02_053155_create_payment_methods_table.php │ │ ├── 2019_09_03_135234_create_payments_table.php │ │ ├── 2019_09_14_120124_create_media_table.php │ │ ├── 2019_09_21_052540_create_tax_types_table.php │ │ ├── 2019_09_21_052548_create_taxes_table.php │ │ ├── 2019_09_26_145012_create_company_settings_table.php │ │ ├── 2019_12_14_000001_create_personal_access_tokens_table.php │ │ ├── 2020_02_01_063235_create_custom_fields_table.php │ │ ├── 2020_02_01_063509_create_custom_field_values_table.php │ │ ├── 2020_05_12_154129_add_user_id_to_expenses_table.php │ │ ├── 2020_09_07_103054_create_file_disks_table.php │ │ ├── 2020_09_22_153617_add_columns_to_media_table.php │ │ ├── 2020_09_26_100951_create_user_settings_table.php │ │ ├── 2020_10_01_102913_add_company_to_addresses_table.php │ │ ├── 2020_10_17_074745_create_notes_table.php │ │ ├── 2020_10_24_091934_change_value_column_to_text_on_company_settings_table.php │ │ ├── 2020_11_23_050206_add_creator_in_invoices_table.php │ │ ├── 2020_11_23_050252_add_creator_in_estimates_table.php │ │ ├── 2020_11_23_050316_add_creator_in_payments_table.php │ │ ├── 2020_11_23_050333_add_creator_in_expenses_table.php │ │ ├── 2020_11_23_050406_add_creator_in_items_table.php │ │ ├── 2020_11_23_065815_add_creator_in_users_table.php │ │ ├── 2020_11_23_074154_create_email_logs_table.php │ │ ├── 2020_12_02_064933_update_crater_version_320.php │ │ ├── 2020_12_02_090527_update_crater_version_400.php │ │ ├── 2020_12_08_065715_change_description_and_notes_column_type.php │ │ ├── 2020_12_08_133131_update_crater_version_401.php │ │ ├── 2020_12_14_044717_add_template_name_to_invoices_table.php │ │ ├── 2020_12_14_045310_add_template_name_to_estimates_table.php │ │ ├── 2020_12_14_051450_remove_template_id_from_invoices_and_estimates_table.php │ │ ├── 2020_12_23_061302_update_crater_version_402.php │ │ ├── 2020_12_31_100816_update_crater_version_403.php │ │ ├── 2021_01_22_085644_update_crater_version_404.php │ │ ├── 2021_03_03_155223_add_unit_name_to_pdf.php │ │ ├── 2021_03_23_145012_add_number_length_setting.php │ │ ├── 2021_05_05_063533_update_crater_version_410.php │ │ ├── 2021_06_19_121939_update_crater_version_420.php │ │ ├── 2021_06_28_105334_create_bouncer_tables.php │ │ ├── 2021_06_28_111647_create_customers_table.php │ │ ├── 2021_06_28_120010_add_customer_id_to_estimates_table.php │ │ ├── 2021_06_28_120133_add_customer_id_to_expenses_table.php │ │ ├── 2021_06_28_120208_add_customer_id_to_invoices_table.php │ │ ├── 2021_06_28_120231_add_customer_id_to_payments_table.php │ │ ├── 2021_06_29_052745_add_customer_id_to_addresses_table.php │ │ ├── 2021_06_30_062411_update_customer_id_in_all_tables.php │ │ ├── 2021_07_01_060700_create_user_company_table.php │ │ ├── 2021_07_05_100256_change_relationship_of_company.php │ │ ├── 2021_07_06_070204_add_owner_id_to_companies_table.php │ │ ├── 2021_07_08_110940_add_company_to_notes_table.php │ │ ├── 2021_07_09_063502_create_recurring_invoices_table.php │ │ ├── 2021_07_09_063712_add_recurring_invoice_id_to_invoices_table.php │ │ ├── 2021_07_09_063755_add_recurring_invoice_id_to_invoice_items_table.php │ │ ├── 2021_07_15_054753_make_due_date_optional_in_invoices_table.php │ │ ├── 2021_07_15_054929_make_expiry_date_optional_estimates_table.php │ │ ├── 2021_07_16_072458_add_base_columns_into_invoices_table.php │ │ ├── 2021_07_16_072925_add_base_columns_into_invoice_items_table.php │ │ ├── 2021_07_16_073040_add_base_columns_into_estimates_table.php │ │ ├── 2021_07_16_073441_add_base_columns_into_estimate_items_table.php │ │ ├── 2021_07_16_074810_add_base_column_into_payments_table.php │ │ ├── 2021_07_16_075100_add_base_values_into_taxes_table.php │ │ ├── 2021_07_16_080253_add_currency_id_into_invoices_table.php │ │ ├── 2021_07_16_080508_add_currency_id_into_payments_table.php │ │ ├── 2021_07_16_080611_add_currency_id_into_items_table.php │ │ ├── 2021_07_16_080702_add_currency_id_into_taxes_table.php │ │ ├── 2021_07_16_112429_add_currency_id_into_estimates_table.php │ │ ├── 2021_08_05_103535_create_exchange_rate_logs_table.php │ │ ├── 2021_08_16_091413_add_tax_per_item_into_items_table.php │ │ ├── 2021_08_19_063244_add_base_columns_to_expense_table.php │ │ ├── 2021_09_28_081543_create_exchange_rate_providers_table.php │ │ ├── 2021_09_28_130822_add_sequence_column.php │ │ ├── 2021_10_06_100539_add_recurring_invoice_id_to_taxes_table.php │ │ ├── 2021_11_13_051127_add_payment_method_to_expense_table.php │ │ ├── 2021_11_13_114808_calculate_base_values_for_existing_data.php │ │ ├── 2021_11_23_092111_add_new_company_settings.php │ │ ├── 2021_11_23_093811_update_crater_version_500.php │ │ ├── 2021_12_01_120956_update_crater_version_501.php │ │ ├── 2021_12_02_063005_calculate_base_due_amount.php │ │ ├── 2021_12_02_074516_migrate_templates_from_version_4.php │ │ ├── 2021_12_02_123007_update_crater_version_502.php │ │ ├── 2021_12_03_154423_update_crater_version_503.php │ │ ├── 2021_12_04_122255_create_transactions_table.php │ │ ├── 2021_12_04_123315_add_transaction_id_to_payments_table.php │ │ ├── 2021_12_04_123415_add_type_to_payment_methods_table.php │ │ ├── 2021_12_06_131201_update_crater_version_504.php │ │ ├── 2021_12_09_054033_calculate_base_values_for_expenses.php │ │ ├── 2021_12_09_062434_update_crater_version_505.php │ │ ├── 2021_12_09_065718_drop_unique_email_on_customers_table.php │ │ ├── 2021_12_10_121739_update_creater_version_506.php │ │ ├── 2021_12_13_055813_calculate_base_amount_of_payments_table.php │ │ ├── 2021_12_13_093701_add_fields_to_email_logs_table.php │ │ ├── 2021_12_15_053223_create_modules_table.php │ │ ├── 2021_12_21_102521_change_enable_portal_field_of_customers_table.php │ │ ├── 2021_12_31_042453_add_type_to_tax_types_table.php │ │ ├── 2022_01_05_101841_add_sales_tax_fields_to_invoices_table.php │ │ ├── 2022_01_05_102538_add_sales_tax_fields_to_estimates_table.php │ │ ├── 2022_01_05_103607_add_sales_tax_fields_to_recurring_invoices_table.php │ │ ├── 2022_01_05_115423_update_crater_version_600.php │ │ ├── 2022_01_06_103536_add_slug_to_companies.php │ │ ├── 2022_01_12_132859_update_crater_version_601.php │ │ ├── 2022_01_13_123829_update_crater_version_602.php │ │ ├── 2022_02_15_113648_update_crater_version_603.php │ │ ├── 2022_02_17_081723_update_crater_version_604.php │ │ ├── 2022_02_23_130108_update_value_column_to_nullable_on_settings_table.php │ │ ├── 2022_03_02_120210_add_overdue_to_invoices_table.php │ │ ├── 2022_03_03_060121_crater_version_605.php │ │ ├── 2022_03_03_063237_change_over_due_status_to_sent.php │ │ ├── 2022_03_04_051438_calculate_base_values_for_invoice_items.php │ │ └── 2022_03_06_070829_update_crater_version_606.php │ └── seeders/ │ ├── CountriesTableSeeder.php │ ├── CurrenciesTableSeeder.php │ ├── DatabaseSeeder.php │ ├── DemoSeeder.php │ └── UsersTableSeeder.php ├── docker-compose/ │ ├── cron.dockerfile │ ├── crontab │ ├── nginx/ │ │ └── nginx.conf │ ├── php/ │ │ └── uploads.ini │ └── setup.sh ├── docker-compose.yml ├── package.json ├── phpunit.xml ├── postcss.config.js ├── public/ │ ├── .htaccess │ ├── build/ │ │ ├── assets/ │ │ │ ├── 404.e81599b7.js │ │ │ ├── AccountSetting.7f3b69b7.js │ │ │ ├── AddressInformation.7455dbc9.js │ │ │ ├── AstronautIcon.82b952e2.js │ │ │ ├── BackupSetting.135768cd.js │ │ │ ├── BaseEditor.bacb9608.css │ │ │ ├── BaseEditor.c76beb41.js │ │ │ ├── BaseListItem.3b6ffe7a.js │ │ │ ├── BaseMultiselect.2950bd7a.js │ │ │ ├── BaseTable.ec8995dc.js │ │ │ ├── CapsuleIcon.37dfa933.js │ │ │ ├── CategoryModal.6fabb0b3.js │ │ │ ├── CompanyInfoSettings.23b88ef4.js │ │ │ ├── Create.1d6bd807.js │ │ │ ├── Create.68c99c93.js │ │ │ ├── Create.c666337c.js │ │ │ ├── Create.ddeb574a.js │ │ │ ├── Create.f0feda6b.js │ │ │ ├── CreateCustomFields.c1c460e4.js │ │ │ ├── CustomFieldsSetting.feceee26.js │ │ │ ├── CustomerIndexDropdown.bf4b48d6.js │ │ │ ├── CustomerSettings.295ae76d.js │ │ │ ├── CustomizationSetting.31d8c655.js │ │ │ ├── Dashboard.db3b8908.js │ │ │ ├── Dashboard.f55bd37e.js │ │ │ ├── DateTimeType.6886ff98.js │ │ │ ├── DateType.12fc8765.js │ │ │ ├── DragIcon.2da3872a.js │ │ │ ├── DropdownType.2d01b840.js │ │ │ ├── EstimateCreate.82c0b5df.js │ │ │ ├── EstimateIcon.7f89fb19.js │ │ │ ├── EstimateIndexDropdown.8917d9cc.js │ │ │ ├── ExchangeRateConverter.d865db6a.js │ │ │ ├── ExchangeRateProviderSetting.3f82b267.js │ │ │ ├── ExpenseCategorySetting.424a740a.js │ │ │ ├── FileDiskSetting.9303276f.js │ │ │ ├── ForgotPassword.5c338168.js │ │ │ ├── ForgotPassword.cb7a698c.js │ │ │ ├── Index.0d95203a.js │ │ │ ├── Index.113c6776.js │ │ │ ├── Index.17f3f1bc.js │ │ │ ├── Index.5bf16119.js │ │ │ ├── Index.622e547e.js │ │ │ ├── Index.6424247c.js │ │ │ ├── Index.7f1d6a8c.js │ │ │ ├── Index.91b66939.js │ │ │ ├── Index.9afe39cc.js │ │ │ ├── Index.d826dbf4.js │ │ │ ├── Index.edd0a47c.js │ │ │ ├── Index.f458eba6.js │ │ │ ├── Index.ff30d2b8.js │ │ │ ├── InputType.cf0dfc7c.js │ │ │ ├── Installation.f2c5c029.js │ │ │ ├── InvoiceCreate.2736eea6.js │ │ │ ├── InvoiceIndexDropdown.c4bcaa08.js │ │ │ ├── InvoicePublicPage.57c1fc66.js │ │ │ ├── ItemUnitModal.031bb625.js │ │ │ ├── LayoutBasic.7c57f411.js │ │ │ ├── LayoutBasic.c6db5172.js │ │ │ ├── LayoutInstallation.356e17fb.js │ │ │ ├── LayoutLogin.4f8baaf6.js │ │ │ ├── LayoutLogin.b71420b8.js │ │ │ ├── LineChart.8ef63104.js │ │ │ ├── LoadingIcon.b704202b.js │ │ │ ├── Login.30b20f3a.js │ │ │ ├── Login.4db30a10.js │ │ │ ├── MailConfigSetting.cd95a416.js │ │ │ ├── MoonwalkerIcon.b55d3604.js │ │ │ ├── NoteModal.3245b7d3.css │ │ │ ├── NoteModal.ebe10cf0.js │ │ │ ├── NotesSetting.b0c00c6b.js │ │ │ ├── NotificationRoot.5fd2c2c8.js │ │ │ ├── NotificationsSetting.20e5fa7f.js │ │ │ ├── NumberType.7b73360f.js │ │ │ ├── ObservatoryIcon.528a64ab.js │ │ │ ├── PaymentModeModal.a0b58785.js │ │ │ ├── PaymentsModeSetting.c898ec15.js │ │ │ ├── PhoneType.29ae66c8.js │ │ │ ├── PreferencesSetting.1dc581b2.js │ │ │ ├── RecurringInvoiceCreate.30ae0989.js │ │ │ ├── RecurringInvoiceIndexDropdown.5e1ae0da.js │ │ │ ├── ResetPassword.92fe39b8.js │ │ │ ├── ResetPassword.b82bdbf4.js │ │ │ ├── RolesSettings.72f183c6.js │ │ │ ├── SalesTax.75d66dd0.js │ │ │ ├── SelectNotePopup.2e678c03.js │ │ │ ├── SendEstimateModal.01516700.js │ │ │ ├── SendInvoiceModal.f818e383.js │ │ │ ├── SendPaymentModal.26ce23d7.js │ │ │ ├── SettingsIndex.47aad06d.js │ │ │ ├── SettingsIndex.f5b34c1b.js │ │ │ ├── SwitchType.591a8b07.js │ │ │ ├── TaxTypeModal.d37d74ed.js │ │ │ ├── TaxTypesSetting.320c1628.js │ │ │ ├── TextAreaType.27565abe.js │ │ │ ├── TimeType.8ac8afd1.js │ │ │ ├── UpdateAppSetting.428e199e.js │ │ │ ├── UpdateAppSetting.7d8b987a.css │ │ │ ├── UrlType.d123ab64.js │ │ │ ├── View.0b4de6cf.js │ │ │ ├── View.1c478abb.js │ │ │ ├── View.2505fbc0.js │ │ │ ├── View.44f27c50.js │ │ │ ├── View.7e060296.js │ │ │ ├── View.ae81e386.js │ │ │ ├── View.b91609b3.js │ │ │ ├── View.ca01e745.js │ │ │ ├── View.f92113cb.js │ │ │ ├── auth.c88ceb4c.js │ │ │ ├── category.c88b90cd.js │ │ │ ├── disk.0ffde448.js │ │ │ ├── estimate.f77ffc39.js │ │ │ ├── exchange-rate.85b564e2.js │ │ │ ├── expense.ea1e799e.js │ │ │ ├── global.dc565c4e.js │ │ │ ├── index.esm.85b4999a.js │ │ │ ├── invoice.735a98ac.js │ │ │ ├── mail-driver.0a974f6a.js │ │ │ ├── main.40833226.css │ │ │ ├── main.465728e1.js │ │ │ ├── payment.93619753.js │ │ │ ├── payment.e5b74251.js │ │ │ ├── users.27a53e97.js │ │ │ └── vendor.d12b5734.js │ │ └── manifest.json │ ├── favicons/ │ │ ├── browserconfig.xml │ │ └── site.webmanifest │ ├── index.php │ ├── robots.txt │ └── web.config ├── readme.md ├── resources/ │ ├── lang/ │ │ ├── en/ │ │ │ ├── auth.php │ │ │ ├── pagination.php │ │ │ ├── passwords.php │ │ │ └── validation.php │ │ └── vendor/ │ │ └── backup/ │ │ ├── ar/ │ │ │ └── notifications.php │ │ ├── cs/ │ │ │ └── notifications.php │ │ ├── da/ │ │ │ └── notifications.php │ │ ├── de/ │ │ │ └── notifications.php │ │ ├── en/ │ │ │ └── notifications.php │ │ ├── es/ │ │ │ └── notifications.php │ │ ├── fa/ │ │ │ └── notifications.php │ │ ├── fi/ │ │ │ └── notifications.php │ │ ├── fr/ │ │ │ └── notifications.php │ │ ├── hi/ │ │ │ └── notifications.php │ │ ├── id/ │ │ │ └── notifications.php │ │ ├── it/ │ │ │ └── notifications.php │ │ ├── nl/ │ │ │ └── notifications.php │ │ ├── pl/ │ │ │ └── notifications.php │ │ ├── pt-BR/ │ │ │ └── notifications.php │ │ ├── ro/ │ │ │ └── notifications.php │ │ ├── ru/ │ │ │ └── notifications.php │ │ ├── tr/ │ │ │ └── notifications.php │ │ ├── uk/ │ │ │ └── notifications.php │ │ ├── vi/ │ │ │ └── notifications.php │ │ ├── zh-CN/ │ │ │ └── notifications.php │ │ └── zh-TW/ │ │ └── notifications.php │ ├── sass/ │ │ ├── components/ │ │ │ ├── animation.scss │ │ │ ├── pace-loader.scss │ │ │ └── v-tooltips.scss │ │ ├── crater.scss │ │ └── themes.scss │ ├── scripts/ │ │ ├── App.vue │ │ ├── Crater.js │ │ ├── admin/ │ │ │ ├── admin-router.js │ │ │ ├── components/ │ │ │ │ ├── CopyInputField.vue │ │ │ │ ├── SelectNotePopup.vue │ │ │ │ ├── charts/ │ │ │ │ │ └── LineChart.vue │ │ │ │ ├── currency-exchange-rate/ │ │ │ │ │ └── ExchangeRateBulkUpdate.vue │ │ │ │ ├── custom-fields/ │ │ │ │ │ ├── CreateCustomFields.vue │ │ │ │ │ ├── CreateCustomFieldsSingle.vue │ │ │ │ │ └── types/ │ │ │ │ │ ├── DateTimeType.vue │ │ │ │ │ ├── DateType.vue │ │ │ │ │ ├── DropdownType.vue │ │ │ │ │ ├── InputType.vue │ │ │ │ │ ├── NumberType.vue │ │ │ │ │ ├── PhoneType.vue │ │ │ │ │ ├── SwitchType.vue │ │ │ │ │ ├── TextAreaType.vue │ │ │ │ │ ├── TimeType.vue │ │ │ │ │ └── UrlType.vue │ │ │ │ ├── dropdowns/ │ │ │ │ │ ├── CustomFieldIndexDropdown.vue │ │ │ │ │ ├── CustomerIndexDropdown.vue │ │ │ │ │ ├── EstimateIndexDropdown.vue │ │ │ │ │ ├── ExpenseCategoryIndexDropdown.vue │ │ │ │ │ ├── ExpenseIndexDropdown.vue │ │ │ │ │ ├── InvoiceIndexDropdown.vue │ │ │ │ │ ├── ItemIndexDropdown.vue │ │ │ │ │ ├── NoteIndexDropdown.vue │ │ │ │ │ ├── PaymentIndexDropdown.vue │ │ │ │ │ ├── PaymentModeIndexDropdown.vue │ │ │ │ │ ├── RecurringInvoiceIndexDropdown.vue │ │ │ │ │ ├── RoleIndexDropdown.vue │ │ │ │ │ ├── TaxTypeIndexDropdown.vue │ │ │ │ │ └── UserIndexDropdown.vue │ │ │ │ ├── estimate-invoice-common/ │ │ │ │ │ ├── CreateItemRow.vue │ │ │ │ │ ├── CreateItemRowTax.vue │ │ │ │ │ ├── CreateItems.vue │ │ │ │ │ ├── CreateNotesField.vue │ │ │ │ │ ├── CreateTotal.vue │ │ │ │ │ ├── CreateTotalTaxes.vue │ │ │ │ │ ├── ExchangeRateConverter.vue │ │ │ │ │ ├── SalesTax.vue │ │ │ │ │ ├── SelectTaxPopup.vue │ │ │ │ │ └── SelectTemplateButton.vue │ │ │ │ └── modal-components/ │ │ │ │ ├── BackupModal.vue │ │ │ │ ├── CategoryModal.vue │ │ │ │ ├── CompanyModal.vue │ │ │ │ ├── CustomerModal.vue │ │ │ │ ├── DeleteCompanyModal.vue │ │ │ │ ├── ExchangeRateBulkUpdateModal.vue │ │ │ │ ├── ExchangeRateProviderModal.vue │ │ │ │ ├── FileDiskModal.vue │ │ │ │ ├── ItemModal.vue │ │ │ │ ├── ItemUnitModal.vue │ │ │ │ ├── MailTestModal.vue │ │ │ │ ├── NoteModal.vue │ │ │ │ ├── PaymentModeModal.vue │ │ │ │ ├── RolesModal.vue │ │ │ │ ├── SelectTemplateModal.vue │ │ │ │ ├── SendEstimateModal.vue │ │ │ │ ├── SendInvoiceModal.vue │ │ │ │ ├── SendPaymentModal.vue │ │ │ │ ├── TaxTypeModal.vue │ │ │ │ ├── TaxationAddressModal.vue │ │ │ │ ├── custom-fields/ │ │ │ │ │ ├── CustomFieldModal.vue │ │ │ │ │ └── OptionsCreate.vue │ │ │ │ └── disks/ │ │ │ │ ├── DoSpacesDisk.vue │ │ │ │ ├── DropboxDisk.vue │ │ │ │ ├── LocalDisk.vue │ │ │ │ └── S3Disk.vue │ │ │ ├── layouts/ │ │ │ │ ├── LayoutBasic.vue │ │ │ │ ├── LayoutInstallation.vue │ │ │ │ ├── LayoutLogin.vue │ │ │ │ └── partials/ │ │ │ │ ├── TheSiteHeader.vue │ │ │ │ └── TheSiteSidebar.vue │ │ │ ├── stores/ │ │ │ │ ├── auth.js │ │ │ │ ├── backup.js │ │ │ │ ├── category.js │ │ │ │ ├── company.js │ │ │ │ ├── custom-field.js │ │ │ │ ├── customer.js │ │ │ │ ├── dashboard.js │ │ │ │ ├── disk.js │ │ │ │ ├── estimate.js │ │ │ │ ├── exchange-rate.js │ │ │ │ ├── expense.js │ │ │ │ ├── global.js │ │ │ │ ├── installation.js │ │ │ │ ├── invoice.js │ │ │ │ ├── item.js │ │ │ │ ├── mail-driver.js │ │ │ │ ├── module.js │ │ │ │ ├── note.js │ │ │ │ ├── payment.js │ │ │ │ ├── recurring-invoice.js │ │ │ │ ├── reset.js │ │ │ │ ├── role.js │ │ │ │ ├── tax-type.js │ │ │ │ ├── user.js │ │ │ │ └── users.js │ │ │ ├── stub/ │ │ │ │ ├── abilities.js │ │ │ │ ├── address.js │ │ │ │ ├── custom-field.js │ │ │ │ ├── customer.js │ │ │ │ ├── estimate-item.js │ │ │ │ ├── estimate.js │ │ │ │ ├── expense.js │ │ │ │ ├── invoice-item.js │ │ │ │ ├── invoice.js │ │ │ │ ├── payment.js │ │ │ │ ├── recurring-invoice-item.js │ │ │ │ ├── recurring-invoice.js │ │ │ │ └── tax.js │ │ │ └── views/ │ │ │ ├── SampleTable.vue │ │ │ ├── auth/ │ │ │ │ ├── ForgotPassword.vue │ │ │ │ ├── Login.vue │ │ │ │ └── ResetPassword.vue │ │ │ ├── customers/ │ │ │ │ ├── Create.vue │ │ │ │ ├── Index.vue │ │ │ │ ├── View.vue │ │ │ │ └── partials/ │ │ │ │ ├── CustomerChart.vue │ │ │ │ ├── CustomerChartPlaceholder.vue │ │ │ │ ├── CustomerInfo.vue │ │ │ │ └── CustomerViewSidebar.vue │ │ │ ├── dashboard/ │ │ │ │ ├── Dashboard.vue │ │ │ │ ├── DashboardChart.vue │ │ │ │ ├── DashboardChartPlaceholder.vue │ │ │ │ ├── DashboardStats.vue │ │ │ │ ├── DashboardStatsItem.vue │ │ │ │ ├── DashboardStatsPlaceholder.vue │ │ │ │ ├── DashboardStatsSmPlaceholder.vue │ │ │ │ └── DashboardTable.vue │ │ │ ├── errors/ │ │ │ │ └── 404.vue │ │ │ ├── estimates/ │ │ │ │ ├── Index.vue │ │ │ │ ├── View.vue │ │ │ │ └── create/ │ │ │ │ ├── EstimateCreate.vue │ │ │ │ └── EstimateCreateBasicFields.vue │ │ │ ├── expenses/ │ │ │ │ ├── Create.vue │ │ │ │ └── Index.vue │ │ │ ├── installation/ │ │ │ │ ├── Installation.vue │ │ │ │ ├── Step1RequirementsCheck.vue │ │ │ │ ├── Step2PermissionCheck.vue │ │ │ │ ├── Step3DatabaseConfig.vue │ │ │ │ ├── Step4VerifyDomain.vue │ │ │ │ ├── Step5EmailConfig.vue │ │ │ │ ├── Step6AccountSettings.vue │ │ │ │ ├── Step7CompanyInfo.vue │ │ │ │ ├── Step8CompanyPreferences.vue │ │ │ │ ├── database/ │ │ │ │ │ ├── MysqlDatabase.vue │ │ │ │ │ ├── PgsqlDatabase.vue │ │ │ │ │ └── SqliteDatabase.vue │ │ │ │ └── mail-driver/ │ │ │ │ ├── BasicMailDriver.vue │ │ │ │ ├── MailgunMailDriver.vue │ │ │ │ ├── SesMailDriver.vue │ │ │ │ └── SmtpMailDriver.vue │ │ │ ├── invoices/ │ │ │ │ ├── Index.vue │ │ │ │ ├── View.vue │ │ │ │ └── create/ │ │ │ │ ├── InvoiceCreate.vue │ │ │ │ └── InvoiceCreateBasicFields.vue │ │ │ ├── items/ │ │ │ │ ├── Create.vue │ │ │ │ └── Index.vue │ │ │ ├── modules/ │ │ │ │ ├── Index.vue │ │ │ │ ├── View.vue │ │ │ │ └── partials/ │ │ │ │ ├── ModuleCard.vue │ │ │ │ ├── ModuleCardPlaceholder.vue │ │ │ │ ├── ModulePlaceholder.vue │ │ │ │ └── RecentModuleCard.vue │ │ │ ├── payments/ │ │ │ │ ├── Create.vue │ │ │ │ ├── Index.vue │ │ │ │ └── View.vue │ │ │ ├── recurring-invoices/ │ │ │ │ ├── Index.vue │ │ │ │ ├── View.vue │ │ │ │ ├── create/ │ │ │ │ │ ├── RecurringInvoiceCreate.vue │ │ │ │ │ └── RecurringInvoiceCreateBasicFields.vue │ │ │ │ └── partials/ │ │ │ │ ├── Invoices.vue │ │ │ │ ├── RecurringInvoiceInfo.vue │ │ │ │ └── RecurringInvoiceViewSidebar.vue │ │ │ ├── reports/ │ │ │ │ ├── ExpensesReport.vue │ │ │ │ ├── ProfitLossReport.vue │ │ │ │ ├── SalesReports.vue │ │ │ │ ├── TaxReport.vue │ │ │ │ └── layout/ │ │ │ │ └── Index.vue │ │ │ ├── settings/ │ │ │ │ ├── AccountSetting.vue │ │ │ │ ├── BackupSetting.vue │ │ │ │ ├── CompanyInfoSettings.vue │ │ │ │ ├── CustomFieldsSetting.vue │ │ │ │ ├── ExchangeRateProviderSetting.vue │ │ │ │ ├── ExpenseCategorySetting.vue │ │ │ │ ├── FileDiskSetting.vue │ │ │ │ ├── MailConfigSetting.vue │ │ │ │ ├── NotesSetting.vue │ │ │ │ ├── NotificationsSetting.vue │ │ │ │ ├── PaymentsModeSetting.vue │ │ │ │ ├── PreferencesSetting.vue │ │ │ │ ├── RolesSettings.vue │ │ │ │ ├── SettingsIndex.vue │ │ │ │ ├── TaxTypesSetting.vue │ │ │ │ ├── UpdateAppSetting.vue │ │ │ │ ├── customization/ │ │ │ │ │ ├── CustomizationSetting.vue │ │ │ │ │ ├── NumberCustomizer.vue │ │ │ │ │ ├── estimates/ │ │ │ │ │ │ ├── EstimatesTab.vue │ │ │ │ │ │ ├── EstimatesTabConvertEstimate.vue │ │ │ │ │ │ ├── EstimatesTabDefaultFormats.vue │ │ │ │ │ │ ├── EstimatesTabEstimateNumber.vue │ │ │ │ │ │ └── EstimatesTabExpiryDate.vue │ │ │ │ │ ├── invoices/ │ │ │ │ │ │ ├── InvoicesTab.vue │ │ │ │ │ │ ├── InvoicesTabDefaultFormats.vue │ │ │ │ │ │ ├── InvoicesTabDueDate.vue │ │ │ │ │ │ ├── InvoicesTabInvoiceNumber.vue │ │ │ │ │ │ └── InvoicesTabRetrospective.vue │ │ │ │ │ ├── items/ │ │ │ │ │ │ └── ItemsTab.vue │ │ │ │ │ └── payments/ │ │ │ │ │ ├── PaymentsTab.vue │ │ │ │ │ ├── PaymentsTabDefaultFormats.vue │ │ │ │ │ └── PaymentsTabPaymentNumber.vue │ │ │ │ └── mail-driver/ │ │ │ │ ├── BasicMailDriver.vue │ │ │ │ ├── MailgunMailDriver.vue │ │ │ │ ├── SesMailDriver.vue │ │ │ │ └── SmtpMailDriver.vue │ │ │ └── users/ │ │ │ ├── Create.vue │ │ │ └── Index.vue │ │ ├── components/ │ │ │ ├── CompanySwitcher.vue │ │ │ ├── GlobalSearchBar.vue │ │ │ ├── InvoiceInformationCard.vue │ │ │ ├── InvoicePublicPage.vue │ │ │ ├── base/ │ │ │ │ ├── BaseBadge.vue │ │ │ │ ├── BaseBreadcrumb.vue │ │ │ │ ├── BaseBreadcrumbItem.vue │ │ │ │ ├── BaseButton.vue │ │ │ │ ├── BaseCard.vue │ │ │ │ ├── BaseCheckbox.vue │ │ │ │ ├── BaseContentPlaceholders.vue │ │ │ │ ├── BaseContentPlaceholdersBox.vue │ │ │ │ ├── BaseContentPlaceholdersHeading.vue │ │ │ │ ├── BaseContentPlaceholdersText.vue │ │ │ │ ├── BaseCustomInput.vue │ │ │ │ ├── BaseCustomTag.vue │ │ │ │ ├── BaseCustomerAddressDisplay.vue │ │ │ │ ├── BaseCustomerSelectInput.vue │ │ │ │ ├── BaseCustomerSelectPopup.vue │ │ │ │ ├── BaseDatePicker.vue │ │ │ │ ├── BaseDescriptionList.vue │ │ │ │ ├── BaseDescriptionListItem.vue │ │ │ │ ├── BaseDialog.vue │ │ │ │ ├── BaseDivider.vue │ │ │ │ ├── BaseDropdown.vue │ │ │ │ ├── BaseDropdownItem.vue │ │ │ │ ├── BaseEmptyPlaceholder.vue │ │ │ │ ├── BaseErrorAlert.vue │ │ │ │ ├── BaseEstimateStatusBadge.vue │ │ │ │ ├── BaseFileUploader.vue │ │ │ │ ├── BaseFilterWrapper.vue │ │ │ │ ├── BaseFormatMoney.vue │ │ │ │ ├── BaseGlobalLoader.vue │ │ │ │ ├── BaseHeading.vue │ │ │ │ ├── BaseIcon.vue │ │ │ │ ├── BaseInfoAlert.vue │ │ │ │ ├── BaseInput.vue │ │ │ │ ├── BaseInputGrid.vue │ │ │ │ ├── BaseInputGroup.vue │ │ │ │ ├── BaseInvoiceStatusBadge.vue │ │ │ │ ├── BaseItemSelect.vue │ │ │ │ ├── BaseLabel.vue │ │ │ │ ├── BaseModal.vue │ │ │ │ ├── BaseMoney.vue │ │ │ │ ├── BaseNewBadge.vue │ │ │ │ ├── BasePage.vue │ │ │ │ ├── BasePageHeader.vue │ │ │ │ ├── BasePaidStatusBadge.vue │ │ │ │ ├── BaseRadio.vue │ │ │ │ ├── BaseRating.vue │ │ │ │ ├── BaseRecurringInvoiceStatusBadge.vue │ │ │ │ ├── BaseScrollPane.vue │ │ │ │ ├── BaseSelectAction.vue │ │ │ │ ├── BaseSelectInput.vue │ │ │ │ ├── BaseSettingCard.vue │ │ │ │ ├── BaseSpinner.vue │ │ │ │ ├── BaseSwitch.vue │ │ │ │ ├── BaseSwitchSection.vue │ │ │ │ ├── BaseTab.vue │ │ │ │ ├── BaseTabGroup.vue │ │ │ │ ├── BaseText.vue │ │ │ │ ├── BaseTextarea.vue │ │ │ │ ├── BaseTimePicker.vue │ │ │ │ ├── BaseWizard.vue │ │ │ │ ├── BaseWizardNavigation.vue │ │ │ │ ├── BaseWizardStep.vue │ │ │ │ ├── base-editor/ │ │ │ │ │ ├── BaseEditor.vue │ │ │ │ │ └── icons/ │ │ │ │ │ ├── BoldIcon.vue │ │ │ │ │ ├── CodeBlockIcon.vue │ │ │ │ │ ├── CodingIcon.vue │ │ │ │ │ ├── ItalicIcon.vue │ │ │ │ │ ├── ListIcon.vue │ │ │ │ │ ├── ListUlIcon.vue │ │ │ │ │ ├── MenuCenterIcon.vue │ │ │ │ │ ├── ParagraphIcon.vue │ │ │ │ │ ├── QuoteIcon.vue │ │ │ │ │ ├── RedoIcon.vue │ │ │ │ │ ├── StrikethroughIcon.vue │ │ │ │ │ ├── UnderlineIcon.vue │ │ │ │ │ ├── UndoIcon.vue │ │ │ │ │ └── index.js │ │ │ │ └── base-table/ │ │ │ │ ├── BaseTable.vue │ │ │ │ ├── BaseTablePagination.vue │ │ │ │ ├── Column.js │ │ │ │ ├── Row.js │ │ │ │ └── helpers.js │ │ │ ├── base-select/ │ │ │ │ ├── BaseMultiselect.d.ts │ │ │ │ ├── BaseMultiselect.vue │ │ │ │ ├── composables/ │ │ │ │ │ ├── useClasses.js │ │ │ │ │ ├── useData.js │ │ │ │ │ ├── useDropdown.js │ │ │ │ │ ├── useKeyboard.js │ │ │ │ │ ├── useMultiselect.js │ │ │ │ │ ├── useOptions.js │ │ │ │ │ ├── usePointer.js │ │ │ │ │ ├── usePointerAction.js │ │ │ │ │ ├── useSearch.js │ │ │ │ │ └── useValue.js │ │ │ │ ├── index.d.ts │ │ │ │ └── utils/ │ │ │ │ ├── arraysEqual.js │ │ │ │ ├── isNullish.js │ │ │ │ ├── isObject.js │ │ │ │ └── normalize.js │ │ │ ├── icons/ │ │ │ │ ├── DragIcon.vue │ │ │ │ ├── LoadingIcon.vue │ │ │ │ ├── MainLogo.vue │ │ │ │ ├── SaveIcon.vue │ │ │ │ ├── SpinnerIcon.vue │ │ │ │ ├── dashboard/ │ │ │ │ │ ├── CustomerIcon.vue │ │ │ │ │ ├── DollarIcon.vue │ │ │ │ │ ├── EstimateIcon.vue │ │ │ │ │ ├── InvoiceIcon.vue │ │ │ │ │ └── PaymentIcon.vue │ │ │ │ └── empty/ │ │ │ │ ├── AstronautIcon.vue │ │ │ │ ├── CapsuleIcon.vue │ │ │ │ ├── MoonwalkerIcon.vue │ │ │ │ ├── ObservatoryIcon.vue │ │ │ │ ├── SatelliteIcon.vue │ │ │ │ └── UFOIcon.vue │ │ │ ├── list/ │ │ │ │ ├── BaseList.vue │ │ │ │ └── BaseListItem.vue │ │ │ ├── notifications/ │ │ │ │ ├── NotificationItem.vue │ │ │ │ └── NotificationRoot.vue │ │ │ └── svg/ │ │ │ ├── LoginBackground.vue │ │ │ ├── LoginBackgroundOverlay.vue │ │ │ ├── LoginBottomVector.vue │ │ │ └── LoginPlanetCrater.vue │ │ ├── customer/ │ │ │ ├── customer-router.js │ │ │ ├── helpers/ │ │ │ │ └── error-handling.js │ │ │ ├── layouts/ │ │ │ │ ├── LayoutBasic.vue │ │ │ │ ├── LayoutLogin.vue │ │ │ │ └── partials/ │ │ │ │ ├── TheSiteFooter.vue │ │ │ │ ├── TheSiteHeader.vue │ │ │ │ └── TheSiteSidebar.vue │ │ │ ├── stores/ │ │ │ │ ├── auth.js │ │ │ │ ├── customer.js │ │ │ │ ├── dashboard.js │ │ │ │ ├── estimate.js │ │ │ │ ├── global.js │ │ │ │ ├── invoice.js │ │ │ │ ├── payment.js │ │ │ │ └── user.js │ │ │ ├── stubs/ │ │ │ │ └── address.js │ │ │ └── views/ │ │ │ ├── BaseCheckon.vue │ │ │ ├── SamplePage.vue │ │ │ ├── auth/ │ │ │ │ ├── ForgotPassword.vue │ │ │ │ ├── Login.vue │ │ │ │ └── ResetPassword.vue │ │ │ ├── dashboard/ │ │ │ │ ├── Dashboard.vue │ │ │ │ ├── DashboardStats.vue │ │ │ │ ├── DashboardStatsItem.vue │ │ │ │ ├── DashboardStatsPlaceholder.vue │ │ │ │ ├── DashboardStatsSmPlaceholder.vue │ │ │ │ └── DashboardTable.vue │ │ │ ├── estimates/ │ │ │ │ ├── Index.vue │ │ │ │ └── View.vue │ │ │ ├── invoices/ │ │ │ │ ├── Index.vue │ │ │ │ └── View.vue │ │ │ ├── payments/ │ │ │ │ ├── Index.vue │ │ │ │ └── View.vue │ │ │ └── settings/ │ │ │ ├── AddressInformation.vue │ │ │ ├── CustomerSettings.vue │ │ │ └── SettingsIndex.vue │ │ ├── global-components.js │ │ ├── helpers/ │ │ │ ├── error-handling.js │ │ │ ├── use-popper.js │ │ │ └── utilities.js │ │ ├── locales/ │ │ │ ├── ar.json │ │ │ ├── cs.json │ │ │ ├── de.json │ │ │ ├── el.json │ │ │ ├── en.json │ │ │ ├── es.json │ │ │ ├── fa.json │ │ │ ├── fi.json │ │ │ ├── fr.json │ │ │ ├── hi.json │ │ │ ├── hr.json │ │ │ ├── id.json │ │ │ ├── it.json │ │ │ ├── ja.json │ │ │ ├── ko.json │ │ │ ├── locales.js │ │ │ ├── lt.json │ │ │ ├── lv.json │ │ │ ├── nl.json │ │ │ ├── pl.json │ │ │ ├── pt-br.json │ │ │ ├── pt.json │ │ │ ├── ro.json │ │ │ ├── ru.json │ │ │ ├── sk.json │ │ │ ├── sl.json │ │ │ ├── sr.json │ │ │ ├── sv.json │ │ │ ├── th.json │ │ │ ├── tr.json │ │ │ ├── vi.json │ │ │ └── zh.json │ │ ├── main.js │ │ ├── plugins/ │ │ │ ├── axios.js │ │ │ └── i18n.js │ │ ├── router/ │ │ │ └── index.js │ │ ├── services/ │ │ │ └── ls.js │ │ ├── shims-vue.d.ts │ │ └── stores/ │ │ ├── dialog.js │ │ ├── modal.js │ │ └── notification.js │ └── views/ │ ├── app/ │ │ └── pdf/ │ │ ├── estimate/ │ │ │ ├── estimate1.blade.php │ │ │ ├── estimate2.blade.php │ │ │ ├── estimate3.blade.php │ │ │ └── partials/ │ │ │ └── table.blade.php │ │ ├── invoice/ │ │ │ ├── invoice1.blade.php │ │ │ ├── invoice2.blade.php │ │ │ ├── invoice3.blade.php │ │ │ └── partials/ │ │ │ └── table.blade.php │ │ ├── locale/ │ │ │ └── th.blade.php │ │ ├── payment/ │ │ │ └── payment.blade.php │ │ └── reports/ │ │ ├── expenses.blade.php │ │ ├── profit-loss.blade.php │ │ ├── sales-customers.blade.php │ │ ├── sales-items.blade.php │ │ └── tax-summary.blade.php │ ├── app.blade.php │ ├── emails/ │ │ ├── send/ │ │ │ ├── estimate.blade.php │ │ │ ├── invoice.blade.php │ │ │ └── payment.blade.php │ │ ├── test.blade.php │ │ └── viewed/ │ │ ├── estimate.blade.php │ │ └── invoice.blade.php │ └── vendor/ │ ├── laravel-menu/ │ │ └── bootstrap-navbar-items.blade.php │ ├── mail/ │ │ ├── html/ │ │ │ ├── button.blade.php │ │ │ ├── footer.blade.php │ │ │ ├── header.blade.php │ │ │ ├── layout.blade.php │ │ │ ├── message.blade.php │ │ │ ├── panel.blade.php │ │ │ ├── promotion/ │ │ │ │ └── button.blade.php │ │ │ ├── promotion.blade.php │ │ │ ├── subcopy.blade.php │ │ │ ├── table.blade.php │ │ │ └── themes/ │ │ │ └── default.css │ │ └── text/ │ │ ├── button.blade.php │ │ ├── footer.blade.php │ │ ├── header.blade.php │ │ ├── layout.blade.php │ │ ├── message.blade.php │ │ ├── panel.blade.php │ │ ├── promotion/ │ │ │ └── button.blade.php │ │ ├── promotion.blade.php │ │ ├── subcopy.blade.php │ │ └── table.blade.php │ └── media-library/ │ ├── image.blade.php │ ├── placeholderSvg.blade.php │ ├── responsiveImage.blade.php │ └── responsiveImageWithPlaceholder.blade.php ├── routes/ │ ├── api.php │ ├── channels.php │ ├── console.php │ └── web.php ├── server.php ├── storage/ │ ├── app/ │ │ └── .gitignore │ ├── fonts/ │ │ └── .gitkeep │ ├── framework/ │ │ ├── .gitignore │ │ ├── cache/ │ │ │ └── .gitignore │ │ ├── sessions/ │ │ │ └── .gitignore │ │ └── views/ │ │ └── .gitignore │ └── logs/ │ └── .gitignore ├── tailwind.config.js ├── tests/ │ ├── CreatesApplication.php │ ├── Feature/ │ │ ├── Admin/ │ │ │ ├── BackupTest.php │ │ │ ├── CompanySettingTest.php │ │ │ ├── CompanyTest.php │ │ │ ├── ConfigTest.php │ │ │ ├── CurrenciesTest.php │ │ │ ├── CustomFieldTest.php │ │ │ ├── CustomerTest.php │ │ │ ├── DashboardTest.php │ │ │ ├── EstimateTest.php │ │ │ ├── ExpenseCategoryTest.php │ │ │ ├── ExpenseTest.php │ │ │ ├── FileDiskTest.php │ │ │ ├── InvoiceTest.php │ │ │ ├── ItemTest.php │ │ │ ├── LocationTest.php │ │ │ ├── NextNumberTest.php │ │ │ ├── NotesTest.php │ │ │ ├── PaymentMethodTest.php │ │ │ ├── PaymentTest.php │ │ │ ├── RecurringInvoiceTest.php │ │ │ ├── RoleTest.php │ │ │ ├── TaxTypeTest.php │ │ │ ├── UnitTest.php │ │ │ └── UserTest.php │ │ └── Customer/ │ │ ├── DashboardTest.php │ │ ├── EstimateTest.php │ │ ├── ExpenseTest.php │ │ ├── InvoiceTest.php │ │ ├── PaymentTest.php │ │ └── ProfileTest.php │ ├── Helpers.php │ ├── Pest.php │ ├── TestCase.php │ └── Unit/ │ ├── AddressTest.php │ ├── CompanySettingTest.php │ ├── CompanyTest.php │ ├── CountryTest.php │ ├── CustomFieldTest.php │ ├── CustomFieldValueTest.php │ ├── CustomerTest.php │ ├── EstimateItemTest.php │ ├── EstimateTest.php │ ├── ExchangeRateLogTest.php │ ├── ExpenseCategoryTest.php │ ├── ExpenseTest.php │ ├── InvoiceItemTest.php │ ├── InvoiceTest.php │ ├── ItemTest.php │ ├── PaymentMethodTest.php │ ├── PaymentTest.php │ ├── RecurringInvoiceTest.php │ ├── SettingTest.php │ ├── TaxTest.php │ ├── TaxTypeTest.php │ ├── UnitTest.php │ └── UserTest.php ├── tsconfig.json ├── uffizzi/ │ ├── Dockerfile │ ├── crond/ │ │ └── Dockerfile │ ├── docker-compose.uffizzi.yml │ └── nginx/ │ ├── Dockerfile │ └── nginx/ │ └── nginx.conf └── vite.config.ts