feat: I-2 거래처 원장 API 구현

- VendorLedgerController: 거래처별 원장 조회 API
- VendorLedgerService: 원장 조회 비즈니스 로직
- Swagger 문서화

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-26 15:46:31 +09:00
parent aca0902c26
commit dced7b7fd3
3 changed files with 662 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
<?php
namespace App\Http\Controllers\Api\V1;
use App\Helpers\ApiResponse;
use App\Http\Controllers\Controller;
use App\Services\VendorLedgerService;
use Illuminate\Http\Request;
class VendorLedgerController extends Controller
{
public function __construct(
private readonly VendorLedgerService $service
) {}
/**
* 거래처원장 목록 (거래처별 매출/수금 집계)
*/
public function index(Request $request)
{
$params = $request->only([
'search',
'start_date',
'end_date',
'sort_by',
'sort_dir',
'per_page',
'page',
]);
$ledger = $this->service->index($params);
return ApiResponse::success($ledger, __('message.fetched'));
}
/**
* 거래처원장 요약 통계
*/
public function summary(Request $request)
{
$params = $request->only([
'start_date',
'end_date',
]);
$summary = $this->service->summary($params);
return ApiResponse::success($summary, __('message.fetched'));
}
/**
* 거래처원장 상세 (거래처별 거래 내역)
*/
public function show(int $clientId, Request $request)
{
$params = $request->only([
'start_date',
'end_date',
]);
$detail = $this->service->show($clientId, $params);
return ApiResponse::success($detail, __('message.fetched'));
}
}