У цій же проблемі я стикався в останніх 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 () повертає істину, навіть якщо адреси виставлення рахунків та доставки відрізняються.
Це має серйозні наслідки для всіх замовлень, відредагованих через Панель адміністратора, оскільки оригінальна адреса доставки втрачена.
Це помилка чи я щось пропускаю?