我正在尝试按照他们的税瓮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 - 但在我的情况下,这显然不正确:(
答案 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 ) { ... }
?>