diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 151facd..260ba56 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -13,6 +13,7 @@ jobs: php: - '8.1' - '8.2' + - '8.3' steps: - uses: actions/checkout@v2 with: diff --git a/src/Definitions/Attribute.php b/src/Definitions/Attribute.php index 9e634dc..1844189 100644 --- a/src/Definitions/Attribute.php +++ b/src/Definitions/Attribute.php @@ -873,7 +873,7 @@ final class Attribute extends BaseEnum public const CONTENT_PRODUCE_CODE = 'content_produce_code'; /** - * dentifikační číslo plátce přepravy + * Identifikační číslo plátce přepravy */ public const SHIPPER_VAT = 'shipper_vat'; @@ -917,6 +917,11 @@ final class Attribute extends BaseEnum */ public const EU_EORI = 'eu_eori'; + /** + * Číslo účtu odesilatele + */ + public const SHIPPER_ACCOUNT_NUMBER = 'shipper_account_number'; + /** * @deprecated */ diff --git a/src/Definitions/Service.php b/src/Definitions/Service.php index ff53e89..183cb57 100644 --- a/src/Definitions/Service.php +++ b/src/Definitions/Service.php @@ -601,6 +601,16 @@ final class Service extends BaseEnum */ public const ZASILKOVNA_BG_ECONT_BOX = '19470'; + /** + * BG Sameday HD + */ + public const ZASILKOVNA_BG_SAMEDAY_HD = '26066'; + + /** + * BG Sameday Box + */ + public const ZASILKOVNA_BG_SAMEDAY_BOX = '26067'; + /** * CZ Česká pošta HD */ @@ -1066,6 +1076,16 @@ final class Service extends BaseEnum */ public const ZASILKOVNA_SI_POST_BOX = '19517'; + /** + * SI Express One HD + */ + public const ZASILKOVNA_SI_EXPRESS_ONE_HD = '25004'; + + /** + * SI Express One PP + */ + public const ZASILKOVNA_SI_EXPRESS_ONE_PP = '25005'; + /** * Expresné doručenie Bratislava */ @@ -1207,7 +1227,7 @@ final class Service extends BaseEnum public const PBH_PP = '13'; /** - * polský Inpost Kurier + * Polský Inpost Kurier */ public const PBH_INPOST_KURIER = '14'; @@ -1281,6 +1301,21 @@ final class Service extends BaseEnum */ public const PBH_UPS = '28'; + /** + * Warenpost + */ + public const PBH_WARENPOST = '29'; + + /** + * Chorvatská pošta + */ + public const PBH_HR_POST = '30'; + + /** + * BOX NOW + */ + public const PBH_BOX_NOW = '31'; + /** * Worlwide zásilky */ @@ -1976,6 +2011,21 @@ final class Service extends BaseEnum */ public const LIFTAGO_STANDARD_22 = 'standard-20-22'; + /** + * Liftago SLot 10-12h + */ + public const LIFTAGO_SLOT_12 = 'SLOT10-12'; + + /** + * Liftago SLot 12-15h + */ + public const LIFTAGO_SLOT_15 = 'SLOT12-15'; + + /** + * Liftago SLot 18-21h + */ + public const LIFTAGO_SLOT_21 = 'SLOT18-21'; + /** * MPL Business parcel (Domestic) */ @@ -2237,6 +2287,9 @@ private static function pbh(): array self::PBH_ROYAL_MAIL_48, self::PBH_EXPRESS_ONE, self::PBH_UPS, + self::PBH_WARENPOST, + self::PBH_HR_POST, + self::PBH_BOX_NOW, ]; } @@ -2350,6 +2403,8 @@ private static function zasilkovna(): array self::ZASILKOVNA_BG_SPEEDY_PP, self::ZASILKOVNA_BG_SPEEDY_HD, self::ZASILKOVNA_BG_ECONT_BOX, + self::ZASILKOVNA_BG_SAMEDAY_HD, + self::ZASILKOVNA_BG_SAMEDAY_BOX, // self::ZASILKOVNA_CZ_POST_HD, self::ZASILKOVNA_CZ_EXPRESS_PRAHA_HD, // self::ZASILKOVNA_CZ_EXPRESS_BRNO_HD, @@ -2406,8 +2461,8 @@ private static function zasilkovna(): array self::ZASILKOVNA_IE_ANPOST_HD, self::ZASILKOVNA_IE_FEDEX_HD_CONNECT_PLUS, self::ZASILKOVNA_IE_FEDEX_HD_PRIORITY, - self::ZASILKOVNA_IL_FEDEX_PRIORITY_HD, - self::ZASILKOVNA_IL_FEDEX_ECONOMY_HD, + // self::ZASILKOVNA_IL_FEDEX_PRIORITY_HD, + // self::ZASILKOVNA_IL_FEDEX_ECONOMY_HD, self::ZASILKOVNA_IT_BARTOLINI_HD, self::ZASILKOVNA_IT_BARTOLINI_PP, // self::ZASILKOVNA_IT_GLS_HD, @@ -2449,6 +2504,8 @@ private static function zasilkovna(): array self::ZASILKOVNA_SI_POST_HD, self::ZASILKOVNA_SI_POST_PP, self::ZASILKOVNA_SI_POST_BOX, + self::ZASILKOVNA_SI_EXPRESS_ONE_HD, + self::ZASILKOVNA_SI_EXPRESS_ONE_PP, self::ZASILKOVNA_SK_EXPRESS_BRATISLAVA_HD, self::ZASILKOVNA_SK_COURIER_HD, // self::ZASILKOVNA_SK_POST_HD, @@ -2703,14 +2760,17 @@ private static function liftago(): array return [ self::LIFTAGO_EXPRESS, self::LIFTAGO_STANDARD, - self::LIFTAGO_STANDARD_8, - self::LIFTAGO_STANDARD_10, - self::LIFTAGO_STANDARD_12, - self::LIFTAGO_STANDARD_14, - self::LIFTAGO_STANDARD_16, - self::LIFTAGO_STANDARD_18, - self::LIFTAGO_STANDARD_20, - self::LIFTAGO_STANDARD_22, + // self::LIFTAGO_STANDARD_8, + // self::LIFTAGO_STANDARD_10, + // self::LIFTAGO_STANDARD_12, + // self::LIFTAGO_STANDARD_14, + // self::LIFTAGO_STANDARD_16, + // self::LIFTAGO_STANDARD_18, + // self::LIFTAGO_STANDARD_20, + // self::LIFTAGO_STANDARD_22, + self::LIFTAGO_SLOT_12, + self::LIFTAGO_SLOT_15, + self::LIFTAGO_SLOT_21, ]; } diff --git a/src/Model/PackageData/Package/DeliveryData.php b/src/Model/PackageData/Package/DeliveryData.php index d4a38af..2d13d1f 100644 --- a/src/Model/PackageData/Package/DeliveryData.php +++ b/src/Model/PackageData/Package/DeliveryData.php @@ -243,4 +243,9 @@ public function setShipperVat(string $code): void { $this->offsetSet(Attribute::SHIPPER_VAT, $code); } + + public function setShipperAccountNumber(string $number): void + { + $this->offsetSet(Attribute::SHIPPER_ACCOUNT_NUMBER, $number); + } } diff --git a/tests/Integration/ChangesSupportTest.php b/tests/Integration/ChangesSupportTest.php index abffc19..11a1f30 100644 --- a/tests/Integration/ChangesSupportTest.php +++ b/tests/Integration/ChangesSupportTest.php @@ -8,6 +8,7 @@ use Inspirum\Balikobot\Definitions\Carrier; use Inspirum\Balikobot\Definitions\Method; use Inspirum\Balikobot\Definitions\Version; +use Inspirum\Balikobot\Exception\Exception; use Inspirum\Balikobot\Model\Attribute\Attribute as AttributeModel; use Inspirum\Balikobot\Model\Method\Method as MethodModel; use function array_diff; @@ -26,7 +27,7 @@ public function testLatestChangesSupport(): void $changelog = $infoService->getChangelog(); - $expected = (float) '1.987'; + $expected = (float) '1.990'; $actual = (float) $changelog->getLatestVersion(); if ($actual > $expected) { @@ -42,10 +43,18 @@ public function testAllAddAttributesSupport(): void $attributes = []; foreach (Carrier::getAll() as $carrier) { - $attributes[] = array_map( - static fn(AttributeModel $attribute): string => $attribute->getName(), - $settingService->getAddAttributes($carrier)->getAttributes(), - ); + try { + $attributes[] = array_map( + static fn(AttributeModel $attribute): string => $attribute->getName(), + $settingService->getAddAttributes($carrier)->getAttributes(), + ); + } catch (Exception $exception) { + if ($exception->getStatusCode() === 503) { + continue; + } + + throw $exception; + } } $attributes = array_unique(array_merge(...$attributes)); diff --git a/tests/Integration/Model/Branch/DefaultBranchResolverTest.php b/tests/Integration/Model/Branch/DefaultBranchResolverTest.php index d7dbf51..8c811c3 100644 --- a/tests/Integration/Model/Branch/DefaultBranchResolverTest.php +++ b/tests/Integration/Model/Branch/DefaultBranchResolverTest.php @@ -8,6 +8,7 @@ use Inspirum\Balikobot\Definitions\Country; use Inspirum\Balikobot\Definitions\Service; use Inspirum\Balikobot\Exception\BadRequestException; +use Inspirum\Balikobot\Exception\Exception; use Inspirum\Balikobot\Model\Branch\BranchResolver; use Inspirum\Balikobot\Model\Branch\DefaultBranchResolver; use PHPUnit\Framework\Attributes\DataProvider; @@ -42,7 +43,11 @@ public function testHasFullBranchesSupport(string $carrier, string $service): vo } else { $this->assertNoException(); } - } catch (BadRequestException $exception) { + } catch (Exception $exception) { + if ($exception->getStatusCode() === 503) { + self::markTestIncomplete(sprintf('%s/%s is unavailable', strtoupper($carrier), $service)); + } + self::assertFalse( $branchResolver->hasFullBranchesSupport($carrier, $service), sprintf( @@ -90,7 +95,11 @@ public function testHasBranchCountryFilterSupport(string $carrier, string $servi } else { self::assertTrue($shouldSupport, sprintf('%s/%s should not support branch country filter', strtoupper($carrier), $service)); } - } catch (BadRequestException $exception) { + } catch (Exception $exception) { + if ($exception->getStatusCode() === 503) { + self::markTestIncomplete(sprintf('%s/%s is unavailable', strtoupper($carrier), $service)); + } + self::assertFalse( $branchResolver->hasBranchCountryFilterSupport($carrier, $service), sprintf( @@ -136,14 +145,14 @@ public function testBranchesFilterByCountryCodes(): void break; } - } catch (BadRequestException $exception) { - if ($exception->getStatusCode() === 501) { - continue; + } catch (Exception $exception) { + if ($exception->getStatusCode() === 501 || $exception->getStatusCode() === 503) { + self::markTestIncomplete(sprintf('%s is unavailable', strtoupper($carrier))); } $errorMessage = $exception->getResponse()['status_message'] ?? ''; if (str_contains($errorMessage, 'Neznámý kód služby') === false) { - $this->fail(sprintf('%s: %s', $carrier, $exception->getMessage())); + $this->fail(sprintf('%s: %s', strtoupper($carrier), $exception->getMessage())); } } } diff --git a/tests/Integration/Provider/LiveServiceProviderTest.php b/tests/Integration/Provider/LiveServiceProviderTest.php index afeb38d..5e64f6a 100644 --- a/tests/Integration/Provider/LiveServiceProviderTest.php +++ b/tests/Integration/Provider/LiveServiceProviderTest.php @@ -5,6 +5,7 @@ namespace Inspirum\Balikobot\Tests\Integration; use Inspirum\Balikobot\Definitions\Service; +use Inspirum\Balikobot\Exception\Exception; use Inspirum\Balikobot\Provider\LiveCarrierProvider; use Inspirum\Balikobot\Provider\LiveServiceProvider; use function sprintf; @@ -18,7 +19,16 @@ public function testGetServices(): void foreach ($carrierProvider->getCarriers() as $carrier) { $expectedServices = Service::getForCarrier($carrier); - $services = $serviceProvider->getServices($carrier); + + try { + $services = $serviceProvider->getServices($carrier); + } catch (Exception $exception) { + if ($exception->getStatusCode() === 503) { + continue; + } + + throw $exception; + } self::assertEqualsCanonicalizing( $expectedServices, diff --git a/tests/Unit/Model/PackageData/DefaultPackageDataTest.php b/tests/Unit/Model/PackageData/DefaultPackageDataTest.php index 9f0ddc8..0550c3d 100644 --- a/tests/Unit/Model/PackageData/DefaultPackageDataTest.php +++ b/tests/Unit/Model/PackageData/DefaultPackageDataTest.php @@ -207,6 +207,7 @@ public function testPackageSetters(): void $package->setTransformTempFrom(5); $package->setTransformTempTO(60); $package->setShipperVat('21'); + $package->setShipperAccountNumber('765432/0300'); $package->setNoteInvoice('note1'); $package->setInvoiceType('PRO_FORMA_INVOICE'); $package->setReturnBarcode(true); @@ -377,6 +378,7 @@ public function testPackageSetters(): void Attribute::TRANSFORM_TEMP_FROM => 5.0, Attribute::TRANSFORM_TEMP_TO => 60.0, Attribute::SHIPPER_VAT => '21', + Attribute::SHIPPER_ACCOUNT_NUMBER => '765432/0300', Attribute::NOTE_INVOICE => 'note1', Attribute::INVOICE_TYPE => 'PRO_FORMA_INVOICE', Attribute::RETURN_BARCODE => 1,