Я столкнулся с той же проблемой в последних версиях Magento 1.9.2.4 и 2.0.5.
Сценарий:
- Гость размещает заказ
- Заказ имеет разные адреса выставления счетов и доставки
- Администратор редактирует порядок в панели администратора
Результат:
адрес доставки потерян, и вместо него отображается адрес выставления счета.
Причина: _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, даже если адреса выставления счетов и доставки различаются.
Это имеет серьезные последствия для всех заказов, отредактированных через панель администратора, поскольку первоначальный адрес доставки теряется.
Это ошибка или я что-то упустил?