30 \
Magento\Framework\
App\Config\ScopeConfigInterface $scopeConfig,
33 $this->_scopeConfig = $scopeConfig;
34 $this->_itemsFactory = $itemsFactory;
58 'pending' => \Magento\Downloadable\Model\Link\Purchased\Item::LINK_STATUS_PENDING,
59 'expired' => \Magento\Downloadable\Model\Link\Purchased\Item::LINK_STATUS_EXPIRED,
60 'avail' => \Magento\Downloadable\Model\Link\Purchased\Item::LINK_STATUS_AVAILABLE,
61 'payment_pending' => \Magento\Downloadable\Model\Link\Purchased\Item::LINK_STATUS_PENDING_PAYMENT,
62 'payment_review' => \Magento\Downloadable\Model\Link\Purchased\Item::LINK_STATUS_PAYMENT_REVIEW,
65 $downloadableItemsStatuses = [];
66 $orderItemStatusToEnable = $this->_scopeConfig->getValue(
67 \
Magento\Downloadable\Model\Link\Purchased\Item::XML_PATH_ORDER_ITEM_STATUS,
73 $status = $linkStatuses[
'pending'];
79 \Magento\Sales\Model\Order\Item::STATUS_CANCELED,
80 \Magento\Sales\Model\Order\Item::STATUS_REFUNDED,
86 if (
$order->isCanceled() || in_array(
$item->getStatusId(), $expiredStatuses)) {
87 $downloadableItemsStatuses[
$item->getId()] = $linkStatuses[
'expired'];
89 $downloadableItemsStatuses[
$item->getId()] = $linkStatuses[
'avail'];
94 $status = $linkStatuses[
'payment_pending'];
96 $status = $linkStatuses[
'payment_review'];
98 $availableStatuses = [$orderItemStatusToEnable, \Magento\Sales\Model\Order\Item::STATUS_INVOICED];
103 if (
$item->getStatusId() == \Magento\Sales\Model\Order\Item::STATUS_BACKORDERED
104 && $orderItemStatusToEnable == \Magento\Sales\Model\Order\Item::STATUS_PENDING
106 \
Magento\Sales\Model\Order\Item::STATUS_BACKORDERED,
111 $availableStatuses[] = \Magento\Sales\Model\Order\Item::STATUS_BACKORDERED;
114 if (in_array(
$item->getStatusId(), $availableStatuses)) {
115 $downloadableItemsStatuses[
$item->getId()] = $linkStatuses[
'avail'];
120 if (!$downloadableItemsStatuses &&
$status) {
130 if ($downloadableItemsStatuses) {
133 [
'in' => array_keys($downloadableItemsStatuses)]
135 foreach ($linkPurchased as
$link) {
136 if (
$link->getStatus() != $linkStatuses[
'expired']
137 && !empty($downloadableItemsStatuses[
$link->getOrderItemId()])
139 $link->setStatus($downloadableItemsStatuses[
$link->getOrderItemId()])->save();
152 return $this->_itemsFactory->create();
elseif(isset( $params[ 'redirect_parent']))
__construct(\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Downloadable\Model\ResourceModel\Link\Purchased\Item\CollectionFactory $itemsFactory)
const STATE_PENDING_PAYMENT
execute(\Magento\Framework\Event\Observer $observer)
const STATE_PAYMENT_REVIEW