2014-09-15 2 views
0

Я постараюсь изо всех сил объяснить, что я делаю.Magento показывает неправильные общие записи в sales./order grid

  1. Я вручную добавил четыре столбца в файле grid.php для сетки продаж/заказа.

  2. Теперь он показывает неправильный счет в общих записях.

  3. Есть более 1500 записей, но это только показывает, 1190.

  4. Так вот файл кода grid.php.

    <?php 
    
    class Mage_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Widget_Grid 
    { 
        public function callback_skus($value, $row, $column, $isExport) 
        { 
         $increment_id = $value; 
         $_order = Mage::getModel('sales/order')->loadByIncrementId($increment_id); 
         $_items = $_order->getAllItems(); 
         $skus=""; 
         foreach ($_items as $item) 
         { 
          $skus .= $item->getSku()."<br />"; 
         } 
         return $skus; 
        } 
    
        public function __construct() 
        { 
         parent::__construct(); 
         $this->setId('sales_order_grid'); 
         $this->setUseAjax(true); 
         $this->setDefaultSort('created_at'); 
         $this->setDefaultDir('DESC'); 
         $this->setSaveParametersInSession(true); 
        } 
    
        /** 
        * Retrieve collection class 
        * 
        * @return string 
        */ 
        protected function _getCollectionClass() 
        { 
         return 'sales/order_grid_collection'; 
        } 
    
        protected function _prepareCollection() 
        { 
         $collection = Mage::getResourceModel($this->_getCollectionClass()); 
    
         $collection->getSelect()->join('sales_flat_order_payment', 'sales_flat_order_payment.parent_id = main_table.entity_id',array('method')); 
         $collection->getSelect()->group('main_table.entity_id'); 
         $collection->getSelect()->group('sales_flat_order_payment.parent_id'); 
    
         $collection->getSelect()->join('sales_flat_shipment_track', 'main_table.entity_id = sales_flat_shipment_track.order_id',array('track_number'=> new Zend_Db_Expr('group_concat(DISTINCT `sales_flat_shipment_track`.track_number SEPARATOR ", ")'),'title' => new Zend_Db_Expr('(SELECT group_concat(`sales_flat_shipment_track`.title SEPARATOR ", ")FROM `sales_flat_shipment_track` As `sales_flat_shipment_track` WHERE `main_table`.`entity_id` = `sales_flat_shipment_track`.`order_id`)'))); 
         $collection->getSelect()->join('sales_flat_order_address', "main_table.entity_id = sales_flat_order_address.parent_id AND sales_flat_order_address.address_type='shipping'",array('country_id')); 
         $collection->getSelect()->joinLeft('sales_flat_order_item', 'main_table.entity_id = sales_flat_order_item.order_id',array('sku')); 
         $collection->getSelect()->group('main_table.entity_id'); 
         $this->setCollection($collection); 
    
    
         $orders = Mage::getResourceModel('sales/order_collection'); 
         foreach($orders as $order){ 
          $items = $order->getAllVisibleItems(); 
          foreach($items as $item){ 
           $sku = $item->getSku(); 
          } 
         } 
         $collection->getSize(); 
         $collection->count(); 
         return parent::_prepareCollection();  
        } 
    
        public function count() 
        { 
         $this->load(); 
         return count($this->_prepareColumns); 
        } 
    
    
        protected function _prepareColumns() 
        { 
    
    
    
         $this->addColumn('sku', array(
          'header' => Mage::helper('sales')->__('SKU#'), 
          'index' => 'increment_id', 
          'width' => '80px', 
          'frame_callback' => array($this, 'callback_skus'), 
          'filter_index' => 'sales_flat_order_item.sku', 
          )); 
    
    
         $this->addColumn('real_order_id', array(
          'header'=> Mage::helper('sales')->__('Order #'), 
          'width' => '80px', 
          'type' => 'text', 
          'index' => 'increment_id', 
          )); 
    
         $this->addColumn('country_id', array(
          'header'=> Mage::helper('sales')->__('Shipping Country'), 
          'width' => '80px', 
          'type' => 'text', 
          'index' => 'country_id', 
          )); 
    
    
         $this->addColumn('method', array(
          'header'=> Mage::helper('sales')->__('Payment Method'), 
          'width' => '80px', 
          'type' => 'text', 
          'index' => 'method', 
          )); 
    
    
         if (!Mage::app()->isSingleStoreMode()) { 
          $this->addColumn('store_id', array(
           'header' => Mage::helper('sales')->__('Purchased From (Store)'), 
           'index'  => 'store_id', 
           'type'  => 'store', 
           'store_view'=> true, 
           'display_deleted' => true, 
           )); 
         } 
    
         $this->addColumn('created_at', array(
          'header' => Mage::helper('sales')->__('Purchased On'), 
          'index' => 'created_at', 
          'type' => 'datetime', 
          'width' => '100px', 
          )); 
    
         $this->addColumn('billing_name', array(
          'header' => Mage::helper('sales')->__('Bill to Name'), 
          'index' => 'billing_name', 
          )); 
    
         $this->addColumn('shipping_name', array(
          'header' => Mage::helper('sales')->__('Ship to Name'), 
          'index' => 'shipping_name', 
          )); 
    
         $this->addColumn('base_grand_total', array(
          'header' => Mage::helper('sales')->__('G.T. (Base)'), 
          'index' => 'base_grand_total', 
          'type' => 'currency', 
          'currency' => 'base_currency_code', 
          )); 
    
         $this->addColumn('grand_total', array(
          'header' => Mage::helper('sales')->__('G.T. (Purchased)'), 
          'index' => 'grand_total', 
          'type' => 'currency', 
          'currency' => 'order_currency_code', 
          )); 
    
         $this->addColumn('status', array(
          'header' => Mage::helper('sales')->__('Status'), 
          'index' => 'status', 
          'type' => 'options', 
          'width' => '70px', 
          'options' => Mage::getSingleton('sales/order_config')->getStatuses(), 
          )); 
    
         $this->addColumn('track_number', array(
          'header'=> Mage::helper('sales')->__(' Track Number'), 
          'width' => '80px', 
          'type' => 'text', 
          'index' => 'track_number', 
    
          )); 
    
    
         $this->addColumn('title', array(
          'header'=> Mage::helper('sales')->__('Title'), 
          'width' => '80px', 
          'index' => 'title', 
    
          )); 
    
    
         if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view')) { 
          $this->addColumn('action', 
           array(
            'header' => Mage::helper('sales')->__('Action'), 
            'width'  => '50px', 
            'type'  => 'action', 
            'getter'  => 'getId', 
            'actions' => array(
             array(
              'caption' => Mage::helper('sales')->__('View'), 
              'url'  => array('base'=>'*/sales_order/view'), 
              'field' => 'order_id', 
              'data-column' => 'action', 
              ) 
             ), 
            'filter' => false, 
            'sortable' => false, 
            'index'  => 'stores', 
            'is_system' => true, 
            )); 
         } 
         $this->addRssList('rss/order/new', Mage::helper('sales')->__('New Order RSS')); 
    
         $this->addExportType('*/*/exportCsv', Mage::helper('sales')->__('CSV')); 
         $this->addExportType('*/*/exportExcel', Mage::helper('sales')->__('Excel XML')); 
    
         return parent::_prepareColumns(); 
        } 
    
    
    
        protected function _prepareMassaction() 
        { 
         $this->setMassactionIdField('entity_id'); 
         $this->getMassactionBlock()->setFormFieldName('order_ids'); 
         $this->getMassactionBlock()->setUseSelectAll(false); 
    
         if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/cancel')) { 
          $this->getMassactionBlock()->addItem('cancel_order', array(
           'label'=> Mage::helper('sales')->__('Cancel'), 
           'url' => $this->getUrl('*/sales_order/massCancel'), 
           )); 
         } 
    
         if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/hold')) { 
          $this->getMassactionBlock()->addItem('hold_order', array(
           'label'=> Mage::helper('sales')->__('Hold'), 
           'url' => $this->getUrl('*/sales_order/massHold'), 
           )); 
         } 
    
         if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/unhold')) { 
          $this->getMassactionBlock()->addItem('unhold_order', array(
           'label'=> Mage::helper('sales')->__('Unhold'), 
           'url' => $this->getUrl('*/sales_order/massUnhold'), 
           )); 
         } 
    
         $this->getMassactionBlock()->addItem('pdfinvoices_order', array(
          'label'=> Mage::helper('sales')->__('Print Invoices'), 
          'url' => $this->getUrl('*/sales_order/pdfinvoices'), 
          )); 
    
         $this->getMassactionBlock()->addItem('pdfshipments_order', array(
          'label'=> Mage::helper('sales')->__('Print Packingslips'), 
          'url' => $this->getUrl('*/sales_order/pdfshipments'), 
          )); 
    
         $this->getMassactionBlock()->addItem('pdfcreditmemos_order', array(
          'label'=> Mage::helper('sales')->__('Print Credit Memos'), 
          'url' => $this->getUrl('*/sales_order/pdfcreditmemos'), 
          )); 
    
         $this->getMassactionBlock()->addItem('pdfdocs_order', array(
          'label'=> Mage::helper('sales')->__('Print All'), 
          'url' => $this->getUrl('*/sales_order/pdfdocs'), 
          )); 
    
         $this->getMassactionBlock()->addItem('print_shipping_label', array(
          'label'=> Mage::helper('sales')->__('Print Shipping Labels'), 
          'url' => $this->getUrl('*/sales_order_shipment/massPrintShippingLabel'), 
          )); 
    
         return $this; 
        } 
    
        public function getRowUrl($row) 
        { 
         if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view')) { 
          return $this->getUrl('*/sales_order/view', array('order_id' => $row->getId())); 
         } 
         return false; 
        } 
    
        public function getGridUrl() 
        { 
         return $this->getUrl('*/*/grid', array('_current'=>true)); 
        } 
    
    } 
    
  5. Теперь я написал мой код для соединения таблицы и доступа к нему из сети в _prepareCollections() функции.

  6. Добавлено 4 столбца в функции _addcolumns(). Я добавляю способ оплаты, Sku, title, track_number.

Проблема

Всего записей 1190 найдено.

Но он должен показать все 1500 записей. Пожалуйста, дайте мне знать, что я должен делать.

Также смотрите ссылку на мою предыдущую задачу my previous problem link

+0

Не могли бы вы показать, сколько записей в таблице 'sales_flat_order_grid' и таблице' sales_flat_shipment_track' и сколько разных записей в 'sales_flat_order_grid' по полю' sales_flat_order_grid' – Aleksandr

+0

Что вы в этом подразумеваете? Как мне это сделать? –

+0

Действительно ли мой запрос на получение данных из базы данных? –

ответ

0

Я получил решение (Райан помог мне). Там не всегда будет весь номер отслеживания отгрузки, а также оплата.

Итак, мы должны использовать joinLeft on sales_flat_shipment_track and sales_flat_order_payment.

Следовательно, она работает. ! :)

Смежные вопросы