only([ 'search', 'bill_type', 'status', 'client_id', 'is_electronic', 'issue_start_date', 'issue_end_date', 'maturity_start_date', 'maturity_end_date', 'sort_by', 'sort_dir', 'per_page', 'page', ]); $bills = $this->service->index($params); return ApiResponse::success($bills, __('message.fetched')); } /** * 어음 등록 */ public function store(StoreBillRequest $request) { $bill = $this->service->store($request->validated()); return ApiResponse::success($bill, __('message.created'), [], 201); } /** * 어음 상세 */ public function show(int $id) { $bill = $this->service->show($id); return ApiResponse::success($bill, __('message.fetched')); } /** * 어음 수정 */ public function update(int $id, UpdateBillRequest $request) { $bill = $this->service->update($id, $request->validated()); return ApiResponse::success($bill, __('message.updated')); } /** * 어음 삭제 */ public function destroy(int $id) { $this->service->destroy($id); return ApiResponse::success(null, __('message.deleted')); } /** * 어음 상태 변경 */ public function updateStatus(int $id, UpdateBillStatusRequest $request) { $bill = $this->service->updateStatus($id, $request->validated()['status']); return ApiResponse::success($bill, __('message.updated')); } /** * 어음 요약 (기간별 합계) */ public function summary(Request $request) { $params = $request->only([ 'bill_type', 'issue_start_date', 'issue_end_date', 'maturity_start_date', 'maturity_end_date', ]); $summary = $this->service->summary($params); return ApiResponse::success($summary, __('message.fetched')); } }