按客户分组发票

时间:2012-01-30 19:29:20

标签: magento entity-attribute-value arraycollection

我正在尝试按照他们的税瓮ID对所有客户进行分组,并显示向他们开具的税金,因此我的结果应该是这样的

TAXVAT | Tax Sum
ATU321 | 365.50
ATU123 | 120.00

但我对magento的groupBy函数非常感兴趣,我试过这个:

$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 个答案:

答案 0 :(得分:2)

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 ) { ... }
?>