2

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

(选项 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";

更新:此代码段现在正在运行。我在该范围内有订单,但他们的订单状态是“处理中”,所以我看不到它们。我从这个问题中得到了片段。

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

4

2 回答 2

1

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

Sales report for this week:

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使其更漂亮。以下页面几乎立即加载: 从上述查询生成的报告的屏幕截图

编辑添加:在创建上述查询时,我发现以前使用适当的集合等方式构建的订单查询工具会遗漏大量订单,而我们无法发现任何原因。越来越多地,我发现正确完成工作的唯一方法就是自己做——并且用艰难的方式去做。

于 2013-06-05T16:50:54.010 回答
0

你有没有看@Admin -> Report -> Sales

/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_*

于 2012-12-01T20:04:55.327 回答