管理员编辑订单丢失送货地址


10

客户输入的送货/账单地址不同。

如果我们需要在admin中编辑订单,它将创建一个新订单,在新订单中,送货地址默认为“与帐单相同”,并且原始送货地址丢失了!

  1. 任何人都可以确认其安装是否也一样。
  2. 有没有人有办法解决吗。


2
我保持相当多的1.7商店和他们都没有这
桑德甜菜

@SanderMangel,谢谢。所以现在我们需要弄清楚为什么它会在我的安装中发生。有什么建议么?
mendel

检查您的日志,Magento和Apache。如果一切正常,请通过app / etc / modules关闭所有第三方扩展,以查看是否引起此问题。如果那没有帮助...好...那么您还有一个大问题
Sander Mangel

@SanderMangel,我禁用了所有3rd Party扩展,并没有改变。我检查了异常和系统日志,但没有看到与单击“编辑命令”的时间相符的任何错误
mendel 2013年

Answers:


3

我有这个问题。我的问题是,这same_as_billing_address是通过前端设置的运送地址,因此后端认为没有第二个地址,因此跳过了渲染。

检查您的前端,是否提交正确的数据。


当客户输入订单时,他们可以选择运送到该地址或运送到其他地址,如果他们选择运送到其他地址,则可以输入运送地址。管理员销售订单页面会显示两个地址,直到我编辑订单为止。在sales_order_flat表中,我没有看到same_as_billing_address列,但确实看到了shipping_address_id和billing_address_id,它们是不同的。也许我找的地方不对?
Mendel 2014年

我在表sales_flat_quote_address中找到字段same_as_billing,对于那些客户输入其他送货地址的订单,该字段设置为0。
mendel 2014年

然后,您还有另一个问题:-(
Fabian Blechschmidt 2014年

我也检查了这一点,您的解决方案也不适用于我。same_as_billing_address设置正确。
Louis B.

2

我无法在Magento 1.9上重现它。

发行说明中没有针对此的错误修正,但是我在1.8.0.0发行说明中发现了以下内容:

行政命令和贷项通知单修复

  • 使用管理面板创建订单并指定默认的帐单邮寄地址和默认的送货地址时,将正确使用这些地址。

可能这是相关的,并且还修复了该错误。发行说明并不总是完整的。


1

我在最新的Magento 1.9.2.4和2.0.5中遇到了相同的问题。

场景:

  1. 客人下订单
  2. 订单具有不同的帐单和送货地址
  3. 管理员在管理面板中编辑订单

结果: 收货地址丢失,而是显示帐单地址。

原因:_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()方法也会返回true

由于原来的收货地址丢失,这对通过管理面板编辑的所有订单都具有严重影响。

这是一个错误还是我错过了什么?


1

Magento 1.7遇到了相同的问题,并通过以下更改进行了纠正:app / code / core / Mage / Adminhtml / Model / Sales / Order / Create.php

您需要以一种干净的方式覆盖该类:)

使用以下代码更改方法:_initShippingAddressFromOrder:

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);
    }
}

谢谢,该magento安装已通过许多更新和扩展,并且我无法再出现此问题,因此无法测试您的修复。
Mendel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.