得到发票集合的总数:总计包括 - 总不包括 - 按类别征税

时间:2011-12-15 15:02:17

标签: sql magento join

大图:我正在为会计程序生成.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语句得到这个结果吗?或者我是否必须遍历整个集合来总结它?

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,这将使此SQL语句将为您提供每个税码的总金额

Select code, SUM(amount) 
    from sales_order_tax 
group by code