Eu encontrei o mesmo problema nas versões mais recentes do Magento 1.9.2.4 e 2.0.5.
Cenário:
- O hóspede faz um pedido
- O pedido tem diferentes endereços de cobrança e entrega
- Admin edita o pedido no Painel do administrador
Resultado:
o endereço de entrega é perdido e o endereço de cobrança é exibido.
Razão:
O método _isSameAsBilling () sempre retorna true se o pedido foi feito por um Convidado. Não é um comportamento adequado.
O método em questão:
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()));
}
Como você pode ver se o Cliente não está registrado, o método _isSameAsBilling () retorna true, mesmo que os endereços de cobrança e entrega sejam diferentes.
Isso tem sérias implicações em todos os pedidos editados pelo Painel do administrador, pois o endereço de entrega original é perdido.
Isso é um bug ou estou faltando alguma coisa?