Невозможно найти определение функции setIsInProcess ()

Я пытаюсь программно создать отгрузку для заказов, на которые уже выставлен счет, но мне не удается заставить ее работать, в том смысле, что отгрузка создана правильно для всех позиций в заказе, но вместо этого статус заказа остается «Обрабатывается» идти к «завершить».

Я обнаружил проблему с отгруженными товарами, поскольку их количество остается равным 0 после создания отгрузки. Я уже спрашивал об этом, но безуспешно, поэтому я пытаюсь отладить основные функции Magento, чтобы выяснить, что происходит, но я не могу найти, где setIsInProcess() функция определена.

Я искал во всех классах модуля продаж, но не повезло.

Может ли somenone сказать мне, где найти этот метод? Он принадлежит Sales\Order и используется как $order->setIsInProcess(true)но я не могу найти function setIsInProcess(....) нет нигде.

Я, очевидно, также искал с grep внутри всего .php файлы из командной строки.

Любая подсказка ????? Пожалуйста, я борюсь с 2 дня!

2

Решение

setIsInProcess($value) Метод является псевдонимом для setData('is_in_process', $value) соответствующей модели. Вы можете найти его определение в родительском классе Magento\Framework\Model\AbstractExtensibleModel или в Magento\Framework\Model\AbstractModel, магия методы реализованы в родительском классе (обычно для всех моделей) Magento\Framework\DataObject в __call метод:

/**
* Set/Get attribute wrapper
*
* @param   string $method
* @param   array $args
* @return  mixed
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function __call($method, $args)
{
switch (substr($method, 0, 3)) {
case 'get':
$key = $this->_underscore(substr($method, 3));
$index = isset($args[0]) ? $args[0] : null;
return $this->getData($key, $index);
case 'set':
$key = $this->_underscore(substr($method, 3));
$value = isset($args[0]) ? $args[0] : null;
return $this->setData($key, $value);
case 'uns':
$key = $this->_underscore(substr($method, 3));
return $this->unsetData($key);
case 'has':
$key = $this->_underscore(substr($method, 3));
return isset($this->_data[$key]);
}
throw new \Magento\Framework\Exception\LocalizedException(
new \Magento\Framework\Phrase('Invalid method %1::%2', [get_class($this), $method])
);
}

Нечто подобное было использовано в magento 1, и я рекомендую вам прочитать эта статья написана Райан-стрит

PS: Используется только в одном месте: Magento\Sales\Model\ResourceModel\Order\Handler\State::check‌​(Order $order) на линии 41. Я думаю, что это связано с вашей проблемой, потому что здесь состояние заказа и статус меняется на обработку.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]