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

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top