registerTranslations(); $this->registerConfig(); $this->registerViews(); $this->registerFactories(); $this->loadMigrationsFrom(__DIR__.'/../Database/Migrations'); $this->app['events']->listen(\App\Events\SellCreatedOrModified::class, \Modules\Accounting\Listeners\MapSellTransaction::class); $this->app['events']->listen(\App\Events\TransactionPaymentAdded::class, \Modules\Accounting\Listeners\MapPaymentTransaction::class); $this->app['events']->listen(\App\Events\TransactionPaymentUpdated::class, \Modules\Accounting\Listeners\MapPaymentTransaction::class); $this->app['events']->listen(\App\Events\TransactionPaymentDeleted::class, \Modules\Accounting\Listeners\MapPaymentTransaction::class); $this->app['events']->listen(\App\Events\PurchaseCreatedOrModified::class, \Modules\Accounting\Listeners\MapPurchaseTransaction::class); $this->app['events']->listen(\App\Events\ExpenseCreatedOrModified::class, \Modules\Accounting\Listeners\MapExpenseTransactions::class); $this->app['events']->listen(\App\Events\SellCreatedOrModified::class, \Modules\Accounting\Listeners\CreateInstallmentFromSell::class); $this->app['events']->listen(\App\Events\TransactionPaymentAdded::class, \Modules\Accounting\Listeners\PostPayrollPaymentToGl::class); if ($this->app->runningInConsole()) { $this->commands([ AccountingMaintenanceCommand::class, AccountingBackfillCommand::class, AccountingSyncExchangeRatesCommand::class, SeedIranianCoaCommand::class, ]); } } /** * Register the service provider. * * @return void */ public function register() { $this->app->register(RouteServiceProvider::class); $this->app->singleton(\Modules\Accounting\Services\FinancialPostingService::class); $this->app->singleton(\Modules\Accounting\Services\PeriodCloseService::class); $this->app->singleton(\Modules\Accounting\Services\ChequeService::class); $this->app->singleton(\Modules\Accounting\Services\InstallmentService::class); $this->app->singleton(\Modules\Accounting\Services\DepreciationService::class); $this->app->singleton(\Modules\Accounting\Services\BankReconciliationService::class); $this->app->singleton(\Modules\Accounting\Services\ConsolidationService::class); $this->app->singleton(\Modules\Accounting\Services\AccountingHealthService::class); $this->app->singleton(\Modules\Accounting\Services\JournalApprovalService::class); $this->app->singleton(\Modules\Accounting\Services\SubsidiaryLedgerService::class); $this->app->singleton(\Modules\Accounting\Services\PaymentAccountGlLinkService::class); $this->app->singleton(\Modules\Accounting\Services\IranianChartOfAccountsService::class); $this->app->singleton(\Modules\Accounting\Services\InstallmentBridgeService::class); $this->app->singleton(\Modules\Accounting\Services\OpeningBalanceService::class); $this->app->singleton(\Modules\Accounting\Services\DeferredDocumentsService::class); $this->app->singleton(\Modules\Accounting\Services\ExchangeRateService::class); $this->app->singleton(\Modules\Accounting\Services\ExternalExchangeRateProvider::class); $this->app->singleton(\Modules\Accounting\Services\PayrollTaxBridgeService::class); $this->app->singleton(\Modules\Accounting\Services\LocationDefaultMappingService::class); $this->app->singleton(\Modules\Accounting\Services\HoldingEntityResolutionService::class); $this->app->singleton(\Modules\Accounting\Services\OperationalTransactionPostingService::class); } /** * Register config. * * @return void */ protected function registerConfig() { $this->publishes([ __DIR__.'/../Config/config.php' => config_path('accounting.php'), ], 'config'); $this->mergeConfigFrom( __DIR__.'/../Config/config.php', 'accounting' ); } /** * Register views. * * @return void */ public function registerViews() { $viewPath = resource_path('views/modules/accounting'); $sourcePath = __DIR__.'/../Resources/views'; $this->publishes([ $sourcePath => $viewPath, ], 'views'); $this->loadViewsFrom(array_merge(array_map(function ($path) { return $path.'/modules/accounting'; }, config('view.paths')), [$sourcePath]), 'accounting'); } /** * Register translations. * * @return void */ public function registerTranslations() { $langPath = resource_path('lang/modules/accounting'); if (is_dir($langPath)) { $this->loadTranslationsFrom($langPath, 'accounting'); } else { $this->loadTranslationsFrom(__DIR__.'/../Resources/lang', 'accounting'); } } /** * Register an additional directory of factories. * * @return void */ public function registerFactories() { if (! app()->environment('production') && $this->app->runningInConsole()) { app(Factory::class)->load(__DIR__.'/../Database/factories'); } } /** * Get the services provided by the provider. * * @return array */ public function provides() { return []; } }