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

Php Magento自定义报告:从数据库获取数据,php,magento,zend-framework,report,Php,Magento,Zend Framework,Report,我需要一些帮助 我在Magento中创建了一个自定义报告。 现在我想在我的表格中列出一个月内订购的所有产品。 在我的报告中有以下列:SKU、名称、订购数量和基本成本 在“订购数量”一栏中,我想说明订购产品的频率。 在“基本成本”列中,我想显示总的基本成本(订购数量*基本成本) 通过以下代码,我得到了非常正确的产品名称和SKU。 其他列不正确 有人能帮我吗 $this->getSelect()->reset() ->from( array(

我需要一些帮助

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

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

通过以下代码,我得到了非常正确的产品名称和SKU。 其他列不正确

有人能帮我吗

$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'
            ));

要输出原始SQL查询,请参见

格式字段,您可以使用
价格
货币

类型

  • 行动
  • 复选框
  • 海螺
  • 国家
  • 通货
  • 日期
  • 日期时间
  • 输入
  • 接口
  • 知识产权
  • 长文
  • 按摩
  • 选择权
  • 价格
  • 无线电
  • 挑选
  • 贮藏
  • 正文
  • 主题
  • 缠绕
请参阅
/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer
文件夹

要创建自己的网格类型,请参见。

以下是我的解决方案:

$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”的附加自定义属性。

如“blank”、“zero”、“random number”中的“Not correct”?订购的产品数量太多,基本成本之和错误(一个项目的基本成本是正确的)。请尝试输出原始SQL查询。有关证据,请参见感谢R.S!现在我得到了正确的总数。如何设置成本格式?这是在my Grid.php中:$This->addColumn('base_cost',array('header'=>Mage::helper('reports')->'width'=>'120px','align'=>'right','index'=>'base_cost','total'=>'sum','type'=>'price');我已经用上面注释的代码完成了。我得到了一个像2618.00000000这样的数字,我想格式化为2618,00美元,您可能需要添加
currency\u code
参见“谢谢!”currency_code'=>Mage::app()->getStore()->getCurrentCurrencyCode()是我所需要的!
$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'
            ));