9
votes

Comment obtenir l'expédition / la facturation ID d'adresse d'une commande à l'extérieur de l'API de base de Magento?

Je veux obtenir un identifiant d'adresse d'expédition / facturation d'une commande juste complète de Magento.

J'ai essayé le code suivant, mais cela n'a pas fonctionné:

mage :: getmodel ('ventes / ordre') -> charge ($ array_data ["ordre_id"]) -> getShippippAddResid ()

Est-ce que quelqu'un a des idées?


0 commentaires

5 Réponses :


7
votes

Tout d'abord, séparez votre appel en chaîne pour vous assurer que vous chargez de charger une commande avec xxx pré>

supposant que vous avez chargé la commande, regardez les valeurs larguées ci-dessus. Il n'y a pas de expédition_address_id code>. Que, combiné à il n'y ait aucune méthode getShippiPadsID code> sur un mage_sales_model_ordre est la raison pour laquelle votre code ne fonctionne pas. P>

Essayez P>

//magento 1.4
public function getShippingAddress()
{
    foreach ($this->getAddressesCollection() as $address) {
        if ($address->getAddressType()=='shipping' && !$address->isDeleted()) {
            return $address;
        }
    }
    return false;
}

public function getAddressesCollection()
{
    if (is_null($this->_addresses)) {
        $this->_addresses = Mage::getResourceModel('sales/order_address_collection')
            ->addAttributeToSelect('*')
            ->setOrderFilter($this->getId());

        if ($this->getId()) {
            foreach ($this->_addresses as $address) {
                $address->setOrder($this);
            }
        }
    }

    return $this->_addresses;
}


7 commentaires

Grand pas à pas à travers Alan. Un couple de fautes de frappe mineures de là "valeurs s upé ci-dessus" et "le tl; dr pour le code ci-dessus" acclamations, JD


Je ne peux pas m'attendre à taper l'anglais correct avant midi. (Merci)


Certes non devant la caféine :) et BTW, je n'ai pas réalisé que "TL; DR" était une abréviation délibérée - merci à Urbaydictionary pour celui-ci! :)


Merci pour votre explication sur la raison pour laquelle cela ne peut pas fonctionner. Maintenant, j'aimerais accorder une solution de ce problème. : - |


Heh, relire la réponse soigneusement Carson. Je vous conseille d'utiliser l'objet de commande pour obtenir un objet d'expédition, puis obtenez votre identifiant d'adresse à partir de là.


Merci. Je peux récupérer la facturation et l'identifiant d'adresse d'expédition à l'aide de GetModel («vente / commande»), mais il semble s'agir d'un identifiant d'adresse incrémental auto-incrémental, au lieu d'une identification d'entité d'adresses de client, que j'attends devrait être le même identifiant d'adresse pour différentes commandes. avec la même adresse. Pourriez-vous me donner un autre conseil?


Ah, l'a eu. Je ne sais pas si Magento stocke ces données une fois que la commande est placée (considère ce qui se produirait si un client a changé / supprimé son identifiant d'entité). Je fouettais les méthodes sur le modèle Sales / Commande_Address pour voir si quelque chose est là. Sinon, j'utiliserais les informations dans l'objet Sales / Commande_Address pour essayer de correspondre à une adresse client existante. Bonne chance!



3
votes

Après un débogage et une googling indénombrables, je l'ai résolu:

pour l'adresse d'adresse de commande incrémentielle basée sur la commande, p> xxx pré>

pour l'identifiant d'entité d'adresse de la commande basée sur la commande Client, P>

$quote = Mage::getSingleton('checkout/session')->getQuote();
$billing_address_id=$quote->getBillingAddress()->customer_address_id;
$shipping_address_id=$quote->getShippingAddress()->customer_address_id;


0 commentaires

15
votes

Ce qui suit pourrait aider une personne à la recherche d'une solution similaire: xxx

Remarque: évidemment, cette solution oblige l'utilisateur à avoir une session en cours

bonne chance.


1 commentaires

Comme indiqué ci-dessous, on peut utiliser adresse -> getdata () et traiter via un foreach ($ adresse-> getdata () as $ clé => $ valeur) . Cette réponse était la solution la plus facile pour moi.



3
votes

Essayez ceci, vous pouvez obtenir l'expédition_address_id et billing_address_id xxx


0 commentaires

4
votes
$order = Mage::getModel('sales/order')->load($orderId);

//Get shipping address Id
$order->getShippingAddress()->getId();

//format output
echo $order->getShippingAddress()->format('html');

//Get shipping address data
print_r($order->getShippingAddress()->getData());

0 commentaires