Групповые счета по клиенту - PullRequest
0 голосов
/ 30 января 2012

Я пытаюсь сгруппировать всех клиентов по их налоговому идентификатору и показать, какая сумма налога была им выставлена, поэтому мой результат должен выглядеть следующим образом

TAXVAT | Tax Sum
ATU321 | 365.50
ATU123 | 120.00

, но я довольно застрял сфункция groupBy magento, я попробовал это:

$objInvoiceCollection = Mage::getModel('sales/order/invoice')->getCollection();

$objInvoiceCollection 
->addAttributeToSelect('customer_taxvat');
->addExpressionAttributeToSelect('tax_invoiced','SUM({{tax_invoiced}})','tax')
->addFieldToFilter('customer_taxvat', array('notnull'=>true))
->addFieldToFilter('tax_invoiced', array('notnull'=>true))
->groupByAttribute('customer_taxvat');

но я получаю эту ошибку:

Call to undefined method Mage_Sales_Model_Resource_Order_Collection::addExpressionAttributeToSelect() ...

Я думал, что каждая модель на основе eav предоставляет методы addAttributeToSelect и groupByAttribute - но, очевидно,это не так в моем случае: (

1 Ответ

2 голосов
/ 31 января 2012

Magento прекратил использовать EAV для хранения продаж несколько версий назад. Кроме того, customer_taxvat хранится не как часть счета, а как часть заказа. Вы можете получить те же результаты следующим образом:

<?php
// Set Up Collection
$objOrderCollection = Mage::getResourceModel('sales/order_collection')
  ->addFieldToSelect('customer_taxvat')
  ->addExpressionFieldToSelect('tax_invoiced','SUM(tax_invoiced)','tax')
  ->addFieldToFilter('customer_taxvat', array('notnull'=>true))
  ->addFieldToFilter('tax_invoiced', array('notnull'=>true));
// Add Group By
$objOrderCollection->getSelect()->group('customer_taxvat');

// Do your stuff!
foreach ( $objOrderCollection as $order ) { ... }
?>
...