Quản trị viên chỉnh sửa đơn hàng mất địa chỉ giao hàng


10

Khách hàng nhập đơn hàng với các địa chỉ giao hàng / thanh toán khác nhau.

nếu chúng ta cần chỉnh sửa đơn hàng trong quản trị viên, nó sẽ tạo một đơn hàng mới, theo thứ tự mới, địa chỉ giao hàng mặc định là 'giống như thanh toán' và địa chỉ giao hàng ban đầu sẽ bị mất!

  1. bất cứ ai có thể xác nhận nếu cài đặt của họ làm như vậy.
  2. Có ai có giải pháp không.


2
Tôi duy trì khá nhiều 1.7 cửa hàng và không ai trong số họ có cái này
Sander Mangel

@SanderMeach, cảm ơn bạn. Vì vậy, bây giờ chúng ta cần tìm hiểu tại sao nó xảy ra trong cài đặt của tôi. Bất kỳ đề xuất?
mendel 16/12/13

Kiểm tra nhật ký của bạn, cả Magento và Apache. Nếu tất cả đều ổn, hãy tắt tất cả các tiện ích mở rộng của bên thứ 3 thông qua ứng dụng / etc / mô-đun để xem liệu điều đó có gây ra sự cố không. Nếu điều đó không giúp ... tốt ... thì bạn có một vấn đề lớn hơn
Sander Mangel

@SanderMangel, tôi đã tắt tất cả các tiện ích mở rộng của bên thứ 3, không tạo ra sự khác biệt. Tôi đã kiểm tra ngoại lệ và nhật ký hệ thống và tôi không thấy bất kỳ lỗi nào trùng với thời điểm tôi nhấp vào 'chỉnh sửa thứ tự'
mendel 17/12/13

Câu trả lời:


3

Tôi đã có vấn đề này. Vấn đề của tôi là, same_as_billing_addressđược đặt trên địa chỉ giao hàng qua frontend, do đó, phụ trợ nghĩ, không có địa chỉ thứ hai và bỏ qua kết xuất.

Kiểm tra lối vào của bạn, xem nó có gửi dữ liệu chính xác không.


Khi khách hàng nhập đơn hàng, họ có thể chọn Giao hàng đến địa chỉ này hoặc gửi đến địa chỉ khác, nếu họ chọn gửi đến địa chỉ khác, họ có thể nhập địa chỉ giao hàng. trang đặt hàng của quản trị viên hiển thị cả hai địa chỉ cho đến khi tôi chỉnh sửa đơn hàng. trong bảng sales_order_flat tôi không thấy một cột same_as_billing_address, nhưng tôi thấy vận chuyển_address_id và billing_address_id và chúng khác nhau. Có lẽ tôi không tìm đúng chỗ?
mendel

Tôi đã tìm thấy trường same_as_billing trong bảng sales_flat_quote_address và nó được đặt thành 0 cho các đơn hàng nơi khách hàng nhập địa chỉ giao hàng khác.
mendel

Sau đó, bạn có một vấn đề khác :-(
Fabian Blechschmidt

Tôi cũng đã kiểm tra điều này và giải pháp của bạn cũng không áp dụng cho tôi. same_as_billing_addressđược đặt chính xác.
Louis B.

2

Tôi không thể sao chép nó trên Magento 1.9.

Không có lỗi cho điều này được đề cập trong ghi chú phát hành, tuy nhiên tôi đã tìm thấy sau đây trong ghi chú phát hành 1.8.0.0 :

Đặt hàng hành chính và sửa lỗi ghi nhớ tín dụng

  • Khi bạn tạo đơn hàng bằng Bảng quản trị và bạn đã chỉ định địa chỉ thanh toán mặc định và địa chỉ giao hàng mặc định, địa chỉ được sử dụng chính xác.

Có thể điều này có liên quan và sửa lỗi là tốt. Các ghi chú phát hành không phải lúc nào cũng đầy đủ.


1

Tôi đã gặp vấn đề tương tự trong Magento 1.9.2.4 và 2.0.5 mới nhất.

Kịch bản:

  1. Khách đặt hàng
  2. Đơn hàng có địa chỉ Thanh toán và Giao hàng khác nhau
  3. Quản trị viên chỉnh sửa thứ tự trong Bảng quản trị

Kết quả: Địa chỉ giao hàng bị mất và thay vào đó là địa chỉ thanh toán.

Lý do: Phương thức _isSameAsBilling () luôn trả về giá trị đúng nếu đơn đặt hàng được đặt bởi Khách. Đó là hành vi không đúng đắn.

Phương pháp trong câu hỏi:

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

Như bạn có thể thấy nếu Khách hàng chưa đăng ký, phương thức _isSameAsBilling () trả về đúng ngay cả khi địa chỉ Thanh toán và Giao hàng khác nhau.

Nó có ý nghĩa nghiêm trọng đối với tất cả các đơn đặt hàng được chỉnh sửa thông qua Bảng quản trị vì Địa chỉ giao hàng ban đầu bị mất.

Đây có phải là một lỗi hoặc tôi đang thiếu một cái gì đó?


1

Có cùng một vấn đề với Magento 1.7 và chính xác với thay đổi này trên: app / code / core / Mage / adminhtml / Model / Sales / Order / Create.php

Bạn cần ghi đè lên lớp một cách sạch sẽ :)

Thay đổi phương thức: _initShippingAddressFromOrder với mã này:

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

Cảm ơn, cài đặt magento đó đã đi qua một số bản cập nhật và tiện ích mở rộng và tôi không còn có thể tái tạo vấn đề nên tôi không thể kiểm tra sửa lỗi của bạn.
mendel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.