diff --git a/src/Entity/Response/CompleteStatusResponseShipment.php b/src/Entity/Response/CompleteStatusResponseShipment.php index ecbbcdbf..d4f441e0 100644 --- a/src/Entity/Response/CompleteStatusResponseShipment.php +++ b/src/Entity/Response/CompleteStatusResponseShipment.php @@ -379,6 +379,15 @@ public static function jsonDeserialize(stdClass $json) } } + if (isset($json->CompleteStatusResponseShipment->Amount)) { + $json->CompleteStatusResponseShipment->Amounts = $json->CompleteStatusResponseShipment->Amount; + unset($json->CompleteStatusResponseShipment->Amount); + + if (!is_array($json->CompleteStatusResponseShipment->Amounts)) { + $json->CompleteStatusResponseShipment->Amounts = [$json->CompleteStatusResponseShipment->Amounts]; + } + } + return parent::jsonDeserialize($json); } diff --git a/src/Entity/Response/CurrentStatusResponseShipment.php b/src/Entity/Response/CurrentStatusResponseShipment.php index 6b02d651..3bfb57cf 100644 --- a/src/Entity/Response/CurrentStatusResponseShipment.php +++ b/src/Entity/Response/CurrentStatusResponseShipment.php @@ -41,6 +41,7 @@ use Firstred\PostNL\Entity\StatusAddress; use Firstred\PostNL\Entity\Warning; use Firstred\PostNL\Exception\InvalidArgumentException; +use Firstred\PostNL\Exception\NotSupportedException; use Firstred\PostNL\Service\BarcodeService; use Firstred\PostNL\Service\ConfirmingService; use Firstred\PostNL\Service\DeliveryDateService; @@ -325,7 +326,7 @@ public function setDeliveryDate($deliveryDate = null) * @return mixed|stdClass|null * * @throws InvalidArgumentException - * @throws \Firstred\PostNL\Exception\NotSupportedException + * @throws NotSupportedException * * @since 1.2.0 */ @@ -340,6 +341,15 @@ public static function jsonDeserialize(stdClass $json) } } + if (isset($json->CurrentStatusResponseShipment->Amount)) { + $json->CurrentStatusResponseShipment->Amounts = $json->CurrentStatusResponseShipment->Amount; + unset($json->CurrentStatusResponseShipment->Amount); + + if (!is_array($json->CurrentStatusResponseShipment->Amounts)) { + $json->CurrentStatusResponseShipment->Amounts = [$json->CurrentStatusResponseShipment->Amounts]; + } + } + return parent::jsonDeserialize($json); } diff --git a/tests/Service/ShippingStatusServiceRestTest.php b/tests/Service/ShippingStatusServiceRestTest.php index c857ef1d..b844120c 100644 --- a/tests/Service/ShippingStatusServiceRestTest.php +++ b/tests/Service/ShippingStatusServiceRestTest.php @@ -30,6 +30,7 @@ use DateTimeImmutable; use DateTimeInterface; use Firstred\PostNL\Entity\Address; +use Firstred\PostNL\Entity\Amount; use Firstred\PostNL\Entity\Customer; use Firstred\PostNL\Entity\Dimension; use Firstred\PostNL\Entity\Message\Message; @@ -255,7 +256,10 @@ public function testGetCompleteStatusByBarcodeRest($response) $this->assertInstanceOf(CompleteStatusResponse::class, $completeStatusResponse); $this->assertInstanceOf(StatusAddress::class, $completeStatusResponse->getShipments()[0]->getAddresses()[0]); - $this->assertNull($completeStatusResponse->getShipments()[0]->getAmounts()); + $this->assertTrue( + null === $completeStatusResponse->getShipments()[0]->getAmounts() + || $completeStatusResponse->getShipments()[0]->getAmounts()[0] instanceof Amount + ); if (is_array($completeStatusResponse->getShipments()[0]->getProductOptions())) { $this->assertInstanceOf(ProductOption::class, $completeStatusResponse->getShipments()[0]->getProductOptions()[0]); } else {