Magento查询销售或订单量

时间:2012-12-01 19:24:40

标签: magento

我正在寻找一种能够获得销售量的近似值(基本上是商店产生多少钱)的方法,我希望以此为基础进行粗略计算以向用户显示更多数据。

(选项A)我知道我可以直接查询数据库然后缓存结果,但是Magento已经在做了这个&将它缓存到我可以使用的地方? (选项B),就像Magento在某处保存终身销售价值和平均销售价值。

任何数据,如每日/每周/每月平均销售额或平均订单金额&每日/每周/每月平均订单就足够了。

如果选项A只是这里的方式,我应该如何查询这些数据?我见过这样的例子,如下所示:

  • Mage::getResourceModel('sales/order_collection')
  • Mage::getModel('sales/order')->getCollection()

哪个更快&更轻巧满足我的需求?还有哪些链接我可以在哪里看到使用它们的详细或解释良好的示例,以便我可以理解在每种情况下可用于查询的参数?


更新:我仍然不清楚上述两种方法之间的区别是什么,但我猜的是一种比其他方法更抽象的方法。可能在内部使用另一个,但我不确定。无论如何,我有这个代码片段拉入数据,但我有一个过滤日期范围数据的问题:

<?php

require_once 'app/Mage.php';

#umask(0);

Mage::app('default');

$orderTotals = Mage::getModel( 'sales/order' )->getCollection()
->addAttributeToFilter( 'status', Mage_Sales_Model_Order::STATE_COMPLETE )
->addAttributeToFilter( 'status', 'complete' )
//->addAttributeToFilter( 'created_at', array( 'from'  => date( 'Y-m-d', strtotime( '-100 days' ) ) ) )
//->addAttributeToFilter( 'created_at', array( 'from' => date( 'Y-m-d', strtotime( '-100 days' ) ), 'to' => date( 'Y-m-d' ) ) )
->addAttributeToSelect( 'grand_total' )
->getColumnValues( 'grand_total' )
;

$totalSum = array_sum( $orderTotals );
$totalSum = Mage::helper( 'core' )->currency( $totalSum, true, false );

echo $totalSum . "\n";

更新: 此代码段现在正在运行。我在订单范围内有订单,但订单状态是“处理”,所以我看不到它们。我从this question获得了摘录。

我仍然在寻找上述两种方法的不同之处以及哪种方法可以使用的解释?

2 个答案:

答案 0 :(得分:1)

如果有人像我一样通过谷歌来到这里,这个问题促使我制作我一直想要的报告页面。我通常不使用内置的MVC(更多下面的!),而是在var / export或其他东西中填充页面。在通过所有sales_flat_order*sales_flat_invoice*表找到代表我们销售和发运的产品的解决方案之后,我最终提出了以下查询。

本周的销售报告:

SELECT sfi.grand_total as 'total',sfii.base_row_total as 'sales', sfii.sku as 'sku', sfii.qty as 'qty', sfo.increment_id as 'order' 
FROM sales_flat_invoice_item sfii
LEFT JOIN sales_flat_invoice sfi ON sfii.parent_id = sfi.entity_id
LEFT JOIN sales_flat_order sfo ON sfi.order_id = sfo.entity_id
WHERE sfo.status = 'complete'
AND sfi.updated_at > "2013-06-01"

这个日期是这个星期五晚上的午夜。注意:如果您将sfi.*添加到SELECT,您可以进行数学计算,以便根据总计仔细检查运费和税金。 sales_flat_order的问题是该表不代表您的支票帐户中的现金。我们不是应计(可能很少有小企业),所以这对我理解现金会计基础更好。

对于我的报告脚本,我还构建了一个值表,并使用Google Charts使其变得漂亮。以下页面几乎立即加载: screenshot of report generated from above query

编辑添加:在创建上述查询时,我发现使用正确的集合等方式构建的先前订单查询工具错过了大量订单而没有任何理由我们可以发现。越来越多,我发现正确完成工作的唯一方法就是自己做 - 并且做得很好。

答案 1 :(得分:0)

你看了@ Admin - &gt;报告 - &gt;销售

/app/code/core/Mage/Adminhtml/controllers/Report/SalesController.php

/app/code/core/Mage/Adminhtml/Block/Report/Sales/Sales/Grid.php

收藏:'sales / report_order_collection'

表:

sales_bestsellers_aggregated _ *

sales_order_aggregated _ *

report_viewed_product _ *