Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cbb76070d9 | ||
|
|
966f099ffb |
@@ -4,6 +4,21 @@ All notable changes to this project will be documented in this file.
|
|||||||
|
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||||
|
|
||||||
|
## [0.29.3] - 2026-09-30
|
||||||
|
### Fixed
|
||||||
|
- Queued shipping jobs did nothing: `PollShipmentTrackingJob` and
|
||||||
|
`SyncCarrierVouchersJob` ran every time but finished in milliseconds
|
||||||
|
without contacting any carrier. The queue worker clears facade instances
|
||||||
|
before each job, and the Shipping manager was bound with `bind()`, so the
|
||||||
|
facade then built a fresh manager with no drivers registered. It's now a
|
||||||
|
singleton. Tracking from the scheduler never worked on a deployed app
|
||||||
|
because of this (a "Sync now" click worked, since it doesn't go through
|
||||||
|
the queue).
|
||||||
|
- ELTA extra parcels are no longer tracked by their own number: ELTA only
|
||||||
|
tracks a multi-parcel send by its main voucher and rejects the extra
|
||||||
|
parcels' numbers ("Λάθος ΣΥΔΕΤΑ"), which logged an error for each of them
|
||||||
|
on every tracking run.
|
||||||
|
|
||||||
## [0.29.2] - 2026-09-30
|
## [0.29.2] - 2026-09-30
|
||||||
### Added
|
### Added
|
||||||
- `core.display_timezone` (env `DISPLAY_TIMEZONE`, default `Europe/Athens`):
|
- `core.display_timezone` (env `DISPLAY_TIMEZONE`, default `Europe/Athens`):
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
"name": "boboko/core",
|
"name": "boboko/core",
|
||||||
"description": "Core module — authentication and shared panel behaviour",
|
"description": "Core module — authentication and shared panel behaviour",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"version": "0.29.2",
|
"version": "0.29.3",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"Modules\\Core\\": "src/"
|
"Modules\\Core\\": "src/"
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@boboko/core",
|
"name": "@boboko/core",
|
||||||
"version": "0.29.2",
|
"version": "0.29.3",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "Portable Stimulus controllers and styles for boboko-core's cart + checkout module. Installed as a real npm dependency (file:../boboko-core in dev, a tagged git install in prod) so a consuming app's `npm install` resolves this package's own dependencies (leaflet, @hotwired/stimulus) transitively, the same way `composer update boboko/*` does for PHP. See CONTRIBUTE.md's \"JS/CSS: a real npm package\" section.",
|
"description": "Portable Stimulus controllers and styles for boboko-core's cart + checkout module. Installed as a real npm dependency (file:../boboko-core in dev, a tagged git install in prod) so a consuming app's `npm install` resolves this package's own dependencies (leaflet, @hotwired/stimulus) transitively, the same way `composer update boboko/*` does for PHP. See CONTRIBUTE.md's \"JS/CSS: a real npm package\" section.",
|
||||||
|
|||||||
@@ -154,7 +154,13 @@ class ShippingServiceProvider extends ServiceProvider
|
|||||||
// run before the Shipping::extend() calls below, which resolve —
|
// run before the Shipping::extend() calls below, which resolve —
|
||||||
// and the facade then CACHES — whatever's bound at that moment).
|
// and the facade then CACHES — whatever's bound at that moment).
|
||||||
$this->app->booted(function () {
|
$this->app->booted(function () {
|
||||||
$this->app->bind(ShippingMethodManagerInterface::class, fn ($app) => $app->make(ShippingManager::class));
|
// A singleton, not bind(): the queue worker clears every
|
||||||
|
// facade's cached instance before each job
|
||||||
|
// (Facade::clearResolvedInstances()), so with bind() the Shipping
|
||||||
|
// facade then built a fresh, empty manager — without the drivers
|
||||||
|
// extended below — and every queued job (tracking, voucher sync)
|
||||||
|
// saw no carriers at all.
|
||||||
|
$this->app->singleton(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('box-now', fn ($app) => $app->make(BoxNowRateDriver::class));
|
||||||
|
|||||||
@@ -278,6 +278,13 @@ class EltaFulfillmentService implements CarrierFulfillmentInterface, IssuesVouch
|
|||||||
|
|
||||||
public function trackShipment(Shipment $shipment): Collection
|
public function trackShipment(Shipment $shipment): Collection
|
||||||
{
|
{
|
||||||
|
// ELTA tracks a multi-parcel send by its main voucher only — an
|
||||||
|
// extra parcel's own number is rejected ("Λάθος ΣΥΔΕΤΑ"). Its
|
||||||
|
// history is the main voucher's, which is tracked on its own row.
|
||||||
|
if (! $shipment->is($this->masterOf($shipment))) {
|
||||||
|
return collect();
|
||||||
|
}
|
||||||
|
|
||||||
$response = $this->client->getTracking([
|
$response = $this->client->getTracking([
|
||||||
'web_vg' => $shipment->tracking_reference,
|
'web_vg' => $shipment->tracking_reference,
|
||||||
'pel_code' => config('elta.apost_code'),
|
'pel_code' => config('elta.apost_code'),
|
||||||
|
|||||||
Reference in New Issue
Block a user