feat: [hr] 사업소득자 임금대장 display_name/business_reg_number 컬럼 추가

- user_id nullable 변경 (직접 입력 대상자 지원)
- display_name, business_reg_number 컬럼 추가
- 기존 데이터 earner 프로필에서 자동 채움
This commit is contained in:
김보곤
2026-03-03 14:20:33 +09:00
parent d68fd56232
commit 5a0deddb58

View File

@@ -0,0 +1,47 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('business_income_payments', function (Blueprint $table) {
$table->unsignedBigInteger('user_id')->nullable()->change();
$table->string('display_name', 100)->nullable()->after('user_id')->comment('상호/성명 (표시용)');
$table->string('business_reg_number', 20)->nullable()->after('display_name')->comment('사업자등록번호');
});
// 기존 데이터에 display_name/business_reg_number 채우기
DB::statement("
UPDATE business_income_payments bip
JOIN tenant_user_profiles tup ON tup.user_id = bip.user_id
AND tup.tenant_id = bip.tenant_id AND tup.worker_type = 'business_income'
SET bip.display_name = COALESCE(
JSON_UNQUOTE(JSON_EXTRACT(tup.json_extra, '$.business_name')),
(SELECT name FROM users WHERE id = bip.user_id)
),
bip.business_reg_number = JSON_UNQUOTE(JSON_EXTRACT(tup.json_extra, '$.business_registration_number'))
WHERE bip.display_name IS NULL
");
// earner 프로필 없는 경우 users 테이블에서 이름만이라도 채우기
DB::statement("
UPDATE business_income_payments bip
JOIN users u ON u.id = bip.user_id
SET bip.display_name = u.name
WHERE bip.display_name IS NULL AND bip.user_id IS NOT NULL
");
}
public function down(): void
{
Schema::table('business_income_payments', function (Blueprint $table) {
$table->dropColumn(['display_name', 'business_reg_number']);
$table->unsignedBigInteger('user_id')->nullable(false)->change();
});
}
};