src/Sulu/Bundle/Sales/OrderBundle/Order/OrderManager.php
public function convertStatus($order, $statusId, $flush = false, $persist = true)
    {
        if ($order instanceof Order) {
            $order = $order->getEntity();
        }

        // get current status
        $currentStatus = $order->getStatus();
        if ($currentStatus) {
            if ($currentStatus instanceof \Massive\Bundle\Purchase\OrderBundle\Api\OrderStatus) {
                $currentStatus = $order->getStatus()->getEntity();
            }

            // if status has not changed, skip
            if ($currentStatus->getId() === $statusId) {
                return;
            }
        }

        // get desired status
        $statusEntity = $this->em
            ->getRepository(self::$orderStatusEntityName)
            ->find($statusId);
        if (!$statusEntity) {
            throw new EntityNotFoundException(self::$orderStatusEntityName, $statusId);
        }

        // ACTIVITY LOG
        $orderActivity = new OrderActivityLog();
        $orderActivity->setOrder($order);
        if ($currentStatus) {
            $orderActivity->setStatusFrom($currentStatus);
        }
        $orderActivity->setStatusTo($statusEntity);
        $orderActivity->setCreated(new \DateTime());
        if ($persist) {
            $this->em->persist($orderActivity);
        }

        // BITMASK
        $currentBitmaskStatus = $order->getBitmaskStatus();
        // if desired status already is in bitmask, remove current state
        // since this is a step back
        if ($currentBitmaskStatus && $currentBitmaskStatus & $statusEntity->getId()) {
            $order->setBitmaskStatus($currentBitmaskStatus & ~$currentStatus->getId());
        } else {
            // else increment bitmask status
            $order->setBitmaskStatus($currentBitmaskStatus | $statusEntity->getId());
        }

        // check if status has changed
        if ($statusId === OrderStatusEntity::STATUS_CREATED) {
            // TODO: re-edit - do some business logic
        }
        $order->setStatus($statusEntity);

        if ($flush === true) {
            $this->em->flush();
        }
    }
public function convertStatus($order, $statusId, $flush = false, $persist = true)
    {
        if ($order instanceof Order) {
            $order = $order->getEntity();
        }

        // get current status
        $currentStatus = $order->getStatus();
        if ($currentStatus) {
            if ($currentStatus instanceof \Massive\Bundle\Purchase\OrderBundle\Api\OrderStatus) {
                $currentStatus = $order->getStatus()->getEntity();
            }

            // if status has not changed, skip
            if ($currentStatus->getId() === $statusId) {
                return;
            }
        }

        // get desired status
        $statusEntity = $this->em
            ->getRepository(self::$orderStatusEntityName)
            ->find($statusId);
        if (!$statusEntity) {
            throw new EntityNotFoundException(self::$orderStatusEntityName, $statusId);
        }

        // ACTIVITY LOG
        $orderActivity = new OrderActivityLog();
        $orderActivity->setOrder($order);
        if ($currentStatus) {
            $orderActivity->setStatusFrom($currentStatus);
        }
        $orderActivity->setStatusTo($statusEntity);
        $orderActivity->setCreated(new \DateTime());
        if ($persist) {
            $this->em->persist($orderActivity);
        }

        // BITMASK
        $currentBitmaskStatus = $order->getBitmaskStatus();
        // if desired status already is in bitmask, remove current state
        // since this is a step back
        if ($currentBitmaskStatus && $currentBitmaskStatus & $statusEntity->getId()) {
            $order->setBitmaskStatus($currentBitmaskStatus & ~$currentStatus->getId());
        } else {
            // else increment bitmask status
            $order->setBitmaskStatus($currentBitmaskStatus | $statusEntity->getId());
        }

        // check if status has changed
        if ($statusId === OrderStatusEntity::STATUS_CREATED) {
            // TODO: re-edit - do some business logic
        }
        $order->setStatus($statusEntity);

        if ($flush === true) {
            $this->em->flush();
        }
    }
public function convertStatus ( $ order , $ statusId , $ flush = false , $ persist = true ) { if ( $ order instanceof Order ) { $ order = $ order -> getEntity ( ) ; } // get current status $ currentStatus = $ order -> getStatus ( ) ; if ( $ currentStatus ) { if ( $ currentStatus instanceof \ Massive \ Bundle \ Purchase \ OrderBundle \ Api \ OrderStatus ) { $ currentStatus = $ order -> getStatus ( ) -> getEntity ( ) ; } // if status has not changed, skip if ( $ currentStatus -> getId ( ) === $ statusId ) { return ; } } // get desired status $ statusEntity = $ this -> em -> getRepository ( self :: $ orderStatusEntityName ) -> find ( $ statusId ) ; if ( ! $ statusEntity ) { throw new EntityNotFoundException ( self :: $ orderStatusEntityName , $ statusId ) ; } // ACTIVITY LOG $ orderActivity = new OrderActivityLog ( ) ; $ orderActivity -> setOrder ( $ order ) ; if ( $ currentStatus ) { $ orderActivity -> setStatusFrom ( $ currentStatus ) ; } $ orderActivity -> setStatusTo ( $ statusEntity ) ; $ orderActivity -> setCreated ( new \ DateTime ( ) ) ; if ( $ persist ) { $ this -> em -> persist ( $ orderActivity ) ; } // BITMASK $ currentBitmaskStatus = $ order -> getBitmaskStatus ( ) ; // if desired status already is in bitmask, remove current state // since this is a step back if ( $ currentBitmaskStatus && $ currentBitmaskStatus & $ statusEntity -> getId ( ) ) { $ order -> setBitmaskStatus ( $ currentBitmaskStatus & ~ $ currentStatus -> getId ( ) ) ; } else { // else increment bitmask status $ order -> setBitmaskStatus ( $ currentBitmaskStatus | $ statusEntity -> getId ( ) ) ; } // check if status has changed if ( $ statusId === OrderStatusEntity :: STATUS_CREATED ) { // TODO: re-edit - do some business logic } $ order -> setStatus ( $ statusEntity ) ; if ( $ flush === true ) { $ this -> em -> flush ( ) ; } }
Converts the status of an order

@param ApiOrderInterface|OrderInterface $order
@param int $statusId
@param bool $flush
@param bool $persist

@throws \Sulu\Component\Rest\Exception\EntityNotFoundException
Converts the status of an order