| 123456789101112131415161718192021222324252627282930 | <?php
namespace App\Services;
use App\Models\Company;
use App\Models\Setting\CompanyDefault;
use App\Models\User;
use Illuminate\Support\Facades\DB;
class CompanyDefaultService
{
    public function createCompanyDefaults(Company $company, User $user, string $currencyCode, string $countryCode, string $language): void
    {
        DB::transaction(function () use ($user, $company, $currencyCode, $countryCode, $language) {
            // Create the company defaults
            $companyDefaultInstance = CompanyDefault::factory()->withDefault($user, $company, $currencyCode, $countryCode, $language);
            // Create Chart of Accounts
            $chartOfAccountsService = app(ChartOfAccountsService::class);
            $chartOfAccountsService->createChartOfAccounts($company);
            // Get the default bank account and update the company default record
            $defaultBankAccount = $company->bankAccounts()->where('enabled', true)->firstOrFail();
            $companyDefaultInstance->state([
                'bank_account_id' => $defaultBankAccount->id,
            ])->createQuietly();
        });
    }
}
 |