2

注文ビュー (顧客の注文を表示するときのメイン画面) で、いくつかのテーブル行を追加し、顧客の生涯売上 (総売上) と総注文額を追加したいと考えています。

コードを追加するファイルは次のとおりです: app/design/adminhtml/default/default/template/sales/order/view/info.phtml

このファイルでは、以下のとおりです。

<?php foreach ($this->getCustomerAccountData() as $data):?>
  <tr>
    <td class="label"><label><?php echo $data['label'] ?></label></td>
    <td class="value"><strong><?php echo $data['value'] ?></strong></td>
  </tr>
<?php endforeach;?>

必要な行/セルを正しい情報で追加する場所です。必要なデータを取得する方法を教えてください。

4

2 に答える 2

7

これは、生涯売上を取得する方法です。

$customer = Mage::getModel('customer/customer')->load($customerId);
$customerTotals = Mage::getResourceModel('sales/sale_collection')
     ->setOrderStateFilter(Mage_Sales_Model_Order::STATE_CANCELED, true)
     ->setCustomerFilter($customer)
     ->load()
     ->getTotals();
$customerLifetimeSales = $customerTotals->getLifetime();
$customerNumberOfOrders = $customerTotals->getNumOrders();

これは $customerTotals の var_dump です:

object(Varien_Object)[662]
  protected '_data' => 
    array
     'lifetime' => float 10503.13
     'base_lifetime' => float 10503.13
     'base_avgsale' => float 92.9480530973
     'num_orders' => int 113
     'avgsale' => float 92.9480530973
  protected '_hasDataChanges' => boolean false
  protected '_origData' => null
  protected '_idFieldName' => null
  protected '_isDeleted' => boolean false

そのコードをブロックのメソッドに配置して、各行で呼び出すことができます。次のようなもの:

public function getCustomerTotals(Mage_Customer_Model_Customer $customer)
{
    // TODO: Add necessary validation...
    return Mage::getResourceModel('sales/sale_collection')
        ->setOrderStateFilter(Mage_Sales_Model_Order::STATE_CANCELED, true)
        ->setCustomerFilter($customer)
        ->load()
        ->getTotals();
}

コードに次を追加できます。

<?php $customerTotals = $this->getCustomerTotals($customer); ?>
<td><?php echo $customerTotals->getLifetime(); ?></td>
于 2011-09-09T13:49:34.510 に答える
1

アップグレードによるものかどうかはわかりませんが、これを追加する必要があります。

->setOrderStateFilter(Mage_Sales_Model_Order::STATE_CANCELED, true)

したがって、コードは次のようになります。

return Mage::getResourceModel('sales/sale_collection')
        ->setOrderStateFilter(Mage_Sales_Model_Order::STATE_CANCELED, true)
        ->setCustomerFilter($customer)
        ->load()
        ->getTotals();
于 2011-12-12T16:58:44.447 に答える