/** * @param \Spryker\Zed\Oms\Business\Process\ProcessInterface $process * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem $orderItem * @param \DateTime $currentTime * * @return void */ public function setNewTimeout(ProcessInterface $process, SpySalesOrderItem $orderItem, DateTime $currentTime) { $targetStateEntity = $orderItem->getState(); $targetState = $this->getStateFromProcess($targetStateEntity->getName(), $process); if ($targetState->hasTimeoutEvent()) { $events = $targetState->getTimeoutEvents(); $handledEvents = []; foreach ($events as $event) { if (in_array($event->getName(), $handledEvents)) { continue; } $handledEvents[] = $event->getName(); $timeoutDate = $this->calculateTimeoutDateFromEvent($currentTime, $event); (new SpyOmsEventTimeout())->setTimeout($timeoutDate)->setOrderItem($orderItem)->setState($targetStateEntity)->setEvent($event->getName())->save(); } } }
/** * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem $orderItemEntity * @param \Generated\Shared\Transfer\ItemTransfer $itemTransfer * * @return void */ protected function hydrateCurrentSalesOrderItemState(SpySalesOrderItem $orderItemEntity, ItemTransfer $itemTransfer) { $stateTransfer = new ItemStateTransfer(); $stateTransfer->fromArray($orderItemEntity->getState()->toArray(), true); $stateTransfer->setIdSalesOrder($orderItemEntity->getIdSalesOrderItem()); $lastStateHistory = $orderItemEntity->getState()->getStateHistories()->getLast(); $stateTransfer->setCreatedAt($lastStateHistory->getCreatedAt()); $itemTransfer->setState($stateTransfer); }
/** * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem $orderItem * * @return string */ public function getStateDisplayName(SpySalesOrderItem $orderItem) { $processName = $orderItem->getProcess()->getName(); $builder = clone $this->builder; $process = $builder->createProcess($processName); $stateName = $orderItem->getState()->getName(); $state = $process->getState($stateName); return $state->getDisplay(); }