Polecenie edycji przez administratora traci adres wysyłki

10

Klient wprowadza zamówienie z różnymi adresami wysyłki / fakturowania.

jeśli musimy edytować zamówienie w admin, tworzy nowe zamówienie, w nowym zamówieniu domyślnie adres wysyłki jest taki sam jak „fakturowanie”, a oryginalny adres wysyłki zostaje utracony!

  1. może ktoś potwierdzić, czy ich instalacja robi to samo.
  2. czy ktoś ma rozwiązanie.
Mendel
źródło
2
Prowadzę całkiem sporo 1,7 sklepów i żaden z nich tego nie ma
Sander Mangel
@SanderMangel, dziękuję. więc teraz musimy dowiedzieć się, dlaczego tak się dzieje w mojej instalacji. Jakieś sugestie?
Mendel
Sprawdź swoje dzienniki, zarówno Magento, jak i Apache. Jeśli to wszystko w porządku, wyłącz wszystkie rozszerzenia innych firm za pośrednictwem aplikacji / etc / modułów, aby zobaczyć, czy to powoduje. Jeśli to nie pomoże ... cóż ... masz większy problem
Sander Mangel
@ SanderMangel, wyłączyłem wszystkie rozszerzenia innych firm, nie zrobiłem różnicy. Sprawdziłem wyjątek i dzienniki systemowe i nie widzę żadnych błędów, które pokrywają się z czasem, kiedy kliknąłem „edytuj zamówienie”
mendel

Odpowiedzi:

3

Miałem ten problem. Mój problem polegał na tym, że same_as_billing_addresszostał ustawiony na adres wysyłki przez frontend, dlatego backend pomyślał, że nie ma drugiego adresu i pominął renderowanie.

Sprawdź swój interfejs, czy przesyła poprawne dane.

Fabian Blechschmidt
źródło
kiedy klient wprowadzi zamówienie, może wybrać opcję Wysyłki na ten adres lub wysyłkę na inny adres, jeśli zdecyduje się na wysyłkę na inny adres, może wprowadzić adres wysyłki. strona zamówienia sprzedaży dla administratora pokazuje oba adresy, dopóki nie edytuję zamówienia. w tabeli Sales_order_flat nie widzę kolumny same_as_billing_address, ale widzę id_adresu wysyłki i id_adresu rozliczeń i są one różne. Może nie wyglądam we właściwym miejscu?
Mendel
Znalazłem pole same_as_billing w tabeli sales_flat_quote_address i jest ustawione na 0 dla zamówień, w których klient wprowadził inny adres wysyłki.
Mendel
Masz kolejny problem :-(
Fabian Blechschmidt
Sprawdziłem to również i twoje rozwiązanie również mnie nie dotyczy. same_as_billing_addressjest ustawiony poprawnie.
Louis B.
2

Nie mogłem go odtworzyć na Magento 1.9.

Nie ma poprawki dla tego wymienionego w uwagach do wydania, jednak znalazłem następujące informacje w uwagach do wydania 1.8.0.0 :

Zamówienia administracyjne i poprawki do noty kredytowej

  • Gdy tworzysz zamówienie za pomocą panelu administracyjnego i podałeś domyślny adres rozliczeniowy oraz domyślny adres wysyłki, adresy są używane poprawnie.

Możliwe, że jest to powiązane i również naprawiło błąd. Informacje o wersji nie zawsze są kompletne.

Fabian Schmengler
źródło
1

Ten sam problem napotkałem w najnowszych wersjach Magento 1.9.2.4 i 2.0.5.

Scenariusz:

  1. Gość składa zamówienie
  2. Zamówienie ma różne adresy do fakturowania i wysyłki
  3. Administrator edytuje zamówienie w panelu administracyjnym

Wynik: adres wysyłki został utracony, a zamiast tego wyświetlony jest adres rozliczeniowy.

Powód: Metoda _isSameAsBilling () zawsze zwraca true, jeśli zamówienie zostało złożone przez gościa. To nie jest właściwe zachowanie.

Metoda, o której mowa:

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

Jak widać, jeśli Klient nie jest zarejestrowany, metoda _isSameAsBilling () zwraca wartość true, nawet jeśli adresy do fakturowania i wysyłki są różne.

Ma to poważny wpływ na wszystkie zamówienia edytowane za pomocą panelu administracyjnego, ponieważ oryginalny adres wysyłki został utracony.

Czy to błąd, czy coś brakuje?

Luke Banka
źródło
1

Miałem ten sam problem z Magento 1.7 i poprawiłem z tą zmianą na: app / code / core / Mage / Adminhtml / Model / Sales / Order / Create.php

Musisz nadpisać klasę w czysty sposób :)

Zmień metodę: _initShippingAddressFromOrder za pomocą tego kodu:

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);
    }
}
Maxime Huran
źródło
Dzięki, że instalacja Magento przeszła przez szereg aktualizacji i rozszerzeń i nie mogę już odtworzyć problemu, więc nie mogę przetestować twojej poprawki.
Mendel