feat: 견적서 옵션용 공통코드 마이그레이션 추가

- material_type: 제품 종류 (스크린, 슬랫, 벤딩, 조인트바)
- painting_type: 도장 옵션
- motor_type: 모터 옵션
- controller_type: 제어기 옵션
- width_construction_cost: 가로시공비 옵션
- height_construction_cost: 세로시공비 옵션

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-01-16 19:35:11 +09:00
parent 7543fd2256
commit b86397cbee

View File

@@ -0,0 +1,81 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;
return new class extends Migration
{
/**
* 견적서 옵션용 공통코드 추가
* - material_type: 제품 종류
* - painting_type: 도장 옵션
* - motor_type: 모터 옵션
* - controller_type: 제어기 옵션
* - width_construction_cost: 가로시공비 옵션
* - height_construction_cost: 세로시공비 옵션
*/
public function up(): void
{
$now = now();
$codes = [
// 제품 종류 (material_type)
['code_group' => 'material_type', 'code' => 'screen', 'name' => '스크린', 'sort_order' => 1],
['code_group' => 'material_type', 'code' => 'slat', 'name' => '슬랫', 'sort_order' => 2],
['code_group' => 'material_type', 'code' => 'bending', 'name' => '벤딩', 'sort_order' => 3],
['code_group' => 'material_type', 'code' => 'jointbar', 'name' => '조인트바', 'sort_order' => 4],
// 도장 옵션 (painting_type)
['code_group' => 'painting_type', 'code' => '0', 'name' => '직접입력', 'sort_order' => 1, 'attributes' => json_encode(['price' => 0])],
['code_group' => 'painting_type', 'code' => 'painting_a', 'name' => '도장A', 'sort_order' => 2, 'attributes' => json_encode(['price' => 50000])],
['code_group' => 'painting_type', 'code' => 'painting_b', 'name' => '도장B', 'sort_order' => 3, 'attributes' => json_encode(['price' => 80000])],
// 모터 옵션 (motor_type)
['code_group' => 'motor_type', 'code' => 'motor_300k', 'name' => '모터 300,000', 'sort_order' => 1, 'attributes' => json_encode(['price' => 300000])],
['code_group' => 'motor_type', 'code' => 'motor_500k', 'name' => '모터 500,000', 'sort_order' => 2, 'attributes' => json_encode(['price' => 500000])],
// 제어기 옵션 (controller_type)
['code_group' => 'controller_type', 'code' => 'ctrl_150k', 'name' => '제어기 150,000', 'sort_order' => 1, 'attributes' => json_encode(['price' => 150000])],
['code_group' => 'controller_type', 'code' => 'ctrl_250k', 'name' => '제어기 250,000', 'sort_order' => 2, 'attributes' => json_encode(['price' => 250000])],
// 가로시공비 옵션 (width_construction_cost)
['code_group' => 'width_construction_cost', 'code' => 'w_3_4m', 'name' => '3.01~4.0M', 'sort_order' => 1, 'attributes' => json_encode(['price' => 300000])],
['code_group' => 'width_construction_cost', 'code' => 'w_4_5m', 'name' => '4.01~5.0M', 'sort_order' => 2, 'attributes' => json_encode(['price' => 400000])],
['code_group' => 'width_construction_cost', 'code' => 'w_5_6m', 'name' => '5.01~6.0M', 'sort_order' => 3, 'attributes' => json_encode(['price' => 500000])],
['code_group' => 'width_construction_cost', 'code' => 'w_6_7m', 'name' => '6.01~7.0M', 'sort_order' => 4, 'attributes' => json_encode(['price' => 600000])],
// 세로시공비 옵션 (height_construction_cost)
['code_group' => 'height_construction_cost', 'code' => 'h_3_4m', 'name' => '3.51~4.5M', 'sort_order' => 1, 'attributes' => json_encode(['price' => 5000])],
['code_group' => 'height_construction_cost', 'code' => 'h_4_5m', 'name' => '4.51~5.5M', 'sort_order' => 2, 'attributes' => json_encode(['price' => 8000])],
['code_group' => 'height_construction_cost', 'code' => 'h_5_6m', 'name' => '5.51~6.5M', 'sort_order' => 3, 'attributes' => json_encode(['price' => 10000])],
];
foreach ($codes as $code) {
DB::table('common_codes')->insert(array_merge($code, [
'tenant_id' => null, // 전역 코드 (모든 테넌트에서 사용)
'is_active' => true,
'created_at' => $now,
'updated_at' => $now,
]));
}
}
/**
* Reverse the migrations.
*/
public function down(): void
{
$codeGroups = [
'material_type',
'painting_type',
'motor_type',
'controller_type',
'width_construction_cost',
'height_construction_cost',
];
DB::table('common_codes')
->whereIn('code_group', $codeGroups)
->delete();
}
};