fix handle error and add note for shippings receive approve and reject mutations

This commit is contained in:
2025-06-13 14:19:12 +07:00
parent b2bfd666a7
commit 2f5eff9e63
28 changed files with 13055 additions and 154 deletions

View File

@@ -20,16 +20,25 @@ class Mutation extends Model
'requested_by',
'approved_by',
'approved_at',
'approval_notes',
'received_by',
'received_at',
'notes',
'rejection_reason'
'reception_notes',
'shipping_notes',
'rejection_reason',
'rejected_by',
'rejected_at',
'cancelled_by',
'cancelled_at',
'cancellation_reason'
];
protected $casts = [
'status' => MutationStatus::class,
'approved_at' => 'datetime',
'received_at' => 'datetime'
'received_at' => 'datetime',
'rejected_at' => 'datetime',
'cancelled_at' => 'datetime'
];
protected static function booted()
@@ -66,6 +75,16 @@ class Mutation extends Model
return $this->belongsTo(User::class, 'received_by');
}
public function rejectedBy()
{
return $this->belongsTo(User::class, 'rejected_by');
}
public function cancelledBy()
{
return $this->belongsTo(User::class, 'cancelled_by');
}
public function mutationDetails()
{
return $this->hasMany(MutationDetail::class);
@@ -137,7 +156,7 @@ class Mutation extends Model
}
// Receive mutation by destination dealer
public function receive($userId)
public function receive($userId, $receptionNotes = null)
{
if (!$this->canBeReceived()) {
throw new \Exception('Mutasi tidak dapat diterima dalam status saat ini');
@@ -146,14 +165,15 @@ class Mutation extends Model
$this->update([
'status' => MutationStatus::RECEIVED,
'received_by' => $userId,
'received_at' => now()
'received_at' => now(),
'reception_notes' => $receptionNotes
]);
return $this;
}
// Approve mutation
public function approve($userId, $notes = null)
public function approve($userId, $approvalNotes = null)
{
if (!$this->canBeApproved()) {
throw new \Exception('Mutasi tidak dapat disetujui dalam status saat ini');
@@ -163,7 +183,7 @@ class Mutation extends Model
'status' => MutationStatus::APPROVED,
'approved_by' => $userId,
'approved_at' => now(),
'notes' => $notes
'approval_notes' => $approvalNotes
]);
return $this;
@@ -178,14 +198,31 @@ class Mutation extends Model
$this->update([
'status' => MutationStatus::REJECTED,
'approved_by' => $userId,
'approved_at' => now(),
'rejected_by' => $userId,
'rejected_at' => now(),
'rejection_reason' => $rejectionReason
]);
return $this;
}
// Cancel mutation
public function cancel($userId, $cancellationReason = null)
{
if (!$this->canBeCancelled()) {
throw new \Exception('Mutasi tidak dapat dibatalkan dalam status saat ini');
}
$this->update([
'status' => MutationStatus::CANCELLED,
'cancelled_by' => $userId,
'cancelled_at' => now(),
'cancellation_reason' => $cancellationReason
]);
return $this;
}
// Complete mutation (actually move the stock)
public function complete()
{