Je veux obtenir un identifiant d'adresse d'expédition / facturation d'une commande juste complète de Magento. p>
J'ai essayé le code suivant, mais cela n'a pas fonctionné: p>
mage :: getmodel ('ventes / ordre') -> charge ($ array_data ["ordre_id"]) -> getShippippAddResid () p> blockQuote>
Est-ce que quelqu'un a des idées? p>
5 Réponses :
Tout d'abord, séparez votre appel en chaîne pour vous assurer que vous chargez de charger une commande avec supposant que vous avez chargé la commande, regardez les valeurs larguées ci-dessus. Il n'y a pas de Essayez P> 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>
//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;
}
Grand pas à pas à travers Alan. Un couple de fautes de frappe mineures de là "valeurs s i> upé ci-dessus" et "le tl; dr i> 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!
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> 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;
Ce qui suit pourrait aider une personne à la recherche d'une solution similaire: Remarque: évidemment, cette solution oblige l'utilisateur à avoir une session en cours p> bonne chance. p> p>
Comme indiqué ci-dessous, on peut utiliser adresse -> getdata () code> et traiter via un
foreach ($ adresse-> getdata () as $ clé => $ valeur) code> . Cette réponse était la solution la plus facile pour moi.
Essayez ceci, vous pouvez obtenir l'expédition_address_id et billing_address_id
$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());