Avant de voir les résultats obtenus en appelant ces 2 fonctions, voyons déjà ce qu'elles ont dans le ventre.
Ces fonctions sont utilisées pour récupérer tous les produits d'une commande :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // Charger une commande spécifique $order_id = 100000123; $order = Mage::getModel("sales/order")->load($order_id); $items = $order->getAllItems(); // Ou $items = $order->getAllVisibleItems(); foreach ($items as $itemId => $item) { echo "SKU : ".$item->getSku()."<br />"; /* d'autres infos : $item->getName(); $item->getPrice(); $item->getProductId(); $item->getQtyOrdered();*/ } |
Avec le code ci-dessus, on récupère une commande et affiche les infos des produits.
Voyons maintenant le code de chacune des deux fonctions qui nous intéressent :
1 2 3 4 5 6 7 8 9 10 | public function getAllItems() { $items = array(); foreach ($this->getItemsCollection() as $item) { if (!$item->isDeleted()) { $items[] = $item; } } return $items; } |
1 2 3 4 5 6 7 8 9 10 | public function getAllVisibleItems() { $items = array(); foreach ($this->getItemsCollection() as $item) { if (!$item->isDeleted() && !$item->getParentItemId()) { $items[] = $item; } } return $items; } |
Comme on peut le voir la seule différence se situe dans la condition avec l'ajout de && !$item->getParentItemId()
Qui ne récupèrent les produits, que s'ils sont parents. Cela signifie que si vous avez un produit configurable dans votre commande/panier getAllVisibleItems ne récupèrera que le produit parent alors que
getAllItems récupèrera les 2 produits (parent ET enfant)
Avec getAllItems() :
SKU : TsIbiza
Nom : Tshirt Ibiza
Prix : 24.9200
ID : 17212
quantité : 1.0000
SKU : TsIbizaFit
Nom : Tshirt Ibiza Fitness
Prix : 0.0000
ID : 17213
quantité : 1.0000
Avec getAllVisibleItems()
SKU : TsIbiza
Nom : Tshirt Ibiza
Prix : 24.9200
ID : 17212
quantité : 1.0000
Pour conclure, il est préférable d'utiliser getAllVisibleItems pour avoir la quantité exacte de produits.