Порядок редагування адміністратора втрачає адресу доставки


10

Клієнт вносить замовлення з різними адресами доставки / виставлення рахунків.

якщо нам потрібно відредагувати замовлення в адміністраторі, він створює нове замовлення, у новому порядку адреса доставки за замовчуванням має значення "те саме, що і виставлення рахунків", і початкова адреса доставки втрачається!

  1. може хто-небудь підтвердити, якщо їх установка робить те саме.
  2. хтось має рішення.


2
Я підтримую декілька 1.7 магазинів, і жоден з них не має цього
Sander Mangel

@SanderMangel, дякую тому зараз нам потрібно з’ясувати, чому це відбувається на моїй установці. Будь-які пропозиції?
mendel

Перевірте свої журнали, як Magento, так і Apache. Якщо це все нормально, вимкніть усі розширення третьої сторони за допомогою програми / etc / module, щоб побачити, чи це спричиняє це. Якщо це не допоможе ... ну ... тоді у вас є більша проблема
Сандер Манґел

@SanderMangel, я відключив усі розширення сторонніх розробників, нічого не змінив. Я перевірив винятки та системні журнали, і не бачу помилок, які збігаються з часом натискання "редагувати замовлення"
mendel

Відповіді:


3

У мене була ця проблема. Моя проблема полягала в тому, що вона same_as_billing_addressбула встановлена ​​на адресу доставки через фронтленд, тому думка про запуск, друга адреса не була, і пропустив візуалізацію.

Перевірте свій інтерфейс, чи він подає правильні дані.


коли клієнт вводить замовлення, він може вибрати для доставки на цю адресу або доставку на іншу адресу, якщо він вирішить відправити на іншу адресу, він може ввести адресу доставки. на сторінці замовлення адміністратора продаж відображаються обидві адреси, поки я не редагую замовлення. у таблиці sales_order_flat я не бачу стовпця same_as_billing_address, але я бачу shipping_address_id та billing_address_id, і вони різні. Можливо, я не шукаю в потрібному місці?
mendel

Я знайшов поле same_as_billing у таблиці sales_flat_quote_address, і воно встановлено на 0 для тих замовлень, де клієнт ввів іншу адресу доставки.
mendel

Тоді у вас є ще одна проблема :-(
Fabian Blechschmidt

Я також перевірив це, і ваше рішення також не стосується мене. same_as_billing_addressвстановлено правильно.
Луї Б.

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 () повертає істину, навіть якщо адреси виставлення рахунків та доставки відрізняються.

Це має серйозні наслідки для всіх замовлень, відредагованих через Панель адміністратора, оскільки оригінальна адреса доставки втрачена.

Це помилка чи я щось пропускаю?


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.