feat:일반전표입력 기능 구현 (컨트롤러, 모델, 뷰, 라우트, 메뉴시더)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
김보곤
2026-02-06 15:23:43 +09:00
parent ce08d0110a
commit f277ec8475
6 changed files with 1371 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
<?php
namespace Database\Seeders;
use App\Models\Commons\Menu;
use Illuminate\Database\Seeder;
class JournalEntryMenuSeeder extends Seeder
{
public function run(): void
{
$tenantId = 1;
// 일일자금일보 메뉴 찾기
$dailyFundMenu = Menu::withoutGlobalScopes()
->where('tenant_id', $tenantId)
->where('name', '일일자금일보')
->first();
if (!$dailyFundMenu) {
$this->command->error('일일자금일보 메뉴를 찾을 수 없습니다.');
return;
}
$parentId = $dailyFundMenu->parent_id;
// 일반전표입력 메뉴가 이미 있는지 확인
$existingMenu = Menu::withoutGlobalScopes()
->where('tenant_id', $tenantId)
->where('name', '일반전표입력')
->where('parent_id', $parentId)
->first();
if ($existingMenu) {
$this->command->info('일반전표입력 메뉴가 이미 존재합니다.');
return;
}
// 일일자금일보 바로 다음 sort_order로 추가
$newSortOrder = $dailyFundMenu->sort_order + 1;
// 기존 메뉴들의 sort_order를 밀어내기
Menu::withoutGlobalScopes()
->where('parent_id', $parentId)
->where('tenant_id', $tenantId)
->where('sort_order', '>=', $newSortOrder)
->increment('sort_order');
$menu = Menu::create([
'tenant_id' => $tenantId,
'parent_id' => $parentId,
'name' => '일반전표입력',
'url' => '/finance/journal-entries',
'icon' => 'file-text',
'sort_order' => $newSortOrder,
'is_active' => true,
]);
$this->command->info("일반전표입력 메뉴 생성: {$menu->url} (sort_order: {$newSortOrder})");
// 결과 출력
$this->command->info('');
$this->command->info('=== 같은 그룹 하위 메뉴 ===');
$children = Menu::withoutGlobalScopes()
->where('parent_id', $parentId)
->where('tenant_id', $tenantId)
->orderBy('sort_order')
->get(['name', 'url', 'sort_order']);
foreach ($children as $child) {
$this->command->info("{$child->sort_order}. {$child->name} ({$child->url})");
}
}
}