79 lines
2.8 KiB
PHP
79 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use Illuminate\Database\Seeder;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
/**
|
|
* 견적 수식 카테고리 시더
|
|
*
|
|
* 수식 관리 UI에서 사용하는 카테고리 데이터 생성
|
|
* - 입력변수: 사용자 입력값 (W0, H0, PC, GT, MP, CT, QTY)
|
|
* - 계산변수: 파생 계산값 (W1, H1, M, K)
|
|
* - 범위선택: 조건부 품목 선택 (모터, 가이드레일 등)
|
|
* - 품목매핑: BOM 연동 품목 정의
|
|
*/
|
|
class QuoteFormulaCategorySeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
$tenantId = 1;
|
|
|
|
$categories = [
|
|
[
|
|
'tenant_id' => $tenantId,
|
|
'code' => 'input_variables',
|
|
'name' => '입력변수',
|
|
'description' => '사용자가 직접 입력하는 기본 변수 (오픈사이즈, 제품카테고리, 가이드유형, 모터전원, 연동제어, 수량)',
|
|
'sort_order' => 1,
|
|
'is_active' => true,
|
|
'created_by' => 1,
|
|
'updated_by' => 1,
|
|
],
|
|
[
|
|
'tenant_id' => $tenantId,
|
|
'code' => 'calculation_variables',
|
|
'name' => '계산변수',
|
|
'description' => '입력변수를 기반으로 자동 계산되는 파생 변수 (제작사이즈, 면적, 중량)',
|
|
'sort_order' => 2,
|
|
'is_active' => true,
|
|
'created_by' => 1,
|
|
'updated_by' => 1,
|
|
],
|
|
[
|
|
'tenant_id' => $tenantId,
|
|
'code' => 'range_selection',
|
|
'name' => '범위선택',
|
|
'description' => '조건(중량, 높이, 폭)에 따라 자동 선택되는 품목 (모터, 가이드레일, 케이스)',
|
|
'sort_order' => 3,
|
|
'is_active' => true,
|
|
'created_by' => 1,
|
|
'updated_by' => 1,
|
|
],
|
|
[
|
|
'tenant_id' => $tenantId,
|
|
'code' => 'item_mapping',
|
|
'name' => '품목매핑',
|
|
'description' => '견적 계산에 포함되는 품목과 수량/단가 수식 정의',
|
|
'sort_order' => 4,
|
|
'is_active' => true,
|
|
'created_by' => 1,
|
|
'updated_by' => 1,
|
|
],
|
|
];
|
|
|
|
foreach ($categories as $category) {
|
|
DB::table('quote_formula_categories')->updateOrInsert(
|
|
['tenant_id' => $category['tenant_id'], 'code' => $category['code']],
|
|
array_merge($category, [
|
|
'created_at' => now(),
|
|
'updated_at' => now(),
|
|
])
|
|
);
|
|
}
|
|
|
|
$this->command->info('QuoteFormulaCategorySeeder: '.count($categories).'개 카테고리 생성 완료');
|
|
}
|
|
}
|