diff --git a/src/Core/Request/Orders/OrderCreateFromCartRequest.php b/src/Core/Request/Orders/OrderCreateFromCartRequest.php index 1b76be6b31..25fd9c2d03 100644 --- a/src/Core/Request/Orders/OrderCreateFromCartRequest.php +++ b/src/Core/Request/Orders/OrderCreateFromCartRequest.php @@ -5,6 +5,7 @@ namespace Commercetools\Core\Request\Orders; +use Commercetools\Core\Model\State\StateReference; use Psr\Http\Message\ResponseInterface; use Commercetools\Core\Client\HttpMethod; use Commercetools\Core\Client\HttpRequestInterface; @@ -29,11 +30,17 @@ class OrderCreateFromCartRequest extends AbstractApiRequest const VERSION = 'version'; const ORDER_NUMBER = 'orderNumber'; const PAYMENT_STATE = 'paymentState'; + const ORDER_STATE = 'orderState'; + const STATE = 'state'; + const SHIPMENT_STATE = 'shipmentState'; protected $cartId; protected $version; protected $orderNumber; protected $paymentState; + protected $orderState; + protected $state; + protected $shipmentState; protected $resultClass = Order::class; @@ -113,6 +120,63 @@ public function setPaymentState($paymentState) return $this; } + /** + * @return mixed + */ + public function getOrderState() + { + return $this->orderState; + } + + /** + * @param $orderState + * @return $this + */ + public function setOrderState($orderState) + { + $this->orderState = $orderState; + + return $this; + } + + /** + * @return mixed + */ + public function getState() + { + return $this->state; + } + + /** + * @param StateReference $state + * @return $this + */ + public function setState(StateReference $state) + { + $this->state = $state; + + return $this; + } + + /** + * @return mixed + */ + public function getShipmentState() + { + return $this->shipmentState; + } + + /** + * @param $shipmentState + * @return $this + */ + public function setShipmentState($shipmentState) + { + $this->shipmentState = $shipmentState; + + return $this; + } + /** * @param string $cartId * @param int $version @@ -161,6 +225,15 @@ public function httpRequest() if (!is_null($this->orderNumber)) { $payload[static::ORDER_NUMBER] = $this->getOrderNumber(); } + if (!is_null($this->orderState)) { + $payload[static::ORDER_STATE] = $this->getOrderState(); + } + if (!is_null($this->state)) { + $payload[static::STATE] = $this->getState(); + } + if (!is_null($this->shipmentState)) { + $payload[static::SHIPMENT_STATE] = $this->getShipmentState(); + } return new JsonRequest(HttpMethod::POST, $this->getPath(), $payload); } } diff --git a/tests/unit/Request/Orders/OrderCreateFromCartRequestTest.php b/tests/unit/Request/Orders/OrderCreateFromCartRequestTest.php index 94b07b5ee4..1e768ca139 100644 --- a/tests/unit/Request/Orders/OrderCreateFromCartRequestTest.php +++ b/tests/unit/Request/Orders/OrderCreateFromCartRequestTest.php @@ -7,6 +7,7 @@ use Commercetools\Core\Client\HttpMethod; use Commercetools\Core\Model\Order\Order; +use Commercetools\Core\Model\State\StateReference; use Commercetools\Core\RequestTestCase; use Commercetools\Core\Response\ResourceResponse; @@ -64,8 +65,12 @@ public function testHttpRequestObject() * @var OrderCreateFromCartRequest $request */ $request = OrderCreateFromCartRequest::ofCartIdAndVersion('12345', 1); + $stateReference = StateReference::ofId('123'); $request->setOrderNumber('12345678') - ->setPaymentState('paid'); + ->setPaymentState('paid') + ->setOrderState('Confirmed') + ->setShipmentState('Ready') + ->setState($stateReference); $httpRequest = $request->httpRequest(); @@ -73,7 +78,13 @@ public function testHttpRequestObject() 'id' => '12345', 'version' => 1, 'orderNumber' => '12345678', - 'paymentState' => 'paid' + 'paymentState' => 'paid', + 'orderState' => 'Confirmed', + 'shipmentState' => 'Ready', + 'state' => [ + 'typeId' => 'state', + 'id' => '123' + ] ]; $this->assertJsonStringEqualsJsonString(json_encode($expectedResult), (string)$httpRequest->getBody()); }