diff --git a/services/nginx/app/modules/selfserve/traits/selfserve_lane_command_t.php b/services/nginx/app/modules/selfserve/traits/selfserve_lane_command_t.php index 5f8b9edc..41a2b52d 100644 --- a/services/nginx/app/modules/selfserve/traits/selfserve_lane_command_t.php +++ b/services/nginx/app/modules/selfserve/traits/selfserve_lane_command_t.php @@ -217,7 +217,19 @@ trait selfserve_lane_command_t } try { - return (new selfserve_wash_flow())->isMachineAllowedToStartWash((int)$this->id); + $reg = method_exists($this, 'getLicensePlate') ? trim((string)$this->getLicensePlate()) : ''; + if ($reg === '') { + return false; + } + + $customerNumber = method_exists($this, 'getCustomerNumber') ? (int)$this->getCustomerNumber() : null; + $snapshot = (new selfserve_wash_flow())->previewVehicleEligibility( + (int)$this->id, + $reg, + $customerNumber !== null && $customerNumber > 0 ? $customerNumber : null + ); + + return (bool)($snapshot['allowed'] ?? false); } catch (\Throwable) { return false; } @@ -324,6 +336,7 @@ trait selfserve_lane_command_t protected function runRelaySideEffectsForWashStart(selfserve_lane_command_arguments $arguments): void { if ($arguments->defer_relay_side_effects) { + $this->setProgramPickerRelayStatusForWashStart(); return; } diff --git a/services/nginx/app/tests/Unit/Selfserve/SelfserveLaneStartEntranceTimeoutTest.php b/services/nginx/app/tests/Unit/Selfserve/SelfserveLaneStartEntranceTimeoutTest.php index 10ef5cab..6826e18a 100644 --- a/services/nginx/app/tests/Unit/Selfserve/SelfserveLaneStartEntranceTimeoutTest.php +++ b/services/nginx/app/tests/Unit/Selfserve/SelfserveLaneStartEntranceTimeoutTest.php @@ -109,15 +109,17 @@ it('parses deferred relay side effects on start command arguments', function (): expect($arguments->defer_relay_side_effects)->toBeTrue(); }); -it('skips cleaner, program picker and machine relay side effects when start asks to defer them', function (): void { +it('syncs only the program picker relay when start asks to defer machine side effects', function (): void { $lane = new SelfserveLaneStartEntranceTimeoutHarness(); $lane->runStartRelaySideEffects(true); expect($lane->cleanerRelayCalls)->toBe(0); - expect($lane->programPickerRelayCalls)->toBe(0); + expect($lane->programPickerRelayCalls)->toBe(1); expect($lane->machineRelayCalls)->toBe(0); - expect($lane->relayEvents)->toBe([]); + expect($lane->relayEvents)->toBe([ + 'program_picker:sync', + ]); }); it('keeps cleaner, program picker and machine relay side effects in order for normal start commands', function (): void {