質問

倉庫の操作に関するデータを含めたテーブル(Order_Id、Phase、Duration、DateTime、Order_Canceled)が含まれているため、パフォーマンス管理のためにこれらのデータを提示するためにグラフを描画する必要があります。

Mangento管理者に「WareHousereport」というモジュールを作成しようとしたので、このモジュールのDashBoardでMagentoグラフをオーバーライドするにはどうすればよいですか?別の言い方は、誰かが私にそれをするためのチュートリアルを与えることができますか?

助けてください、私はシッティングしています。どうもありがとうございます。

役に立ちましたか?

解決

によると https://stackoverflow.com/questions/14401516/change-the-dashboard-graph-in-version-1-7-1-12-of-magentohttps://stackoverflow.com/questions/15370910/magento-module-to-change-dashboard-graph

  1. 作成するモジュールでは、オーバーライドする必要があります Mage_Reports_Model_Resource_Order_Collection: :それであなたの中に config.xml 置く:

    ...
            <global>
                <models>
                    <yourmodule>
                        <class>Namespace_Yourmodule_Model</class>
                    </yourmodule>
    
                    <reports_resource>
                        <rewrite>
                            <order_collection>Namespace_Yourmodule_Model_Reports_Resource_Order_Collection</order_collection>
                        </rewrite>
                    </reports_resource>
                </models>
            </global>
        ...`
    

2.その後、クラスを作成し(パスを尊重します)、このクラスでは2つの方法をオーバーライドする必要があります。

<?php
/**
 * Show all orders, not only the invoiced one
 */
class Namespace_Yourmodule_Model_Reports_Resource_Order_Collection extends Mage_Reports_Model_Resource_Order_Collection
{

    protected function _prepareSummaryLive($range, $customStart, $customEnd, $isFilter = 0)
    {
        $this->setMainTable('sales/order');
        $adapter = $this->getConnection();

        /**
         * Reset all columns, because result will group only by 'created_at' field
         */
        $this->getSelect()->reset(Zend_Db_Select::COLUMNS);

        $expression = sprintf('%s - %s - %s - (%s - %s - %s)',
            $adapter->getIfNullSql('main_table.base_total_invoiced', 0),
            $adapter->getIfNullSql('main_table.base_tax_invoiced', 0),
            $adapter->getIfNullSql('main_table.base_shipping_invoiced', 0),
            $adapter->getIfNullSql('main_table.base_total_refunded', 0),
            $adapter->getIfNullSql('main_table.base_tax_refunded', 0),
            $adapter->getIfNullSql('main_table.base_shipping_refunded', 0)
        );
        if ($isFilter == 0) {
            $this->getSelect()->columns(array(
                'revenue' => new Zend_Db_Expr(
                    sprintf('SUM((%s) * %s)', $expression,
                        $adapter->getIfNullSql('main_table.base_to_global_rate', 0)
                    )
                 )
            ));
        } else {
            $this->getSelect()->columns(array(
                'revenue' => new Zend_Db_Expr(sprintf('SUM(%s)', $expression))
            ));
        }

        $dateRange = $this->getDateRange($range, $customStart, $customEnd);

        $tzRangeOffsetExpression = $this->_getTZRangeOffsetExpression(
            $range, 'created_at', $dateRange['from'], $dateRange['to']
        );

        $this->getSelect()
            ->columns(array(
                'quantity' => 'COUNT(main_table.entity_id)',
                'range' => $tzRangeOffsetExpression,
            ))
            //BOF modification
//            ->where('main_table.state NOT IN (?)', array(
//                Mage_Sales_Model_Order::STATE_PENDING_PAYMENT,
//                Mage_Sales_Model_Order::STATE_NEW)
//            )
            //EOF modification
            ->order('range', Zend_Db_Select::SQL_ASC)
            ->group($tzRangeOffsetExpression);

        $this->addFieldToFilter('created_at', $dateRange);

        return $this;
    }

    protected function _calculateTotalsLive($isFilter = 0)
    {
        $this->setMainTable('sales/order');
        $this->removeAllFieldsFromSelect();

        $adapter = $this->getConnection();

        $baseTotalInvoiced    = $adapter->getIfNullSql('main_table.base_grand_total', 0);
        $baseTotalRefunded    = $adapter->getIfNullSql('main_table.base_discount_refunded', 0);
        $baseTaxInvoiced      = $adapter->getIfNullSql('main_table.base_tax_amount', 0);
        $baseTaxRefunded      = $adapter->getIfNullSql('main_table.base_tax_refunded', 0);
        $baseShippingInvoiced = $adapter->getIfNullSql('main_table.base_shipping_amount', 0);
        $baseShippingRefunded = $adapter->getIfNullSql('main_table.base_shipping_refunded', 0);

        $revenueExp = sprintf('%s - %s - %s - (%s - %s - %s)',
            $baseTotalInvoiced,
            $baseTaxInvoiced,
            $baseShippingInvoiced,
            $baseTotalRefunded,
            $baseTaxRefunded,
            $baseShippingRefunded
        );
        $taxExp = sprintf('%s - %s', $baseTaxInvoiced, $baseTaxRefunded);
        $shippingExp = sprintf('%s - %s', $baseShippingInvoiced, $baseShippingRefunded);

        if ($isFilter == 0) {
            $rateExp = $adapter->getIfNullSql('main_table.base_to_global_rate', 0);
            $this->getSelect()->columns(
                array(
                    'revenue'  => new Zend_Db_Expr(sprintf('SUM((%s) * %s)', $revenueExp, $rateExp)),
                    'tax'      => new Zend_Db_Expr(sprintf('SUM((%s) * %s)', $taxExp, $rateExp)),
                    'shipping' => new Zend_Db_Expr(sprintf('SUM((%s) * %s)', $shippingExp, $rateExp))
                )
            );
        } else {
            $this->getSelect()->columns(
                array(
                    'revenue'  => new Zend_Db_Expr(sprintf('SUM(%s)', $revenueExp)),
                    'tax'      => new Zend_Db_Expr(sprintf('SUM(%s)', $taxExp)),
                    'shipping' => new Zend_Db_Expr(sprintf('SUM(%s)', $shippingExp))
                )
            );
        }

        $this->getSelect()->columns(array(
            'quantity' => 'COUNT(main_table.entity_id)'
        ));
        //BOF modification
//        ->where('main_table.state NOT IN (?)', array(
//            Mage_Sales_Model_Order::STATE_PENDING_PAYMENT,
//            Mage_Sales_Model_Order::STATE_NEW)
//         );
        //EOF modification

        return $this;
    }

}

この例では、Orderのステータスによるフィルタリングがコメントされていますが、簡単に除外して、数えたくない注文ステータスを配置できます。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top