El pedido de edición del administrador pierde la dirección de envío

10

El cliente ingresa el pedido con diferentes direcciones de envío / facturación.

si necesitamos editar el pedido en admin, crea un nuevo pedido, en el nuevo pedido la dirección de envío por defecto es 'igual que la facturación' y se pierde la dirección de envío original.

  1. ¿Alguien puede confirmar si su instalación hace lo mismo?
  2. Alguien tiene una solución.
Mendel
fuente
77
i.imgur.com/Lb427Io.jpg
philwinkle
2
Mantengo unas 1.7 tiendas y ninguna de ellas tiene esto
Sander Mangel
@SanderMangel, gracias. así que ahora tenemos que descubrir por qué sucede en mi instalación. ¿Alguna sugerencia?
mendel
Verifique sus registros, tanto Magento como Apache. Si todo está bien, apague todas las extensiones de terceros a través de la aplicación / etc / modules para ver si eso lo causa. Si eso no ayuda ... bueno ... entonces tienes un problema mayor
Sander Mangel
@SanderMangel, deshabilité todas las extensiones de terceros, no hizo la diferencia. Verifiqué la excepción y los registros del sistema, y ​​no veo ningún error que coincida con el momento en que hice clic en 'editar pedido'
mendel

Respuestas:

3

Tuve este problema Mi problema fue que same_as_billing_addressse estableció en la dirección de envío a través de la interfaz, por lo que el backend pensó que no había una segunda dirección y omitió el renderizado.

Verifique su interfaz, si envía datos correctos.

Fabian Blechschmidt
fuente
cuando el cliente ingresa el pedido, puede seleccionar Enviar a esta dirección o enviar a una dirección diferente, si selecciona enviar a una dirección diferente, puede ingresar una dirección de envío. la página de pedido de ventas de administrador muestra ambas direcciones hasta que edite el pedido. en la tabla sales_order_flat no veo una columna same_as_billing_address, pero sí veo shipping_address_id y billing_address_id y son diferentes. ¿Quizás no estoy buscando en el lugar correcto?
mendel
Encontré el campo same_as_billing en la tabla sales_flat_quote_address y está configurado en 0 para aquellos pedidos en los que un cliente ingresó una dirección de envío diferente.
mendel
Entonces tienes otro problema :-(
Fabian Blechschmidt
También he comprobado esto, y su solución tampoco se aplica a mí. same_as_billing_addressestá configurado correctamente
Louis B.
2

No pude reproducirlo en Magento 1.9.

No hay corrección de errores para esto mencionado en las notas de la versión, sin embargo, encontré lo siguiente en las notas de la versión 1.8.0.0 :

Pedidos administrativos y arreglos de notas de crédito

  • Cuando crea un pedido utilizando el Panel de administración y ha especificado una dirección de facturación predeterminada y una dirección de envío predeterminada, las direcciones se usan correctamente.

Posiblemente esto esté relacionado y también se corrigió el error. Las notas de la versión no siempre están completas.

Fabian Schmengler
fuente
1

He encontrado el mismo problema en los últimos Magento 1.9.2.4 y 2.0.5.

Guión:

  1. El huésped hace un pedido
  2. El pedido tiene diferentes direcciones de facturación y envío
  3. 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?

Luke Banka
fuente
1

Tuve el mismo problema con Magento 1.7 y corrigió con este cambio en: app / code / core / Mage / Adminhtml / Model / Sales / Order / Create.php

Necesita sobrescribir la clase de manera limpia :)

Cambie el método: _initShippingAddressFromOrder con este código:

protected function _initShippingAddressFromOrder(Mage_Sales_Model_Order $order)
{
    $this->getQuote()->getShippingAddress()->setCustomerAddressId('');
    Mage::helper('core')->copyFieldset(
        'sales_copy_order_shipping_address',
        'to_order',
        $order->getShippingAddress(),
        $this->getQuote()->getShippingAddress()
    );
    $this->getQuote()->getShippingAddress()->setSameAsBilling(false);
    if($order->getShippingAddress()->getCustomerAddressId() && $order->getShippingAddress()->getCustomerAddressId() == $order->getBillingAddress()->getCustomerAddressId()) {
        $this->getQuote()->getShippingAddress()->setSameAsBilling(true);
    }
}
Maxime Huran
fuente
Gracias, esa instalación de magento ha pasado por una serie de actualizaciones y extensiones y ya no puedo reproducir el problema, así que no puedo probar su solución.
mendel