Ten sam problem napotkałem w najnowszych wersjach Magento 1.9.2.4 i 2.0.5.
Scenariusz:
- Gość składa zamówienie
- Zamówienie ma różne adresy do fakturowania i wysyłki
- Administrator edytuje zamówienie w panelu administracyjnym
Wynik:
adres wysyłki został utracony, a zamiast tego wyświetlony jest adres rozliczeniowy.
Powód:
Metoda _isSameAsBilling () zawsze zwraca true, jeśli zamówienie zostało złożone przez gościa. To nie jest właściwe zachowanie.
Metoda, o której mowa:
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()));
}
Jak widać, jeśli Klient nie jest zarejestrowany, metoda _isSameAsBilling () zwraca wartość true, nawet jeśli adresy do fakturowania i wysyłki są różne.
Ma to poważny wpływ na wszystkie zamówienia edytowane za pomocą panelu administracyjnego, ponieważ oryginalny adres wysyłki został utracony.
Czy to błąd, czy coś brakuje?