Feat: Shipping functionalities redesign, elta courier integration, commenting out acs since no integration can happen, flow updates
This commit is contained in:
@@ -4,9 +4,13 @@ namespace Modules\Core\Providers;
|
||||
|
||||
use Illuminate\Console\Scheduling\Schedule as ConsoleSchedule;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Modules\Core\Shipping\ActivityLog\ShipmentCheckpointRender;
|
||||
use Modules\Core\Shipping\Events\ShipmentStatusUpdatedByCarrier;
|
||||
use Modules\Core\Shipping\Listeners\LogShipmentCheckpointOnOrderTimeline;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Livewire\Livewire;
|
||||
use Livewire\Mechanisms\ComponentRegistry;
|
||||
use Lunar\Admin\Support\ActivityLog\Manifest as ActivityLogManifest;
|
||||
use Lunar\Models\Order;
|
||||
use Lunar\Shipping\Facades\Shipping;
|
||||
use Lunar\Shipping\Filament\Resources\ShippingZoneResource\Pages\ManageShippingRates as VendorManageShippingRates;
|
||||
@@ -29,8 +33,11 @@ use Modules\Core\Shipping\Carriers\Elta\EltaFulfillmentService;
|
||||
use Modules\Core\Shipping\Carriers\Elta\EltaRateDriver;
|
||||
use Modules\Core\Shipping\Contracts\CarrierFulfillmentInterface;
|
||||
use Modules\Core\Shipping\Filament\Pages\ManageShippingRates;
|
||||
use Modules\Core\Shipping\Carriers\Manual\ManualFulfillmentService;
|
||||
use Modules\Core\Shipping\Carriers\Manual\ManualRateDriver;
|
||||
use Modules\Core\Shipping\Carriers\StorePickup\StorePickupRateDriver;
|
||||
use Modules\Core\Shipping\Jobs\PollShipmentTrackingJob;
|
||||
use Modules\Core\Shipping\Jobs\SyncCarrierVouchersJob;
|
||||
use Modules\Core\Shipping\Listeners\InvalidateShippingOptions;
|
||||
use Modules\Core\Shipping\Support\FulfillmentType;
|
||||
use Modules\Core\Shipping\Support\ShippingManager;
|
||||
@@ -53,6 +60,7 @@ class ShippingServiceProvider extends ServiceProvider
|
||||
'acs' => $app->make(AcsFulfillmentService::class),
|
||||
'box-now' => $app->make(BoxNowFulfillmentService::class),
|
||||
'elta' => $app->make(EltaFulfillmentService::class),
|
||||
'manual' => $app->make(ManualFulfillmentService::class),
|
||||
default => null,
|
||||
};
|
||||
});
|
||||
@@ -70,6 +78,13 @@ class ShippingServiceProvider extends ServiceProvider
|
||||
|
||||
public function boot(): void
|
||||
{
|
||||
// Carrier checkpoints on the order page's Timeline.
|
||||
Event::listen(ShipmentStatusUpdatedByCarrier::class, LogShipmentCheckpointOnOrderTimeline::class);
|
||||
// Added when Lunar's manifest is built, not now: resolving it during
|
||||
// boot builds it before the morph map exists, which keys every
|
||||
// renderer (Lunar's own too) under a name the Timeline never looks up.
|
||||
$this->app->afterResolving('lunar-activity-log', fn (ActivityLogManifest $manifest) => $manifest->addRender(Order::class, ShipmentCheckpointRender::class));
|
||||
|
||||
$this->publishes([
|
||||
__DIR__ . '/../../config/shippingCarriers/acs.php' => config_path('shippingCarriers/acs.php'),
|
||||
__DIR__ . '/../../config/shippingCarriers/boxnow.php' => config_path('shippingCarriers/boxnow.php'),
|
||||
@@ -141,18 +156,23 @@ class ShippingServiceProvider extends ServiceProvider
|
||||
$this->app->booted(function () {
|
||||
$this->app->bind(ShippingMethodManagerInterface::class, fn ($app) => $app->make(ShippingManager::class));
|
||||
|
||||
Shipping::extend('acs', fn ($app) => $app->make(AcsRateDriver::class));
|
||||
// Shipping::extend('acs', fn ($app) => $app->make(AcsRateDriver::class));
|
||||
Shipping::extend('box-now', fn ($app) => $app->make(BoxNowRateDriver::class));
|
||||
Shipping::extend('store-pickup', fn ($app) => $app->make(StorePickupRateDriver::class));
|
||||
Shipping::extend('elta', fn ($app) => $app->make(EltaRateDriver::class));
|
||||
Shipping::extend('manual', fn ($app) => $app->make(ManualRateDriver::class));
|
||||
|
||||
$this->app->make(ConsoleSchedule::class)
|
||||
->job(new WarmAcsAreaCacheJob)
|
||||
->dailyAt('06:00')
|
||||
->when(fn () => ShippingMethod::where('driver', 'acs')->exists());
|
||||
// $this->app->make(ConsoleSchedule::class)
|
||||
// ->job(new WarmAcsAreaCacheJob)
|
||||
// ->dailyAt('06:00')
|
||||
// ->when(fn () => ShippingMethod::where('driver', 'acs')->exists());
|
||||
|
||||
$this->app->make(ConsoleSchedule::class)
|
||||
->job(new PollShipmentTrackingJob)
|
||||
->everyFiveMinutes();
|
||||
|
||||
$this->app->make(ConsoleSchedule::class)
|
||||
->job(new SyncCarrierVouchersJob)
|
||||
->everyThirtyMinutes();
|
||||
|
||||
$this->overrideRatesPageLivewireComponent();
|
||||
|
||||
Reference in New Issue
Block a user