L'administrateur modifie la commande perd son adresse de livraison

10

Le client saisit la commande avec différentes adresses de livraison / facturation.

si nous devons modifier la commande dans admin, cela crée une nouvelle commande, dans la nouvelle commande, l'adresse de livraison par défaut est «identique à la facturation» et l'adresse de livraison d'origine est perdue!

  1. quelqu'un peut-il confirmer si son installation fait de même.
  2. Quelqu'un a-t-il une solution.
mendel
la source
2
Je maintiens pas mal de 1,7 magasins et aucun d'entre eux n'en a
Sander Mangel
@SanderMangel, merci. alors maintenant nous devons comprendre pourquoi cela se produit sur mon installation. Aucune suggestion?
mendel
Vérifiez vos journaux, Magento et Apache. Si tout va bien, désactivez toutes les extensions tierces via l'application / etc / modules pour voir si cela en est la cause. Si cela n'aide pas ... eh bien ... alors vous avez un problème plus important
Sander Mangel
@SanderMangel, j'ai désactivé toutes les extensions tierces, n'a pas fait de différence. J'ai vérifié l'exception et les journaux système, et je ne vois aucune erreur qui coïncide avec le moment où j'ai cliqué sur "modifier la commande"
mendel

Réponses:

3

J'ai eu ce problème. Mon problème était que cela same_as_billing_addressétait réglé sur l'adresse de livraison via le frontend, donc le backend pensait qu'il n'y avait pas de deuxième adresse et a sauté le rendu.

Vérifiez votre interface, si elle envoie des données correctes.

Fabian Blechschmidt
la source
lorsque le client saisit la commande, il peut choisir d'expédier à cette adresse ou d'expédier à une autre adresse, s'il choisit d'expédier à une autre adresse, il peut entrer une adresse d'expédition. la page de commande client d'administration affiche les deux adresses jusqu'à ce que je modifie la commande. dans la table sales_order_flat, je ne vois pas de colonne same_as_billing_address, mais je vois shipping_address_id et billing_address_id et ils sont différents. Peut-être que je ne cherche pas au bon endroit?
mendel
J'ai trouvé le champ same_as_billing dans la table sales_flat_quote_address et il est défini sur 0 pour les commandes où un client a entré une adresse de livraison différente.
mendel
Ensuite, vous avez un autre problème :-(
Fabian Blechschmidt
J'ai également vérifié cela, et votre solution ne s'applique pas non plus à moi. same_as_billing_addressest réglé correctement.
Louis B.
2

Je n'ai pas pu le reproduire sur Magento 1.9.

Il n'y a pas de correction de bogue pour cela mentionné dans les notes de version, mais j'ai trouvé ce qui suit dans les notes de version 1.8.0.0 :

Ordonnance administrative et corrections de note de crédit

  • Lorsque vous créez une commande à l'aide du panneau d'administration et que vous avez spécifié une adresse de facturation par défaut et une adresse de livraison par défaut, les adresses sont utilisées correctement.

Cela est peut-être lié et a également corrigé le bogue. Les notes de version ne sont pas toujours complètes.

Fabian Schmengler
la source
1

J'ai rencontré le même problème dans les derniers Magento 1.9.2.4 et 2.0.5.

Scénario:

  1. Le client passe une commande
  2. La commande a des adresses de facturation et d'expédition différentes
  3. L'administrateur modifie la commande dans le panneau d'administration

Résultat: l' adresse de livraison est perdue et l'adresse de facturation s'affiche à la place.

Raison: Le _isSameAsBilling () méthode retourne toujours vrai si la commande a été placée par un client. Ce n'est pas un bon comportement.

La méthode en question:

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

Comme vous pouvez le voir si le client n'est pas enregistré, la méthode _isSameAsBilling () renvoie true même si les adresses de facturation et d'expédition sont différentes.

Cela a de graves conséquences sur toutes les commandes modifiées via le panneau d'administration car l'adresse de livraison d'origine est perdue.

Est-ce un bug ou est-ce que je manque quelque chose?

Luke Banka
la source
1

J'ai eu le même problème avec Magento 1.7 et corrigez ce changement sur: app / code / core / Mage / Adminhtml / Model / Sales / Order / Create.php

Vous devez écraser la classe d'une manière propre :)

Modifiez la méthode: _initShippingAddressFromOrder avec ce 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
la source
Merci, cette installation de magento est passée par un certain nombre de mises à jour et d'extensions et je ne peux plus reproduire le problème, je ne peux donc pas tester votre correctif.
mendel