Magento自定义报告:从数据库中获取数据

时间:2014-05-28 14:44:06

标签: php magento zend-framework report

我需要一些帮助。

我在Magento中创建了一个自定义报告。 现在我想列出我网格中一个月内订购的所有产品。 在我的报告中有以下列:SKU,名称,订购数量和基本成本。

在“订购数量”列中,我想显示产品订购的频率。 在“基本成本”列中,我想显示总基本成本(订购数量*基本成本)。

使用以下代码,我得到了正确的产品名称和skus。 其他列不正确。

有人可以帮助我吗?

$this->getSelect()->reset()
        ->from(
            array('order_items' => $this->getTable('sales/order_item')),
            array(
                'ordered_qty' => 'SUM(order_items.qty_ordered)',
                'order_items_name' => 'order_items.name',
                'base_cost' => 'SUM(order_items.base_cost)',
                'sku' => 'order_items.sku'
            ))
        ->where("created_at BETWEEN '".$from."' AND '".$to."'")
        ->where('parent_item_id IS NULL')
        ->group('order_items.product_id')
        ->having('SUM(order_items.qty_ordered) > ?', 0)
        ->order(
            array(
                'SUM(order_items.qty_ordered) DESC'
            ));

2 个答案:

答案 0 :(得分:1)

这是我的解决方案:

$this->getSelect()->reset()
        ->from(
            array('order_items' => $this->getTable('sales/order_item')),
            array(
                'ordered_qty' => 'order_items.qty_ordered',
                'order_items_name' => 'order_items.name',
                'vendor' => 'attrval.value',
                'base_cost' => '(SUM(order_items.qty_ordered) * order_items.base_cost)',
                'sku' => 'order_items.sku'
            ))
        ->joinLeft(array('p' => 'catalog_product_entity'), 'order_items.product_id = p.entity_id')
        ->joinLeft(array('eav' => 'eav_attribute'), 'p.entity_type_id = eav.entity_type_id')
        ->joinLeft(array('attr' =>'eav_attribute_option'), 'attr.attribute_id = eav.attribute_id')
        ->joinLeft(array('attrval' =>'eav_attribute_option_value'), 'attrval.option_id = attr.option_id')
        ->where("eav.attribute_code='vendor'")
        ->where("order_items.created_at BETWEEN '".$from."' AND '".$to."'")
        ->where('parent_item_id IS NULL')
        ->group('order_items.product_id')
        ->having('SUM(order_items.qty_ordered) > ?', 0)
        ->order(
            array(
                'SUM(order_items.qty_ordered) DESC'
            ));

它包含一个名为' vendor'。

的其他自定义属性

答案 1 :(得分:0)

要输出原始SQL查询,请参阅Output raw SQL query from Magento collection

格式字段,您可以使用pricecurrency

请参阅http://code007.wordpress.com/2012/07/16/grid-column-types-in-magento/

  $this->addColumn('some_column_id', array(
          'header' => Mage::helper('core')->__('Some column name'),
          'index' => 'some_column_index',
          'type' => '???',
  ));

类型

  • 行动
  • 复选框
  • concat
  • country
  • currency
  • 日期
  • datetime
  • 输入
  • 接口
  • ip
  • longtext
  • massaction
  • 号码
  • 选项
  • 价格
  • 电台
  • 选择
  • 商店
  • 文本
  • 主题
  • wrapline

请参阅/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer文件夹。

要制作自己的网格类型,请参阅http://mydons.com/how-to-create-custom-column-renderer-in-magento-grid/