lotteryAdmin(); abort_if($admin === null, 401); abort_if(! AdminAgentSettlementScope::billAccessible($admin, $settlement_bill), 404); $before = DB::table('settlement_bills')->where('id', $settlement_bill)->first(); abort_if($before === null, 404); $validated = $request->validated(); $payments->recordPayment( $settlement_bill, (int) $validated['amount'], (int) $admin->id, [ 'method' => $validated['method'] ?? null, 'proof' => $validated['proof'] ?? null, 'remark' => $validated['remark'] ?? null, ], ); $after = DB::table('settlement_bills')->where('id', $settlement_bill)->first(); AuditLogger::recordForAdmin( $admin, $request, moduleCode: 'settlement', actionCode: 'settlement_bill.payment', targetType: 'settlement_bill', targetId: (string) $settlement_bill, beforeJson: (array) $before, afterJson: (array) $after, ); $request->attributes->set(RecordAdminApiAudit::ATTRIBUTE_AUDIT_RECORDED, true); return ApiResponse::success(['bill' => $after]); } }