fix handle error and add note for shippings receive approve and reject mutations
This commit is contained in:
@@ -45,21 +45,11 @@ class MutationsController extends Controller
|
||||
return $row->requestedBy->name ?? '-';
|
||||
})
|
||||
->addColumn('status', function($row) {
|
||||
$statusColor = $row->status_color;
|
||||
$statusLabel = $row->status_label;
|
||||
$status = $row->status instanceof MutationStatus ? $row->status : MutationStatus::from($row->status);
|
||||
$textColorClass = $status->textColorClass();
|
||||
$label = $status->label();
|
||||
|
||||
$textColorClass = match($statusColor) {
|
||||
'success' => 'text-success',
|
||||
'warning' => 'text-warning',
|
||||
'danger' => 'text-danger',
|
||||
'info' => 'text-info',
|
||||
'primary' => 'text-primary',
|
||||
'brand' => 'text-primary',
|
||||
'secondary' => 'text-muted',
|
||||
default => 'text-dark'
|
||||
};
|
||||
|
||||
return "<span class=\"font-weight-bold {$textColorClass}\">{$statusLabel}</span>";
|
||||
return "<span class=\"font-weight-bold {$textColorClass}\">{$label}</span>";
|
||||
})
|
||||
->addColumn('total_items', function($row) {
|
||||
return number_format($row->total_items, 0);
|
||||
@@ -91,6 +81,7 @@ class MutationsController extends Controller
|
||||
$request->validate([
|
||||
'from_dealer_id' => 'required|exists:dealers,id',
|
||||
'to_dealer_id' => 'required|exists:dealers,id|different:from_dealer_id',
|
||||
'shipping_notes' => 'nullable|string',
|
||||
'products' => 'required|array|min:1',
|
||||
'products.*.product_id' => 'required|exists:products,id',
|
||||
'products.*.quantity_requested' => 'required|numeric|min:0.01'
|
||||
@@ -102,8 +93,9 @@ class MutationsController extends Controller
|
||||
$mutation = Mutation::create([
|
||||
'from_dealer_id' => $request->from_dealer_id,
|
||||
'to_dealer_id' => $request->to_dealer_id,
|
||||
'status' => 'sent',
|
||||
'requested_by' => auth()->id()
|
||||
'status' => MutationStatus::SENT,
|
||||
'requested_by' => auth()->id(),
|
||||
'shipping_notes' => $request->shipping_notes
|
||||
]);
|
||||
|
||||
// Buat mutation details
|
||||
@@ -134,7 +126,16 @@ class MutationsController extends Controller
|
||||
|
||||
public function show(Mutation $mutation)
|
||||
{
|
||||
$mutation->load(['fromDealer', 'toDealer', 'requestedBy.role', 'approvedBy.role', 'receivedBy.role', 'mutationDetails.product']);
|
||||
$mutation->load([
|
||||
'fromDealer',
|
||||
'toDealer',
|
||||
'requestedBy.role',
|
||||
'approvedBy.role',
|
||||
'receivedBy.role',
|
||||
'rejectedBy.role',
|
||||
'cancelledBy.role',
|
||||
'mutationDetails.product'
|
||||
]);
|
||||
|
||||
return view('warehouse_management.mutations.show', compact('mutation'));
|
||||
}
|
||||
@@ -142,7 +143,7 @@ class MutationsController extends Controller
|
||||
public function receive(Request $request, Mutation $mutation)
|
||||
{
|
||||
$request->validate([
|
||||
'notes' => 'nullable|string',
|
||||
'reception_notes' => 'nullable|string',
|
||||
'products' => 'required|array',
|
||||
'products.*.quantity_approved' => 'required|numeric|min:0',
|
||||
'products.*.notes' => 'nullable|string'
|
||||
@@ -154,11 +155,6 @@ class MutationsController extends Controller
|
||||
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
// Update mutation notes jika ada
|
||||
if ($request->notes) {
|
||||
$mutation->update(['notes' => $request->notes]);
|
||||
}
|
||||
|
||||
// Update product details dengan quantity_approved dan notes
|
||||
if ($request->products) {
|
||||
foreach ($request->products as $detailId => $productData) {
|
||||
@@ -182,8 +178,8 @@ class MutationsController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
// Receive mutation
|
||||
$mutation->receive(auth()->id());
|
||||
// Receive mutation with reception notes
|
||||
$mutation->receive(auth()->id(), $request->reception_notes);
|
||||
|
||||
DB::commit();
|
||||
return redirect()->route('mutations.index')
|
||||
@@ -198,7 +194,7 @@ class MutationsController extends Controller
|
||||
public function approve(Request $request, Mutation $mutation)
|
||||
{
|
||||
$request->validate([
|
||||
'notes' => 'nullable|string'
|
||||
'approval_notes' => 'nullable|string'
|
||||
]);
|
||||
|
||||
if (!$mutation->canBeApproved()) {
|
||||
@@ -207,7 +203,7 @@ class MutationsController extends Controller
|
||||
|
||||
try {
|
||||
// Approve mutation (quantity_approved sudah diisi saat receive)
|
||||
$mutation->approve(auth()->id(), $request->notes);
|
||||
$mutation->approve(auth()->id(), $request->approval_notes);
|
||||
|
||||
return redirect()->route('mutations.index')
|
||||
->with('success', 'Mutasi berhasil disetujui');
|
||||
@@ -255,14 +251,18 @@ class MutationsController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
public function cancel(Mutation $mutation)
|
||||
public function cancel(Request $request, Mutation $mutation)
|
||||
{
|
||||
$request->validate([
|
||||
'cancellation_reason' => 'nullable|string'
|
||||
]);
|
||||
|
||||
if (!$mutation->canBeCancelled()) {
|
||||
return back()->withErrors(['error' => 'Mutasi tidak dapat dibatalkan dalam status saat ini']);
|
||||
}
|
||||
|
||||
try {
|
||||
$mutation->update(['status' => MutationStatus::CANCELLED]);
|
||||
$mutation->cancel(auth()->id(), $request->cancellation_reason);
|
||||
|
||||
return redirect()->route('mutations.index')
|
||||
->with('success', 'Mutasi berhasil dibatalkan');
|
||||
@@ -349,6 +349,8 @@ class MutationsController extends Controller
|
||||
'requestedBy.role',
|
||||
'approvedBy.role',
|
||||
'receivedBy.role',
|
||||
'rejectedBy.role',
|
||||
'cancelledBy.role',
|
||||
'mutationDetails.product'
|
||||
]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user