- AccountCode 모델/서비스 확장 (업데이트, 기본 계정과목 시딩) - JournalSyncService 추가 (전표 자동 연동) - SyncsExpenseAccounts 트레이트 추가 - CardTransactionController, TaxInvoiceController 기능 확장 - expense_accounts 테이블에 전표 연결 컬럼 마이그레이션 - account_codes 테이블 확장 마이그레이션 - 전체 테넌트 기본 계정과목 시딩 마이그레이션 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
88 lines
2.2 KiB
PHP
88 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api\V1;
|
|
|
|
use App\Helpers\ApiResponse;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\V1\AccountSubject\StoreAccountSubjectRequest;
|
|
use App\Http\Requests\V1\AccountSubject\UpdateAccountSubjectRequest;
|
|
use App\Services\AccountCodeService;
|
|
use Illuminate\Http\Request;
|
|
|
|
class AccountSubjectController extends Controller
|
|
{
|
|
public function __construct(
|
|
private readonly AccountCodeService $service
|
|
) {}
|
|
|
|
/**
|
|
* 계정과목 목록 조회
|
|
*/
|
|
public function index(Request $request)
|
|
{
|
|
$params = $request->only([
|
|
'search', 'category', 'sub_category',
|
|
'department_type', 'depth', 'is_active', 'selectable',
|
|
]);
|
|
|
|
$subjects = $this->service->index($params);
|
|
|
|
return ApiResponse::success($subjects, __('message.fetched'));
|
|
}
|
|
|
|
/**
|
|
* 계정과목 등록
|
|
*/
|
|
public function store(StoreAccountSubjectRequest $request)
|
|
{
|
|
$subject = $this->service->store($request->validated());
|
|
|
|
return ApiResponse::success($subject, __('message.created'), [], 201);
|
|
}
|
|
|
|
/**
|
|
* 계정과목 수정
|
|
*/
|
|
public function update(int $id, UpdateAccountSubjectRequest $request)
|
|
{
|
|
$subject = $this->service->update($id, $request->validated());
|
|
|
|
return ApiResponse::success($subject, __('message.updated'));
|
|
}
|
|
|
|
/**
|
|
* 계정과목 활성/비활성 토글
|
|
*/
|
|
public function toggleStatus(int $id, Request $request)
|
|
{
|
|
$isActive = (bool) $request->input('is_active', true);
|
|
|
|
$subject = $this->service->toggleStatus($id, $isActive);
|
|
|
|
return ApiResponse::success($subject, __('message.toggled'));
|
|
}
|
|
|
|
/**
|
|
* 계정과목 삭제
|
|
*/
|
|
public function destroy(int $id)
|
|
{
|
|
$this->service->destroy($id);
|
|
|
|
return ApiResponse::success(null, __('message.deleted'));
|
|
}
|
|
|
|
/**
|
|
* 기본 계정과목표 일괄 생성 (더존 표준)
|
|
*/
|
|
public function seedDefaults()
|
|
{
|
|
$count = $this->service->seedDefaults();
|
|
|
|
return ApiResponse::success(
|
|
['inserted_count' => $count],
|
|
__('message.created')
|
|
);
|
|
}
|
|
}
|