Остановить мультишиппинг от разделения заказов в magento - PullRequest
0 голосов
/ 04 июня 2018

Проблема: мне нужно помешать многоядерному базовому модулю разбивать количества на отдельные заказы.Мне почти нужно, чтобы он действовал как страница корзины, где я обновляю количество, и оно не разделит их.У меня есть клиент, который может заказать 100 товаров (одного и того же) для одного магазина и 20 для другого.Затем создается 120 отдельных заказов и 120 строк для прохождения и добавления адресов.

Я искал везде и не нашел большой помощи.Ниже, я полагаю, приведен код, который связан с расщеплением (ядро / Маг / Оформление заказа / Модель / Тип / Мультиотправка).Также прилагается, в чем проблема.Любое направление высоко ценится.версия 1.7

protected function _addShippingItem($quoteItemId, $data)
{
     $qty       = isset($data['qty']) ? (int) $data['qty'] : 1;
    //$qty       = $qty > 0 ? $qty : 1;
    $addressId = isset($data['address']) ? $data['address'] : false;
    $quoteItem = $this->getQuote()->getItemById($quoteItemId);

    if ($addressId && $quoteItem) {
        /**
         * Skip item processing if qty 0
         */
        if ($qty === 0) {
            return $this;
        }
        $quoteItem->setMultishippingQty((int)$quoteItem->getMultishippingQty()+$qty);
        $quoteItem->setQty($quoteItem->getMultishippingQty());
        $address = $this->getCustomer()->getAddressById($addressId);
        if ($address->getId()) {
            if (!$quoteAddress = $this->getQuote()->getShippingAddressByCustomerAddressId($address->getId())) {
                $quoteAddress = Mage::getModel('sales/quote_address')->importCustomerAddress($address);
                $this->getQuote()->addShippingAddress($quoteAddress);
            }

            $quoteAddress = $this->getQuote()->getShippingAddressByCustomerAddressId($address->getId());
            if ($quoteAddressItem = $quoteAddress->getItemByQuoteItemId($quoteItemId)) {

                $quoteAddressItem->setQty((int)($quoteAddressItem->getQty()+$qty));
            } else {
                $quoteAddress->addItem($quoteItem, $qty);
            }
            /**
             * Require shiping rate recollect
             */
            $quoteAddress->setCollectShippingRates((boolean) $this->getCollectRatesFlag());
        }
    }

    return $this;
}

enter image description here

1 Ответ

0 голосов
/ 05 июня 2018

Так что, если у кого-то еще есть эта проблема, я смог разобраться.Я был в неправильной функции.

getQuoteShippingAddressesItems ()

Находится в ядре / Mage / Checkout / Model / Type / Multishipping.php вокруг строки 116.

Изменен следующий код:

for ($i = 0, $n = $item->getQty(); $i < $n; $i++)

На

for ($i = 0, $n = 1; $i < $n; $i++)
$addressItem->setQty($item->getQty)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...