|
|
@@ -3,6 +3,7 @@
|
|
|
namespace Tests\Feature;
|
|
|
|
|
|
use App\Jobs\GenerateInstallationPack;
|
|
|
+use App\Jobs\GenerateTtnPack;
|
|
|
use App\Models\Dictionary\Area;
|
|
|
use App\Models\Dictionary\District;
|
|
|
use App\Models\File;
|
|
|
@@ -13,6 +14,8 @@ use App\Models\OrderStatus;
|
|
|
use App\Models\Product;
|
|
|
use App\Models\ProductSKU;
|
|
|
use App\Models\Role;
|
|
|
+use App\Models\Setting;
|
|
|
+use App\Models\Ttn;
|
|
|
use App\Models\User;
|
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
|
use Illuminate\Http\UploadedFile;
|
|
|
@@ -879,6 +882,47 @@ class OrderControllerTest extends TestCase
|
|
|
Bus::assertNotDispatched(GenerateInstallationPack::class);
|
|
|
}
|
|
|
|
|
|
+ public function test_admin_can_create_ttn_with_departure_date_and_increment_counter(): void
|
|
|
+ {
|
|
|
+ Bus::fake();
|
|
|
+
|
|
|
+ Setting::set(Setting::KEY_TTN_NEXT_NUMBER, 10);
|
|
|
+
|
|
|
+ $product = Product::factory()->create();
|
|
|
+ $order = Order::factory()->create([
|
|
|
+ 'installation_date' => '2026-04-15',
|
|
|
+ ]);
|
|
|
+ $sku = ProductSKU::factory()->create([
|
|
|
+ 'order_id' => $order->id,
|
|
|
+ 'product_id' => $product->id,
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $response = $this->actingAs($this->adminUser)
|
|
|
+ ->post(route('order.create-ttn'), [
|
|
|
+ 'order_number' => 'З-100',
|
|
|
+ 'order_date' => '2026-04-07',
|
|
|
+ 'departure_date' => '2026-04-08',
|
|
|
+ 'order_sum' => '150000',
|
|
|
+ 'skus' => [$sku->id],
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $response->assertRedirect();
|
|
|
+ $response->assertSessionHas('success');
|
|
|
+
|
|
|
+ $this->assertDatabaseHas('ttns', [
|
|
|
+ 'ttn_number' => 10,
|
|
|
+ 'order_number' => 'З-100',
|
|
|
+ 'order_date' => '2026-04-07',
|
|
|
+ 'departure_date' => '2026-04-08',
|
|
|
+ 'order_sum' => '150000',
|
|
|
+ ]);
|
|
|
+ $this->assertSame(11, Setting::getInt(Setting::KEY_TTN_NEXT_NUMBER));
|
|
|
+
|
|
|
+ $ttn = Ttn::query()->where('ttn_number', 10)->firstOrFail();
|
|
|
+ $this->assertSame([(string) $sku->id], array_map('strval', json_decode($ttn->skus, true)));
|
|
|
+ Bus::assertDispatched(GenerateTtnPack::class);
|
|
|
+ }
|
|
|
+
|
|
|
// ==================== Export ====================
|
|
|
|
|
|
public function test_can_export_orders(): void
|