L'ordine di modifica dell'amministratore perde l'indirizzo di spedizione


10

Il cliente inserisce l'ordine con diversi indirizzi di spedizione / fatturazione.

se abbiamo bisogno di modificare l'ordine in admin crea un nuovo ordine, nel nuovo ordine l'indirizzo di spedizione predefinito è 'uguale alla fatturazione' e l'indirizzo di spedizione originale è perso!

  1. qualcuno può confermare se la loro installazione fa lo stesso.
  2. qualcuno ha una soluzione?


2
Mantengo un bel po 'di 1,7 negozi e nessuno di questi ha questo
Sander Mangel

@SanderMangel, grazie. quindi ora dobbiamo capire perché sta accadendo sulla mia installazione. Eventuali suggerimenti?
Mendel

Controlla i tuoi registri, sia Magento che Apache. Se è tutto ok, disattiva tutte le estensioni di terze parti tramite l'app / etc / module per vedere se ciò lo causa. Se questo non aiuta ... beh ... allora hai un problema più grande
Sander Mangel

@SanderMangel, ho disabilitato tutte le estensioni di terze parti, non ha fatto differenza. Ho controllato l'eccezione e i registri di sistema e non vedo alcun errore che coincida con il momento in cui ho fatto clic su "modifica ordine"
Mendel

Risposte:


3

Ho avuto questo problema Il mio problema era che same_as_billing_addressera impostato sull'indirizzo di spedizione attraverso il frontend, quindi il backend pensava che non esistesse un secondo indirizzo e che il rendering fosse saltato.

Controlla il tuo frontend, se invia dati corretti.


quando il cliente inserisce l'ordine può scegliere di spedire a questo indirizzo o spedire a un indirizzo diverso, se sceglie di spedire a un indirizzo diverso può inserire un indirizzo di spedizione. la pagina dell'ordine di vendita amministratore mostra entrambi gli indirizzi fino a quando non modifico l'ordine. nella tabella sales_order_flat non vedo una colonna same_as_billing_address, ma vedo shipping_address_id e billing_address_id e sono diversi. Forse non sto cercando nel posto giusto?
Mendel

Ho trovato il campo same_as_billing nella tabella sales_flat_quote_address ed è impostato su 0 per quegli ordini in cui un cliente ha inserito un indirizzo di spedizione diverso.
Mendel

Quindi hai un altro problema :-(
Fabian Blechschmidt,

Ho anche verificato questo e la tua soluzione non si applica neanche a me. same_as_billing_addressè impostato correttamente.
Louis B.

2

Non sono riuscito a riprodurlo su Magento 1.9.

Non ci sono correzioni di bug menzionate nelle note di rilascio, tuttavia ho trovato quanto segue nelle note di rilascio 1.8.0.0 :

Ordinazioni amministrative e correzioni di note di credito

  • Quando crei un ordine utilizzando il Pannello di amministrazione e hai specificato un indirizzo di fatturazione predefinito e un indirizzo di spedizione predefinito, gli indirizzi vengono utilizzati correttamente.

Forse questo è correlato e risolto anche il bug. Le note di rilascio non sono sempre complete.


1

Ho riscontrato lo stesso problema nell'ultimo Magento 1.9.2.4 e 2.0.5.

Scenario:

  1. L'ospite effettua un ordine
  2. L'ordine ha diversi indirizzi di fatturazione e spedizione
  3. L'amministratore modifica l'ordine nel Pannello di amministrazione

Risultato: l'indirizzo di spedizione viene perso e viene invece visualizzato l'indirizzo di fatturazione.

Motivo: il metodo _isSameAsBilling () restituisce sempre true se l'ordine è stato effettuato da un Ospite. Non è un comportamento corretto.

Il metodo in questione:

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

Come puoi vedere se il cliente non è registrato, il metodo _isSameAsBilling () restituisce true anche se gli indirizzi di fatturazione e spedizione sono diversi.

Ha serie implicazioni su tutti gli ordini modificati tramite il Pannello di amministrazione poiché l'indirizzo di spedizione originale viene perso.

È un bug o mi sto perdendo qualcosa?


1

Ha avuto lo stesso problema con Magento 1.7 e corretto con questa modifica su: app / code / core / Mage / Adminhtml / Model / Sales / Order / Create.php

Devi sovrascrivere la classe in modo pulito :)

Modifica il metodo: _initShippingAddressFromOrder con questo codice:

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

Grazie, l'installazione di Magento è passata attraverso una serie di aggiornamenti ed estensioni e non riesco più a riprodurre il problema, quindi non posso testare la tua correzione.
Mendel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.