Exemplo n.º 1
0
 /**
  * @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();
         }
     }
 }
Exemplo n.º 2
0
 /**
  * @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);
 }
Exemplo n.º 3
0
 /**
  * @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();
 }