Question

Je suis en train d'ajouter « sku » et « nom du produit » à la grille de commande de vente avec filtrage.

J'ai créé mon joint, mais les colonnes sont vides et je ne sais pas ce que je l'ai fait mal ici ...

Essayer d'obtenir la collection des ventes / flat_order_item

protected function _prepareCollection()
{
    $collection = Mage::getResourceModel($this->_getCollectionClass());

    $collection->getSelect()->joinLeft(array('sfoi' => 'sales_flat_order_item'),
        'sfoi.parent_id=main_table.entity_id', array('sfoi.sku',
        'sfoi.name'));

    $this->setCollection($collection);
    return parent::_prepareCollection();
}

Et ajouter à la grille

protected function _prepareColumns()
{
    $this->addColumn('sku', array(
        'header'=> Mage::helper('sales')->__('Sku'),
        'width' => '80px',
        'type'  => 'text',
        'filter_index' => 'sfoi.sku',
    ));

    $this->addColumn('name', array(
        'header'=> Mage::helper('sales')->__('Product Name'),
        'width' => '80px',
        'type'  => 'text',
        'filter_index' => 'sfoi.name',
    ));
}

Quelqu'un peut-il voir ce que je l'ai fait mal ici s'il vous plaît ..?

Était-ce utile?

La solution

protected function _prepareColumns()
{
    $this->addColumn('sku', array(
        'header'=> Mage::helper('sales')->__('Sku'),
        'width' => '80px',
        'type'  => 'text',
        'index' => 'sfoi.sku',
        'filter_index' => 'sfoi.sku',
    ));

    $this->addColumn('name', array(
        'header'=> Mage::helper('sales')->__('Product Name'),
        'width' => '80px',
        'type'  => 'text',
        'index' => 'sfoi.name',
         'filter_index' => 'sfoi.name',
    ));
}

vous avez index ne Assigner à la colonne

Autres conseils

Etape 1: Créez le répertoire Renderer sous /app/code/core/Mage/Adminhtml/Block/Sales/Order

Étape 2: Création d'un fichier bloc dans /app/code/core/Mage/Adminhtml/Block/Sales/Order/Renderer/Red.php (Vous pouvez utiliser le nom)

<?php


class
Mage_Adminhtml_Block_Sales_Order_Renderer_Red extends
Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract

    {
      public function render(Varien_Object $row)

       {

         //$value = $row->getData($this->getColumn()->getIndex());



        $order_id=$row->getData('increment_id');

        $order = Mage::getModel('sales/order')->loadByIncrementID($order_id);

        $items = $order->getAllItems();

        // print_r($items);exit();

            foreach ($items as $itemId => $item)

                {

                if($item->getSku())

                    {

                    $sku[] = $item->getSku();

                    }

                }

                if(count($sku))

                    {

                    $skutext = implode(',',$sku);

                    }

            $conbinetext=$skutext;

            return $conbinetext;

        }

    }



?>

Étape 3: Ajouter le code ci-dessous dans /app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php

$this->addColumn('Shopby',


  array(


  'header'=>Mage::helper('catalog')->__('Sku'),

  'index' => 'shopby',

  'filter'=> false,


  'sortable'=>false,

  'renderer'=> 'Mage_Adminhtml_Block_Sales_Order_Renderer_Red',// THIS IS WHAT THIS POST IS ALL ABOUT

  ));

Peut-être aider quelqu'un

protected function _prepareCollection() {
    $collection = Mage::getResourceModel($this->_getCollectionClass());

    $collection->getSelect()->joinLeft('sales_flat_order_item', 'sales_flat_order_item.order_id = main_table.entity_id', array('skus' => new Zend_Db_Expr('group_concat(sales_flat_order_item.sku SEPARATOR ", ")'),'names' => new Zend_Db_Expr('group_concat(sales_flat_order_item.name SEPARATOR ", ")')))->group('main_table.entity_id');

    $this->setCollection($collection);

    return parent::_prepareCollection();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top