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.


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.


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.


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?


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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.