管理編集注文が配送先住所を失う


10

顧客は異なる配送先/請求先住所で注文を入力します。

管理者で注文を編集する必要がある場合は、新しい注文が作成されます。新しい注文では、配送先住所はデフォルトで「請求と同じ」になり、元の配送先住所は失われます。

  1. 彼らのインストールが同じかどうか誰でも確認できます
  2. 誰かが解決策を持っていますか?


2
私はかなりの数の1.7ショップを運営していますが、どのショップにもこれはありません
サンダーマンジェル

@SanderMangel、ありがとう。だから今、私はそれが私のインストールで起こっている理由を理解する必要があります。助言がありますか?
メンデル

MagentoとApacheの両方のログを確認してください。問題がなければ、app / etc / modulesを介してサードパーティの拡張機能をすべてオフにし、それが原因かどうかを確認します。
それでも

@SanderMangel、私はすべてのサードパーティの拡張機能を無効にしましたが、違いはありませんでした。例外とシステムログを確認しましたが、[注文を編集]をクリックした時刻と一致するエラーは表示されませんでした
mendel

回答:


3

私はこの問題を抱えていました。私の問題は、それsame_as_billing_addressがフロントエンドを介した配送先住所に設定されていたため、バックエンドが2番目の住所がないと考え、レンダリングをスキップしたことでした。

フロントエンドが正しいデータを送信するかどうかを確認します。


お客様が注文を入力するときに、この住所への発送または別の住所への発送を選択できます。別の住所への発送を選択した場合は、発送先住所を入力できます。管理注文ページには、注文を編集するまで両方の住所が表示されます。sales_order_flatテーブルには、same_as_billing_addressという列はありませんが、shipping_address_idとbilling_address_idはありますが、それらは異なります。おそらく私は正しい場所を探していませんか?
メンデル

テーブルsales_flat_quote_addressでフィールドsame_as_billingを見つけ、顧客が別の配送先住所を入力した注文の場合は0に設定されています。
メンデル

次に、別の問題があります:-(
Fabian Blechschmidt 14年

私もこれを確認しましたが、あなたの解決策も私には当てはまりません。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()));
    }

Customerが登録されていない場合は、請求先住所と配送先住所が異なっていても、_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のインストールはいくつかの更新と拡張を経て、問題を再現できなくなったため、修正をテストできません。
メンデル2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.