Comment obtenir une facture à partir de l'article de commande
-
31-10-2019 - |
Question
Est-il possible d'obtenir la facture d'un élément de commande?
Pour être plus précis: j'imagine les éléments de commande de la commande et si le changement de commande a été facturé
$item->getStatusId() == Mage_Sales_Model_Order_Item::STATUS_INVOICED
Je voudrais obtenir la facture correspondante pour cela. Surtout l'ID de facture.
Quelqu'un a-t-il une solution pour cela?
Merci!
Éditer:J'imagine une collection de commandes-item. Si un article de commande a déjà été facturé, alors je voudrais rechercher, dans qui facture il a été facturé. Si l'élément de commande n'a pas été facturé - je le laisse tel quel. C'est juste le moyen opposé d'itérer une collection d'articles de facture pour rechercher l'ordre correspondant. Là je dirais juste
$invoiceItem->getOrder()->getId();
Et je serais parfaitement fini. Il peut sembler ridicule de le faire à l'inverse (chercher une facture pour un élément de commande Au lieu d'itérer la collection de factures de l'ordre spécifique), mais j'aimerais éviter de refactoriser toute la logique.
Éditer:
Merci à Lee Saferite, j'ai trouvé la solution pour ma tâche:
$orderItems = $order->getItemsCollection();
try {
if (!$orderItems->hasFlag('invoice_join')){
$orderItems->getSelect()->joinLeft(
array('oii' => $orderItems->getTable('sales/invoice_item')),
'main_table.item_id = oii.order_item_id',
array('invoice_id' => 'parent_id')
);
$orderItems->getSelect()->group('main_table.item_id');
$orderItems->clear();
$orderItems->setFlag('invoice_join');
}
}
catch(Exception $e){
Mage::logException($e);
}
En raison du fait que j'appelle ce code à l'intérieur d'une grande boucle Foreach (j'étends simplement un module existant - j'ai dû y faire face), je définis un drapeau, pour éviter le problème, que la jointure est appliquée plusieurs fois (ce qui se terminerait par une exception). Merci Lee!
Pas de solution correcte