feat: enhance agent settlement features and improve data access controls
- Added new section in AGENTS.md detailing learned workspace facts for better understanding of settlement processes. - Updated AgentNodeDestroyController to remove unnecessary checks for admin users. - Enhanced AgentSettlement controllers to assert permissions for finance adjustments and bill operations. - Improved query scopes in AgentSettlement services to ensure proper data access based on admin roles. - Refactored methods in SettlementPartyEnrichment for better bill row enrichment and data handling. - Introduced new methods in AdminAgentSettlementScope for managing agent node visibility and finance adjustments.
This commit is contained in:
@@ -7,6 +7,7 @@ use App\Support\AdminAgentSettlementScope;
|
||||
use App\Support\ApiResponse;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Database\Query\Builder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
final class AgentSettlementAdjustmentIndexController extends Controller
|
||||
@@ -55,6 +56,19 @@ final class AgentSettlementAdjustmentIndexController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
$actorId = AdminAgentSettlementScope::boundAgentNodeId($admin);
|
||||
if ($actorId !== null) {
|
||||
$query->where(function (Builder $outer) use ($admin): void {
|
||||
$outer->whereNull('sa.original_bill_id')
|
||||
->orWhereExists(function (Builder $exists) use ($admin): void {
|
||||
$exists->selectRaw('1')
|
||||
->from('settlement_bills as sb')
|
||||
->whereColumn('sb.id', 'sa.original_bill_id');
|
||||
AdminAgentSettlementScope::applyDirectEdgeScopeToBillsQuery($exists, $admin, 'sb');
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
return ApiResponse::success([
|
||||
'items' => $query->limit(200)->get(),
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user