Question

Cette question concerne la grille:.> Commandes Ventes- -> [sélectionnez une commande] -> Informations

En bas, vous pouvez voir une grille avec les commandes. Je voudrais les trier par SKU.

: /app/code/core/Mage/Sales/Model/Order.php je trouve:

public function getItemsCollection($filterByTypes = array(), $nonChildrenOnly = false)
{   
    if (is_null($this->_items)) {
        $this->_items = Mage::getResourceModel('sales/order_item_collection')
            ->setOrderFilter($this);

        if ($filterByTypes) {
            $this->_items->filterByTypes($filterByTypes);
        }
        if ($nonChildrenOnly) {
            $this->_items->filterByParent();
        }

        if ($this->getId()) {
            foreach ($this->_items as $item) {

                $item->setOrder($this);
            }
        }
    }
    return $this->_items;
}

Cela crée la grille de commande, mais comment puis-je trier par UGS?

Était-ce utile?

La solution

En fait, le morceau de code ne crée pas de la grille de commande. Cette récupère les articles commandés pour une commande. Il est utilisé aussi bien dans frontend et backend.

Si vous modifiez à trier par sku alors les articles seront commandés par sku dans le backend et frontend.
Pour ce faire, vous devez ajouter ce morceau de code:

$this->_items->getSelect()->order('sku');

Juste après

if ($nonChildrenOnly) {
    $this->_items->filterByParent();
}

Bien sûr, ne modifiez pas le code. Remplacer le modèle correctement.
Mais je ne recommanderais pas cette approche. Si vous voulez que l'ordre des éléments par sku que dans le back-end, vous pouvez les trier dans le modèle.
Le modèle est app\design\adminhtml\default\default\template\sales\order\view\items.phtml. Vous pouvez remplacer le code qui rend les éléments (Je veux dire):

<?php $_items = $this->getItemsCollection() ?>
    <?php $i=0;foreach ($_items as $_item):?>
        <?php if ($_item->getParentItem()) continue; else $i++;?>
        <tbody class="<?php echo $i%2?'even':'odd' ?>">
            <?php echo $this->getItemHtml($_item) ?>
            <?php echo $this->getItemExtraInfoHtml($_item) ?>
        </tbody>
    <?php endforeach; ?> 

Avec ceci:

<?php $_items = $this->getItemsCollection() ?>
    <?php $_sortedItems = array(); ?>
    <?php foreach ($_items as $_item) : ?>
        <?php $_sortedItems[$_item->getSku()] = $_item;?>
    <?php endforeach;?>
    <?php ksort($_sortedItems);//sort by sku?>
    <?php $i=0;foreach ($_sortedItems as $_item):?>
        <?php if ($_item->getParentItem()) continue; else $i++;?>
        <tbody class="<?php echo $i%2?'even':'odd' ?>">
            <?php echo $this->getItemHtml($_item) ?>
            <?php echo $this->getItemExtraInfoHtml($_item) ?>
        </tbody>
    <?php endforeach; ?> 

Encore une fois ... ne pas modifier le modèle. Mettez-le dans votre propre thème et de le modifier là.
Voici comment vous pouvez changer et le thème admin .

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