| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- <?php
- namespace App\Observers;
- use App\Models\SparePartOrder;
- use App\Services\ShortageService;
- /**
- * Observer для автоматической обработки дефицитов при изменении статуса партии.
- *
- * Согласно спецификации п.5: "При создании PartOrder система ищет открытые Shortage
- * по part_id + with_documents и резервирует под них."
- */
- class SparePartOrderObserver
- {
- public function __construct(
- private readonly ShortageService $shortageService
- ) {}
- /**
- * При обновлении партии — проверяем смену статуса на in_stock
- */
- public function updated(SparePartOrder $order): void
- {
- // Проверяем, изменился ли статус на in_stock
- if ($order->wasChanged('status') &&
- $order->status === SparePartOrder::STATUS_IN_STOCK) {
- $this->shortageService->processPartOrderReceipt($order);
- }
- }
- /**
- * При создании партии со статусом in_stock — сразу обрабатываем дефициты
- */
- public function created(SparePartOrder $order): void
- {
- if ($order->status === SparePartOrder::STATUS_IN_STOCK) {
- $this->shortageService->processPartOrderReceipt($order);
- }
- }
- }
|