大图:我正在为会计程序生成.txt文件 我必须总结一下
详细:我有一组发票:
private function _getInvoiceCollectionPerStore($storeId)
{
$invoices = Mage::getResourceModel('sales/order_invoice_collection')
->addFieldToFilter('main_table.store_id', $storeId);
//orde increment id
$invoices->addExpressionFieldToSelect(
'order_increment_id',
'order.increment_id',
'main_table.order_id'
);
//customer id
$invoices->getSelect()->join(
array('order' => 'sales_flat_order'),
'main_table.order_id = order.entity_id',
array('order.customer_id'));
return $invoices;
}
使用该集合,我可以计算总税额和总税率。
$invoices->addExpressionFieldToSelect(
'order_total',
'SUM({{main_table.grand_total}})',
'main_table.grand_total'
);
$invoices->addExpressionFieldToSelect(
'tax_total',
'SUM({{main_table.tax_amount}})',
'main_table.tax_amount'
);
现在我要计算发票/订单的不同税金总和
为此,我有表sales_order_tax
,其中我对每个订单都有不同的税:
| tax_id | order_id | code | percent | amount |
| 1 | 1 | 18 | 18.0000 | 25.0100|
| 2 | 1 | 8 | 8.0000 | 1.1100|
| 3 | 2 | 18 | 18.0000 | 3.2000|
| 4 | 2 | 4 | 4.0000 | 0.6500|
(我简化了表格,因为这是这里唯一相关的字段)
正如您所看到的我的虚拟数据,我有2个订单(ID 1和2),有3种税(4,8和18)。
我想要的结果是:
18 = 28.21 ( => 25.01+3.2)
8 = 1.11
4 = 0.65
最后,我的问题是:我可以通过join和groups语句得到这个结果吗?或者我是否必须遍历整个集合来总结它?
答案 0 :(得分:1)
如果我正确理解了您的问题,这将使此SQL语句将为您提供每个税码的总金额
Select code, SUM(amount)
from sales_order_tax
group by code