diff --git a/composer.json b/composer.json index 01a56e0..37bbfc5 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ "require": { "php": "^8.3", "bolechen/nova-activitylog": "^0.5.0", - "justbetter/laravel-magento-stock": "^2.0", + "justbetter/laravel-magento-stock": "^2.3.4", "laravel/framework": "^11.0|^12.0", "laravel/nova": "^5.0" }, diff --git a/src/Nova/Actions/RetrieveAll.php b/src/Nova/Actions/RetrieveAll.php index 2456d6f..1417609 100644 --- a/src/Nova/Actions/RetrieveAll.php +++ b/src/Nova/Actions/RetrieveAll.php @@ -5,11 +5,15 @@ use Illuminate\Bus\Queueable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Carbon; use Illuminate\Support\Collection; use JustBetter\MagentoStock\Jobs\Retrieval\RetrieveAllStockJob; use Laravel\Nova\Actions\Action; use Laravel\Nova\Actions\ActionResponse; use Laravel\Nova\Fields\ActionFields; +use Laravel\Nova\Fields\Boolean; +use Laravel\Nova\Fields\DateTime; +use Laravel\Nova\Http\Requests\NovaRequest; class RetrieveAll extends Action { @@ -26,8 +30,30 @@ public function __construct() public function handle(ActionFields $fields, Collection $models): ActionResponse { - RetrieveAllStockJob::dispatch(); + /** @var ?string $from */ + $from = $fields->get('from'); + + if ($from !== null) { + $carbon = Carbon::parse($from); + } + + /** @var bool $defer */ + $defer = $fields->get('defer'); + + RetrieveAllStockJob::dispatch($carbon ?? null, $defer); return ActionResponse::message(__('Retrieving...')); } + + public function fields(NovaRequest $request): array + { + return [ + DateTime::make(__('From'), 'from') + ->help(__('Optional, retrieve updated prices from this date')), + + Boolean::make(__('Defer'), 'defer') + ->default(true) + ->help(__('When enabled, the stocks will be marked for retrieval. Otherwise, all stocks will be retrieved immediately.')), + ]; + } }