remove status pending and complete

This commit is contained in:
2025-06-15 02:29:26 +07:00
parent 3fb598ae4d
commit 9cfb566aee
13 changed files with 666 additions and 236 deletions

View File

@@ -16,7 +16,7 @@ return new class extends Migration
DB::table('mutation_details')
->join('mutations', 'mutations.id', '=', 'mutation_details.mutation_id')
->where('mutation_details.quantity_approved', 0)
->whereNotIn('mutations.status', ['approved', 'completed', 'rejected'])
->whereNotIn('mutations.status', ['approved', 'rejected'])
->update(['mutation_details.quantity_approved' => null]);
Schema::table('mutation_details', function (Blueprint $table) {

View File

@@ -40,6 +40,9 @@ class AddAdditionalNotesAndRejectionFieldsToMutationsTable extends Migration
public function down()
{
Schema::table('mutations', function (Blueprint $table) {
$table->dropForeign(['rejected_by']);
$table->dropForeign(['cancelled_by']);
// Remove new fields
$table->dropColumn([
'reception_notes',

View File

@@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\DB;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
// First, update any existing records that might have 'pending' or 'completed' status
DB::table('mutations')
->where('status', 'pending')
->update(['status' => 'sent']);
DB::table('mutations')
->where('status', 'completed')
->update(['status' => 'approved']);
// Then update the enum column to remove 'pending' and 'completed'
DB::statement("ALTER TABLE mutations MODIFY COLUMN status ENUM('sent', 'received', 'approved', 'rejected', 'cancelled') DEFAULT 'sent'");
}
/**
* Reverse the migrations.
*/
public function down(): void
{
// Restore the original enum with 'pending' and 'completed'
DB::statement("ALTER TABLE mutations MODIFY COLUMN status ENUM('pending', 'sent', 'received', 'approved', 'rejected', 'completed', 'cancelled') DEFAULT 'sent'");
}
};

View File

@@ -0,0 +1,50 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\DB;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
// Clean up existing data and update status enum without touching old migrations
// First backup existing data (optional)
// DB::statement("CREATE TABLE mutations_backup AS SELECT * FROM mutations");
// Update existing 'pending' status to 'sent'
DB::table('mutations')
->where('status', 'pending')
->update(['status' => 'sent']);
// Update existing 'completed' status to 'approved'
DB::table('mutations')
->where('status', 'completed')
->update(['status' => 'approved']);
// Update the enum to only include valid statuses
DB::statement("ALTER TABLE mutations MODIFY COLUMN status ENUM('sent', 'received', 'approved', 'rejected', 'cancelled') DEFAULT 'sent'");
// Update any orphaned mutation_details that reference completed status
DB::statement("
UPDATE mutation_details md
JOIN mutations m ON md.mutation_id = m.id
SET md.quantity_approved = md.quantity_requested
WHERE m.status = 'approved' AND md.quantity_approved IS NULL
");
}
/**
* Reverse the migrations.
*/
public function down(): void
{
// Restore original enum (if needed)
DB::statement("ALTER TABLE mutations MODIFY COLUMN status ENUM('pending', 'sent', 'received', 'approved', 'rejected', 'completed', 'cancelled') DEFAULT 'sent'");
}
};

View File

@@ -99,18 +99,18 @@ class MutationTestSeeder extends Seeder
'notes' => 'Produk approved parsial'
]);
// 4. Mutation dengan status COMPLETED (selesai)
$this->command->info('Creating COMPLETED mutation...');
// 4. Additional APPROVED mutation (completed workflow is now just approved)
$this->command->info('Creating additional APPROVED mutation...');
$mutation4 = Mutation::create([
'from_dealer_id' => $dealers[0]->id,
'to_dealer_id' => $dealers[1]->id,
'status' => MutationStatus::COMPLETED,
'status' => MutationStatus::APPROVED,
'requested_by' => $users[0]->id,
'received_by' => $users[1]->id ?? $users[0]->id,
'received_at' => now()->subDay(),
'approved_by' => $users[0]->id,
'approved_at' => now()->subHours(6),
'notes' => 'Mutasi test - status COMPLETED'
'notes' => 'Mutasi test - status APPROVED (stock moved)'
]);
MutationDetail::create([
@@ -118,7 +118,7 @@ class MutationTestSeeder extends Seeder
'product_id' => $products[1]->id,
'quantity_requested' => 6.00,
'quantity_approved' => 6.00,
'notes' => 'Produk completed'
'notes' => 'Produk approved & stock moved'
]);
// 5. Mutation dengan status REJECTED
@@ -147,8 +147,8 @@ class MutationTestSeeder extends Seeder
$this->command->info('Test mutations created successfully!');
$this->command->info('- Mutation SENT: ' . $mutation1->mutation_number);
$this->command->info('- Mutation RECEIVED: ' . $mutation2->mutation_number);
$this->command->info('- Mutation APPROVED: ' . $mutation3->mutation_number);
$this->command->info('- Mutation COMPLETED: ' . $mutation4->mutation_number);
$this->command->info('- Mutation APPROVED (1): ' . $mutation3->mutation_number);
$this->command->info('- Mutation APPROVED (2): ' . $mutation4->mutation_number);
$this->command->info('- Mutation REJECTED: ' . $mutation5->mutation_number);
} catch (\Exception $e) {