He encontrado el mismo problema en los últimos Magento 1.9.2.4 y 2.0.5.
Guión:
- El huésped hace un pedido
- El pedido tiene diferentes direcciones de facturación y envío
- El administrador edita el pedido en el Panel de administración
Resultado:
se pierde la dirección de envío y se muestra la dirección de facturación.
Motivo:
El método _isSameAsBilling () siempre devuelve verdadero si el pedido fue realizado por un Guest. No es un comportamiento adecuado.
El método en cuestión:
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 puede ver si el Cliente no está registrado, el método _isSameAsBilling () devuelve verdadero incluso si las direcciones de Facturación y Envío son diferentes.
Tiene serias implicaciones en todos los pedidos editados a través del Panel de administración ya que se pierde la dirección de envío original.
¿Es esto un error o me falta algo?