where('business_id', $businessId); if ($onlyUnlinked) { $query->whereNull('accounting_account_id'); } $linked = 0; foreach ($query->get(['id', 'name', 'business_id']) as $paymentAccount) { $gl = DB::table('accounting_accounts') ->where('business_id', $paymentAccount->business_id) ->where('name', $paymentAccount->name) ->where('status', 'active') ->first(['id']); if (! $gl) { $gl = DB::table('accounting_accounts') ->where('business_id', $paymentAccount->business_id) ->where('gl_code', 'like', '%'.substr(preg_replace('/\s+/', '', $paymentAccount->name), 0, 8).'%') ->where('status', 'active') ->first(['id']); } if ($gl) { DB::table('accounts')->where('id', $paymentAccount->id)->update([ 'accounting_account_id' => $gl->id, ]); $linked++; } } return $linked; } public function summary(int $businessId): array { if (! Schema::hasColumn('accounts', 'accounting_account_id')) { return ['total' => 0, 'linked' => 0, 'unlinked' => 0]; } $total = DB::table('accounts')->where('business_id', $businessId)->where('is_closed', 0)->count(); $linked = DB::table('accounts') ->where('business_id', $businessId) ->where('is_closed', 0) ->whereNotNull('accounting_account_id') ->count(); return [ 'total' => $total, 'linked' => $linked, 'unlinked' => max(0, $total - $linked), ]; } }