add filter date and dealer on mutations and opnames

This commit is contained in:
2025-06-19 16:45:41 +07:00
parent b803068d0e
commit 22477b6dab
9 changed files with 1275 additions and 146 deletions

View File

@@ -18,20 +18,13 @@ class MutationsController extends Controller
public function index(Request $request)
{
$menu = Menu::where('link','mutations.index')->first();
$dealers = Dealer::all();
if ($request->ajax()) {
Log::info('Mutations DataTables request', [
'order' => $request->get('order'),
'columns' => $request->get('columns'),
'user_id' => auth()->id()
]);
// Use a more specific query to avoid join conflicts
$data = Mutation::query()
->with(['fromDealer', 'toDealer', 'requestedBy.role', 'approvedBy.role', 'receivedBy.role'])
->select([
'mutations.*'
]); // Remove default ordering to let DataTables handle it
->select(['mutations.*']);
// Filter berdasarkan dealer jika user bukan admin
if (auth()->user()->dealer_id) {
@@ -40,6 +33,35 @@ class MutationsController extends Controller
->orWhere('to_dealer_id', auth()->user()->dealer_id);
});
}
// Filter berdasarkan dealer yang dipilih
if ($request->filled('dealer_filter')) {
$data->where(function($query) use ($request) {
$query->where('from_dealer_id', $request->dealer_filter)
->orWhere('to_dealer_id', $request->dealer_filter);
});
}
// Filter berdasarkan tanggal
if ($request->filled('date_from')) {
try {
$dateFrom = \Carbon\Carbon::parse($request->date_from)->format('Y-m-d');
$data->whereDate('mutations.created_at', '>=', $dateFrom);
} catch (\Exception $e) {
// Fallback to original format
$data->whereDate('mutations.created_at', '>=', $request->date_from);
}
}
if ($request->filled('date_to')) {
try {
$dateTo = \Carbon\Carbon::parse($request->date_to)->format('Y-m-d');
$data->whereDate('mutations.created_at', '<=', $dateTo);
} catch (\Exception $e) {
// Fallback to original format
$data->whereDate('mutations.created_at', '<=', $request->date_to);
}
}
return DataTables::of($data)
->addIndexColumn()
@@ -134,7 +156,7 @@ class MutationsController extends Controller
->make(true);
}
return view('warehouse_management.mutations.index', compact('menu'));
return view('warehouse_management.mutations.index', compact('menu', 'dealers'));
}
public function create()