Der Bearbeitungsauftrag des Administrators verliert die Lieferadresse

10

Der Kunde gibt die Bestellung mit unterschiedlichen Versand- / Rechnungsadressen ein.

Wenn wir die Bestellung in admin bearbeiten müssen, wird eine neue Bestellung erstellt. In der neuen Bestellung lautet die Lieferadresse standardmäßig "wie Rechnungsstellung" und die ursprüngliche Lieferadresse geht verloren!

  1. kann jemand bestätigen, ob seine Installation das gleiche tut.
  2. Hat jemand eine Lösung.
Mendel
quelle
2
Ich unterhalte einige 1.7 Geschäfte und keiner von ihnen hat dies
Sander Mangel
@ SandersMangel, danke. Jetzt müssen wir herausfinden, warum dies bei meiner Installation passiert. Irgendwelche Vorschläge?
Mendel
Überprüfen Sie Ihre Protokolle, sowohl Magento als auch Apache. Wenn das alles in Ordnung ist, schalten Sie alle Erweiterungen von Drittanbietern über app / etc / modules aus, um zu sehen, ob dies die Ursache ist. Wenn das nicht hilft ... nun ... dann haben Sie ein größeres Problem
Sander Mangel
@SanderMangel, ich habe alle Erweiterungen von Drittanbietern deaktiviert, machte keinen Unterschied. Ich habe die Ausnahme- und Systemprotokolle überprüft und sehe keine Fehler, die mit dem Zeitpunkt übereinstimmen, als ich auf "Bearbeitungsreihenfolge" geklickt habe
mendel

Antworten:

3

Ich hatte dieses Problem. Mein Problem war, dass same_as_billing_addressdie Versandadresse über das Frontend eingestellt wurde, daher dachte das Backend, es gäbe keine zweite Adresse und übersprang das Rendering.

Überprüfen Sie Ihr Frontend, ob es korrekte Daten übermittelt.

Fabian Blechschmidt
quelle
Wenn der Kunde die Bestellung eingibt, kann er auswählen, ob er an diese Adresse oder an eine andere Adresse versenden möchte. Wenn er an eine andere Adresse versendet, kann er eine Versandadresse eingeben. Auf der Seite mit den Kundenaufträgen für Administratoren werden beide Adressen angezeigt, bis ich die Bestellung bearbeite. In der Tabelle "sales_order_flat" wird keine Spalte "same_as_billing_address" angezeigt, aber ich sehe "Versandadresse_ID" und "Rechnungs_Adresse_ID" und sie sind unterschiedlich. Vielleicht suche ich nicht am richtigen Ort?
Mendel
Ich habe das Feld same_as_billing in der Tabelle sales_flat_quote_address gefunden und es wird für Bestellungen auf 0 gesetzt, bei denen ein Kunde eine andere Lieferadresse eingegeben hat.
Mendel
Dann haben Sie ein anderes Problem :-(
Fabian Blechschmidt
Ich habe dies auch überprüft, und Ihre Lösung trifft auch nicht auf mich zu. same_as_billing_addressist richtig eingestellt.
Louis B.
2

Ich konnte es auf Magento 1.9 nicht reproduzieren.

Es gibt keinen Bugfix dafür, der in den Versionshinweisen erwähnt wird. In den Versionshinweisen zu 1.8.0.0 habe ich jedoch Folgendes gefunden :

Administrative Bestell- und Gutschriftskorrekturen

  • Wenn Sie eine Bestellung über das Admin-Panel erstellen und eine Standard-Rechnungsadresse und eine Standard-Lieferadresse angegeben haben, werden die Adressen korrekt verwendet.

Möglicherweise hängt dies damit zusammen und hat den Fehler ebenfalls behoben. Die Versionshinweise sind nicht immer vollständig.

Fabian Schmengler
quelle
1

Ich habe das gleiche Problem in den neuesten Magento 1.9.2.4 und 2.0.5 festgestellt.

Szenario:

  1. Gast gibt eine Bestellung auf
  2. Die Bestellung hat unterschiedliche Rechnungs- und Lieferadressen
  3. Der Administrator bearbeitet die Reihenfolge im Admin-Bereich

Ergebnis: Die Lieferadresse geht verloren und stattdessen wird die Rechnungsadresse angezeigt.

Grund: Die Methode _isSameAsBilling () gibt immer true zurück , wenn die Bestellung von einem Gast aufgegeben wurde. Es ist kein richtiges Verhalten.

Die fragliche Methode:

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

Wie Sie sehen können, wenn der Kunde nicht registriert ist, gibt die Methode _isSameAsBilling () true zurück , auch wenn die Rechnungs- und Versandadressen unterschiedlich sind.

Dies hat schwerwiegende Auswirkungen auf alle Bestellungen, die über das Admin-Panel bearbeitet werden, da die ursprüngliche Lieferadresse verloren geht.

Ist das ein Fehler oder fehlt mir etwas?

Luke Banka
quelle
1

Hatte das gleiche Problem mit Magento 1.7 und korrigierte es mit dieser Änderung auf: app / code / core / Mage / Adminhtml / Model / Sales / Order / Create.php

Sie müssen die Klasse auf saubere Weise überschreiben :)

Ändern Sie die Methode: _initShippingAddressFromOrder mit diesem Code:

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
quelle
Vielen Dank, dass die Magento-Installation eine Reihe von Updates und Erweiterungen durchlaufen hat und ich das Problem nicht mehr reproduzieren kann, sodass ich Ihr Update nicht testen kann.
Mendel