получить итоги сбора счетов: всего вкл. - всего, кроме - налог по видам - PullRequest
1 голос
/ 15 декабря 2011

большая фотография : я работаю над созданием файлов .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 порядка (идентификаторы 1 и 2) с 3 типаминалог (4, 8 и 18).
Я хочу получить следующий результат:

18 = 28.21 ( => 25.01+3.2)
 8 = 1.11
 4 = 0.65

И, наконец, мой вопрос: могу ли я получить этот результат с помощью операторов join и groups?Или я должен пройтись по коллекции, чтобы подвести итог?

1 Ответ

1 голос
/ 16 декабря 2011

Если я правильно понял ваш вопрос, это даст SQL-оценку, которая даст вам общую сумму за налоговый код

Select code, SUM(amount) 
    from sales_order_tax 
group by code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...