Администратор редактировать заказ теряет адрес доставки

10

Клиент вводит заказ с разными адресами доставки / выставления счетов.

если нам нужно отредактировать заказ в админке, он создаст новый заказ, в новом заказе адрес доставки по умолчанию будет «равным счету», а первоначальный адрес доставки будет утерян!

  1. Может кто-нибудь подтвердить, если их установка делает то же самое.
  2. у кого-нибудь есть решение.
Мендель
источник
2
У меня довольно много 1,7 магазинов, и ни у одного из них этого нет
Сандер Мангель
@SanderMangel, спасибо. так что теперь нам нужно выяснить, почему это происходит на моей установке. Какие-либо предложения?
Мендель
Проверьте свои логи, и Magento и Apache. Если все в порядке, отключите все сторонние расширения через app / etc / modules, чтобы узнать, не вызывает ли это это. Если это не поможет ... ну ... тогда у вас есть более серьезная проблема
Сандер Мангель
@SanderMangel, я отключил все сторонние расширения, ничего не изменилось. Я проверил исключения и системные журналы, и я не вижу ошибок, которые совпадают со временем, когда я нажал «изменить порядок»
mendel

Ответы:

3

У меня была эта проблема. Моя проблема заключалась в том, что same_as_billing_addressадрес отправителя был установлен через внешний интерфейс, поэтому сервер подумал, что второго адреса не существует, и пропустил рендеринг.

Проверьте ваш веб-интерфейс, передает ли он правильные данные.

Фабиан Блехшмидт
источник
когда клиент вводит заказ, он может выбрать Отправлять на этот адрес или отправлять на другой адрес, если он выбирает отправку на другой адрес, он может ввести адрес доставки. на странице заказа администратора отображаются оба адреса, пока я не отредактирую заказ. в таблице sales_order_flat я не вижу столбца same_as_billing_address, но вижу shipping_address_id и billing_address_id, и они отличаются. Возможно, я не смотрю в нужном месте?
Мендель
Я нашел поле same_as_billing в таблице sales_flat_quote_address, и оно установлено в 0 для тех заказов, когда клиент ввел другой адрес доставки.
Мендель
Тогда у вас есть еще одна проблема :-(
Фабиан Блехшмидт
Я также проверил это, и ваше решение также не относится ко мне. same_as_billing_addressустановлен правильно.
Луи Б.
2

Я не мог воспроизвести это на Magento 1.9.

В примечаниях к выпуску об этом нет никаких исправлений, однако я обнаружил следующее в примечаниях к выпуску 1.8.0.0 :

Исправления административного заказа и кредитового авизо

  • Когда вы создаете заказ с помощью панели администратора и указали адрес выставления счета по умолчанию и адрес доставки по умолчанию, адреса используются правильно.

Возможно, это связано и исправило ошибку. Примечания к выпуску не всегда полны.

Фабиан Шменглер
источник
1

Я столкнулся с той же проблемой в последних версиях Magento 1.9.2.4 и 2.0.5.

Сценарий:

  1. Гость размещает заказ
  2. Заказ имеет разные адреса выставления счетов и доставки
  3. Администратор редактирует порядок в панели администратора

Результат: адрес доставки потерян, и вместо него отображается адрес выставления счета.

Причина: _isSameAsBilling () метод всегда возвращает истинно , если заказ был сделан с помощью Гостя. Это не правильное поведение.

Рассматриваемый метод:

Magento 2.0.5: /app/code/Magento/Quote/Model/Quote/Address.php

protected function _isSameAsBilling()
    {
        return $this->getAddressType() == \Magento\Quote\Model\Quote\Address::TYPE_SHIPPING &&
            ($this->_isNotRegisteredCustomer() ||
            $this->_isDefaultShippingNullOrSameAsBillingAddress());
    }

Magento 1.9.2.4: /app/code/core/Mage/Sales/Model/Quote/Address.php

protected function _isSameAsBilling()
    {
        return ($this->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_SHIPPING
            && ($this->_isNotRegisteredCustomer() || $this->_isDefaultShippingNullOrSameAsBillingAddress()));
    }

Как вы можете видеть, если Клиент не зарегистрирован, метод _isSameAsBilling () возвращает true, даже если адреса выставления счетов и доставки различаются.

Это имеет серьезные последствия для всех заказов, отредактированных через панель администратора, поскольку первоначальный адрес доставки теряется.

Это ошибка или я что-то упустил?

Люк Банк
источник
1

Была та же проблема с Magento 1.7 и исправьте это изменение: app / code / core / Mage / Adminhtml / Model / Sales / Order / Create.php

Вам нужно переписать класс по-чистому :)

Измените метод: _initShippingAddressFromOrder с этим кодом:

protected function _initShippingAddressFromOrder(Mage_Sales_Model_Order $order)
{
    $this->getQuote()->getShippingAddress()->setCustomerAddressId('');
    Mage::helper('core')->copyFieldset(
        'sales_copy_order_shipping_address',
        'to_order',
        $order->getShippingAddress(),
        $this->getQuote()->getShippingAddress()
    );
    $this->getQuote()->getShippingAddress()->setSameAsBilling(false);
    if($order->getShippingAddress()->getCustomerAddressId() && $order->getShippingAddress()->getCustomerAddressId() == $order->getBillingAddress()->getCustomerAddressId()) {
        $this->getQuote()->getShippingAddress()->setSameAsBilling(true);
    }
}
Максим Хуран
источник
Спасибо, что установка magento прошла через ряд обновлений и расширений, и я больше не могу воспроизвести проблему, поэтому не могу проверить ваше исправление.
Мендель