Browse Source

Fix spare part order stock receipt action

Alexander Musikhin 4 days ago
parent
commit
935026429e

+ 4 - 0
AGENTS.md

@@ -17,6 +17,10 @@ Stroyprofit CRM is a Laravel 11 application for managing orders of building stru
 - **Documents:** PHPSpreadsheet (Excel templates in /templates/)
 - **DevOps:** Docker Compose + Nginx + PHP-FPM
 
+## Development Notes
+- Tests, Artisan commands, and related project checks should be run inside containers.
+- Preferred commands: `make test` for tests and `docker compose exec app ...` for ad-hoc commands inside the application container.
+
 ## Project Structure
 ```
 strprfcrm/

+ 3 - 0
CLAUDE.md

@@ -16,6 +16,9 @@ make install              # Полная установка с миграция
 make application          # Bash в контейнер приложения
 ```
 
+Все тесты, `artisan`-команды и прочие проектные проверки запускать внутри контейнера.
+Предпочтительно использовать `make test`, а для точечных команд `docker compose exec app ...`.
+
 ### База данных
 ```bash
 make db-migrate           # Применить миграции

+ 7 - 4
resources/views/spare_part_orders/edit.blade.php

@@ -101,10 +101,7 @@
                     <a href="{{ $previous_url ?? route('spare_part_orders.index') }}" class="btn btn-sm btn-secondary">Назад</a>
 
                     @if($spare_part_order && $spare_part_order->status === 'ordered' && hasRole('admin,manager'))
-                        <form action="{{ route('spare_part_orders.set_in_stock', $spare_part_order) }}" method="POST" class="d-inline">
-                            @csrf
-                            <button type="submit" class="btn btn-sm btn-info">Поступило на склад</button>
-                        </form>
+                        <button type="submit" class="btn btn-sm btn-info" form="set-in-stock-form">Поступило на склад</button>
                     @endif
 
                     @if($spare_part_order && hasRole('admin'))
@@ -218,6 +215,12 @@
     </div>
 </div>
 
+@if($spare_part_order && $spare_part_order->status === 'ordered' && hasRole('admin,manager'))
+    <form id="set-in-stock-form" action="{{ route('spare_part_orders.set_in_stock', $spare_part_order) }}" method="POST" class="d-none">
+        @csrf
+    </form>
+@endif
+
 @if($spare_part_order && hasRole('admin,manager'))
     {{-- Модальное окно отгрузки --}}
     <div class="modal fade" id="shipModal" tabindex="-1" aria-labelledby="shipModalLabel" aria-hidden="true">

+ 13 - 0
tests/Feature/SparePartOrderControllerTest.php

@@ -124,6 +124,19 @@ class SparePartOrderControllerTest extends TestCase
         $response->assertViewIs('spare_part_orders.edit');
     }
 
+    public function test_ordered_spare_part_order_page_renders_set_in_stock_button_with_separate_form(): void
+    {
+        $sparePartOrder = SparePartOrder::factory()->ordered()->create();
+
+        $response = $this->actingAs($this->managerUser)
+            ->get(route('spare_part_orders.show', $sparePartOrder));
+
+        $response->assertStatus(200);
+        $response->assertSee('form="set-in-stock-form"', false);
+        $response->assertSee('id="set-in-stock-form"', false);
+        $response->assertSee(route('spare_part_orders.set_in_stock', $sparePartOrder), false);
+    }
+
     public function test_guest_cannot_view_spare_part_order(): void
     {
         $sparePartOrder = SparePartOrder::factory()->create();