/** * @param array $stateToTransitionsMap * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem[] $orderItems * @param array $sourceStateBuffer * @param \Spryker\Zed\Oms\Business\Util\TransitionLogInterface $log * * @return array */ protected function updateStateByTransition($stateToTransitionsMap, array $orderItems, array $sourceStateBuffer, TransitionLogInterface $log) { if ($sourceStateBuffer === null) { $sourceStateBuffer = []; } $targetStateMap = []; foreach ($orderItems as $i => $orderItem) { $stateId = $orderItem->getState()->getName(); $sourceStateBuffer[$orderItem->getIdSalesOrderItem()] = $stateId; $process = $this->builder->createProcess($orderItem->getProcess()->getName()); $sourceState = $process->getStateFromAllProcesses($stateId); $log->addSourceState($orderItem, $sourceState->getName()); $transitions = $stateToTransitionsMap[$orderItem->getState()->getName()]; $targetState = $sourceState; if (count($transitions) > 0) { $targetState = $this->checkCondition($transitions, $orderItem, $sourceState, $log); } $log->addTargetState($orderItem, $targetState->getName()); $targetStateMap[$i] = $targetState->getName(); } foreach ($orderItems as $i => $orderItem) { $this->setState($orderItems[$i], $targetStateMap[$i]); } return $sourceStateBuffer; }
/** * @param string $processName * * @return array */ public function getOrderItems($processName) { $orderItemsArray = []; $c = 0; $process = $this->builder->createProcess($processName); for ($i = 0; $i < 2; $i++) { foreach ($process->getAllStates() as $state) { $orderItemsArray[] = ['id' => $c, 'process' => $processName, 'state' => $state->getName(), 'orderId' => $i]; $c++; break 2; } } return $orderItemsArray; }