,
This commit is contained in:
@@ -11,13 +11,44 @@ use Illuminate\Support\Facades\DB;
|
||||
|
||||
class SaleController extends Controller
|
||||
{
|
||||
public function index()
|
||||
public function index(Request $request)
|
||||
{
|
||||
$sales = Sale::with('client')
|
||||
->orderBy('created_at', 'desc')
|
||||
->paginate(15);
|
||||
// Recuperar filtros
|
||||
$search = $request->input('search'); // Búsqueda por ID
|
||||
$clientId = $request->input('client_id'); // Filtro Cliente
|
||||
$dateFrom = $request->input('date_from'); // Fecha Desde
|
||||
$dateTo = $request->input('date_to'); // Fecha Hasta
|
||||
|
||||
return view('sales.index', compact('sales'));
|
||||
// Query principal
|
||||
$sales = Sale::query()
|
||||
->with(['client', 'details'])
|
||||
|
||||
// 1. Filtro por ID de venta (si escriben en el buscador texto)
|
||||
->when($search, function ($query, $search) {
|
||||
return $query->where('id', 'like', "%{$search}%");
|
||||
})
|
||||
|
||||
// 2. Filtro por Cliente (Select2)
|
||||
->when($clientId, function ($query, $clientId) {
|
||||
return $query->where('client_id', $clientId);
|
||||
})
|
||||
|
||||
// 3. Filtro por Rango de Fechas
|
||||
->when($dateFrom, function ($query, $dateFrom) {
|
||||
return $query->whereDate('created_at', '>=', $dateFrom);
|
||||
})
|
||||
->when($dateTo, function ($query, $dateTo) {
|
||||
return $query->whereDate('created_at', '<=', $dateTo);
|
||||
})
|
||||
|
||||
->latest() // Ordenar por fecha descendente
|
||||
->paginate(10)
|
||||
->withQueryString(); // Mantener filtros al cambiar de página
|
||||
|
||||
// Traemos clientes para el select del filtro (solo id y nombre para optimizar)
|
||||
$clients = Client::orderBy('name')->get(['id', 'name']);
|
||||
|
||||
return view('sales.index', compact('sales', 'clients'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
|
||||
Reference in New Issue
Block a user