관리자 수정 주문에서 배송 주소가 사라짐


10

고객이 다른 운송 / 청구 주소로 주문을 입력합니다.

관리자에서 주문을 수정해야하는 경우 새 주문이 생성되며, 새 주문에서 배송 주소는 기본적으로 '청구서와 동일'하며 원래 배송 주소는 손실됩니다!

  1. 설치가 동일하게 수행되는지 누구나 확인할 수 있습니다.
  2. 누구나 해결책이 있습니다.


2
나는 1.7 개 정도의 상점을 유지하고 있으며 이것들 중 어느 것도 이것을 가지고 있지 않다
Sander Mangel

@SanderMangel, 감사합니다. 이제 설치에서 왜 발생하는지 알아 내야합니다. 어떤 제안?
mendel

Magento와 Apache 모두 로그를 확인하십시오. 괜찮다면 app / etc / modules를 통해 모든 타사 확장 프로그램을 끄고 이것이 원인인지 확인하십시오. 그것이 도움이되지 않는다면 ... 음 ... 더 큰 문제가 있습니다
Sander Mangel

@SanderMangel, 모든 타사 확장 프로그램을 비활성화했지만 차이가 없었습니다. 예외 및 시스템 로그를 확인
했는데

답변:


3

나는이 문제가 있었다. 내 문제는 same_as_billing_address프론트 엔드를 통해 배송 주소로 설정되었으므로 백엔드가 생각하고 두 번째 주소가 없으며 렌더링을 건너 뛰었습니다.

프론트 엔드가 올바른 데이터를 제출하는지 확인하십시오.


고객이 주문을 입력하면이 주소로 배송 또는 다른 주소로 배송하도록 선택할 수 있습니다. 다른 주소로 배송하도록 선택한 경우 배송 주소를 입력 할 수 있습니다. 주문을 편집 할 때까지 관리자 판매 주문 페이지에 두 주소가 모두 표시됩니다. sales_order_flat 테이블에는 same_as_billing_address 열이 표시되지 않지만 shipping_address_id 및 billing_address_id가 표시되며 서로 다릅니다. 아마도 올바른 장소를 찾지 못하고 있습니까?
mendel

sales_flat_quote_address 테이블에서 same_as_billing 필드를 찾았으며 고객이 다른 운송 주소를 입력 한 주문의 경우 0으로 설정되었습니다.
mendel

그렇다면 또 다른 문제가 있습니다 :-(
Fabian Blechschmidt

또한 이것을 확인했으며 귀하의 솔루션도 나에게 적용되지 않습니다. same_as_billing_address올바르게 설정되어 있습니다.
Louis B.

2

마 젠토 1.9에서 재현 할 수 없었습니다.

릴리스 노트에 언급 된 버그 수정은 없지만 1.8.0.0 릴리스 노트 에서 다음을 발견했습니다 .

행정 명령 및 대변 메모 수정

  • 관리자 패널을 사용하여 주문을 작성하고 기본 청구 주소와 기본 운송 주소를 지정하면 주소가 올바르게 사용됩니다.

아마도 이것은 관련이 있고 버그도 수정했습니다. 릴리스 노트가 항상 완전한 것은 아닙니다.


1

최신 Magento 1.9.2.4 및 2.0.5에서 동일한 문제가 발생했습니다.

대본:

  1. 손님 주문
  2. 주문에 청구 지 및 배송지 주소가 다릅니다.
  3. 관리자는 관리자 패널에서 주문을 편집합니다

결과 : 배송지 주소가 손실되고 청구 지 주소가 대신 표시됩니다.

이유 : _isSameAsBilling () 메소드가 항상 반환 사실 순서가 게스트로 배치 된 경우. 적절한 행동이 아닙니다.

문제의 방법 :

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

마 젠토 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

app / code / core / Mage / Adminhtml / Model / Sales / Order / Create.php에서 Magento 1.7과 동일한 문제가 발생했으며 다음과 같이 변경되었습니다.

깨끗한 방법으로 클래스를 덮어 써야합니다 :)

이 코드를 사용하여 _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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.