久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Magento 模塊更改儀表板圖

Magento module to change dashboard graph(Magento 模塊更改儀表板圖)
本文介紹了Magento 模塊更改儀表板圖的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

我正在關(guān)注這篇文章 更改 Magento 1.7/1.12 版本中的儀表盤圖表 以允許處理"訂單的銷售顯示在儀表盤圖表上.我的文件位于正確的目錄下方和內(nèi),并且在 config>advanced 中顯示為活動狀態(tài).我還重新索引、刷新了緩存和刷新了生命周期統(tǒng)計信息.我在日志中沒有看到任何錯誤.你能看出有什么問題嗎?我有 firegento 并啟用了日志記錄,但這也不起作用.

儀表板上的收入總額似乎是正確的,但它沒有反映在時間線圖上.例如,上午 10 點可能有 30 個條款的凈訂單 2000 美元,但它沒有顯示在時間圖上.誰可以修復(fù)下面的腳本以反映我的時間表,則懸賞賞金!

CaitlinHavener/Dashboard/etc/config.xml:

<配置><模塊><CaitlinHavener_Dashboard><version>1.0</version></CaitlinHavener_Dashboard></模塊><全球><模型><CaitlinHavener_Dashboard><class>CaitlinHavener_Dashboard_Model</class></CaitlinHavener_Dashboard><reports_resource><重寫><order_collection>CaitlinHavener_Dashboard_Model_Reports_Resource_Order_Collection</order_collection></rewrite></reports_resource></模型></全球></config>

CaitlinHavener/Dashboard/Model/Reports/Resource/Order/Collection.php

 setMainTable('銷售/訂單');$adapter = $this->getConnection();/*** 重置所有列,因為結(jié)果將僅按 'created_at' 字段分組*/$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));*/$expression = sprintf('%s - %s - %s - (%s - %s - %s)',$adapter->getIfNullSql('main_table.base_total_invoiced', 'main_table.base_grand_total'),$adapter->getIfNullSql('main_table.base_tax_invoiced', 'main_table.base_tax_amount'),$adapter->getIfNullSql('main_table.base_shipping_invoiced', 'main_table.base_shipping_amount'),$adapter->getIfNullSql('main_table.base_total_refunded', 0),$adapter->getIfNullSql('main_table.base_tax_refunded', 0),$adapter->getIfNullSql('main_table.base_shipping_refunded', 0));如果($isFilter == 0){$this->getSelect()->columns(array()'收入' =>新 Zend_Db_Expr(sprintf('SUM((%s) * %s)', $表達(dá)式,$adapter->getIfNullSql('main_table.base_to_global_rate', 0)))));} 別的 {$this->getSelect()->columns(array()'收入' =>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()-> 列(數(shù)組('數(shù)量' =>'COUNT(main_table.entity_id)','范圍' =>$tzRangeOffsetExpression,))//轉(zhuǎn)爐修改->where('main_table.state NOT IN (?)', array(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT,//Mage_Sales_Model_Order::STATE_NEW))//EOF修改-> order('range', Zend_Db_Select::SQL_ASC)-> 組($tzRangeOffsetExpression);$this->addFieldToFilter('created_at', $dateRange);返回 $this;}受保護(hù)的函數(shù) _calculateTotalsLive($isFilter = 0){$this->setMainTable('銷售/訂單');$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);//$baseShippingRefunded = $adapter->getIfNullSql('main_table.base_shipping_refunded', 0);$baseTotalInvoiced = $adapter->getIfNullSql('main_table.base_total_invoiced', 'main_table.base_grand_total');//這將檢查是否沒有發(fā)票,它將根據(jù)總計計算(因此當(dāng)您生成和發(fā)票時,您也不會遇到數(shù)字問題)$baseTotalRefunded = $adapter->getIfNullSql('main_table.base_total_refunded', 0);$baseTaxInvoiced = $adapter->getIfNullSql('main_table.base_tax_invoiced', 'main_table.base_tax_amount');//稅收也一樣$baseTaxRefunded = $adapter->getIfNullSql('main_table.base_tax_refunded', 0);$baseShippingInvoiced = $adapter->getIfNullSql('main_table.base_shipping_invoiced', 'main_table.base_shipping_amount');//與這里相同的運輸$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);如果($isFilter == 0){$rateExp = $adapter->getIfNullSql('main_table.base_to_global_rate', 0);$this->getSelect()->columns(大批('收入' =>new Zend_Db_Expr(sprintf('SUM((%s) * %s)', $revenueExp, $rateExp)),'稅' =>new Zend_Db_Expr(sprintf('SUM((%s) * %s)', $taxExp, $rateExp)),'運輸' =>new Zend_Db_Expr(sprintf('SUM((%s) * %s)', $shippingExp, $rateExp))));} 別的 {$this->getSelect()->columns(大批('收入' =>new Zend_Db_Expr(sprintf('SUM(%s)', $revenueExp)),'稅' =>new Zend_Db_Expr(sprintf('SUM(%s)', $taxExp)),'運輸' =>new Zend_Db_Expr(sprintf('SUM(%s)', $shippingExp))));}$this->getSelect()->columns(array()'數(shù)量' =>'COUNT(main_table.entity_id)'))->where('main_table.state NOT IN (?)', array(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT,//Mage_Sales_Model_Order::STATE_NEW));返回 $this;}}?>

解決方案

您必須了解 Magento 中的 Order 流程??,才能完全了解圖表的填充方式

  1. 訂單作為新訂單(如后付款訂單 - 貨到付款,...)或待處理訂單(信用卡訂單或貝寶等.所有在線支付方式)進(jìn)入商店.
    • 可以在這一步取消訂單(因為沒有生成發(fā)票).
  2. 在線支付的情況下,支付成功(因此訂單已開具發(fā)票 - 發(fā)票已生成).
  3. 訂單在開具發(fā)票后發(fā)貨(生成發(fā)貨).
  4. 訂單已退款(部分或全部),因此生成貸項通知單.

現(xiàn)在,如果您查看前面的步驟,您將看到如果訂單處于 NEW 和 CANCELED STATE(不是狀態(tài)),則不應(yīng)計算收入

應(yīng)在訂單開具發(fā)票時計算(這樣您將獲得收入、運費和退款)

所以要統(tǒng)計收入和圖表中NEW STATE的訂單重寫方法

<塊引用>

app/code/core/Mage/Reports/Model/Resource/Order/Collection.php/***計算總計實時報告** @param int $isFilter* @return Mage_Reports_Model_Resource_Order_Collection*/受保護(hù)的函數(shù) _calculateTotalsLive($isFilter = 0){}

//第 430 行->where('main_table.state NOT IN (?)', array(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT,Mage_Sales_Model_Order::STATE_NEW//注釋此行));

所以現(xiàn)在如果你評論這一行,訂單將被計入(訂單圖表)

但是仍然沒有計算總數(shù)(因為沒有發(fā)票/發(fā)貨/退款)

因此,您需要將計算過程從使用發(fā)票金額更改為僅在發(fā)票之前使用 TOTALS 通過小的更改,您可以毫無錯誤地實現(xiàn)您想要的代碼下面的代碼

更改行(390 及以下為如下所示):

$baseTotalInvoiced = $adapter->getIfNullSql('main_table.base_total_invoiced', 'main_table.base_grand_total');//這將檢查是否沒有發(fā)票,它將根據(jù)總計計算(因此當(dāng)您生成和發(fā)票時,您也不會遇到數(shù)字問題)$baseTotalRefunded = $adapter->getIfNullSql('main_table.base_total_refunded', 0);$baseTaxInvoiced = $adapter->getIfNullSql('main_table.base_tax_invoiced', 'main_table.base_tax_amount');//稅收也一樣$baseTaxRefunded = $adapter->getIfNullSql('main_table.base_tax_refunded', 0);$baseShippingInvoiced = $adapter->getIfNullSql('main_table.base_shipping_invoiced', 'main_table.base_shipping_amount');//與這里相同的運輸$baseShippingRefunded = $adapter->getIfNullSql('main_table.base_shipping_refunded', 0);

所以在簡單的答案中,解決方案沒有改變計算方式,但解決方案改變了計算的默認(rèn)值

遵循此更改,您將得到您真正想要的:)

I am following along with this post Change the Dashboard Graph in version 1.7/1.12 of Magento to allow the sales of "processing" orders to show up on the dashboard graph. My files are below and within the right directories as well as showing up as active in config>advanced. I have also reindexed, refreshed cache, and refreshed lifetime statistics. I am seeing no errors in the logs. Can you see what is wrong? I have firegento and have enabled logging, but that's not working either.

EDIT: The Revenue total on the dashboard seems correct, but its not reflecting on the timeline graph. For example there may be a net 30 terms order of $2000 at 10AM but it doesn't show on the time graph. Bounty for whoever can fix the script below to reflect on the timeline for me!

CaitlinHavener/Dashboard/etc/config.xml:

<?xml version="1.0"?>
<config>
    <modules>
        <CaitlinHavener_Dashboard>
            <version>1.0</version>
        </CaitlinHavener_Dashboard>
    </modules>
    <global>
        <models>
            <CaitlinHavener_Dashboard>
                <class>CaitlinHavener_Dashboard_Model</class>
            </CaitlinHavener_Dashboard>
            <reports_resource>
                <rewrite>
                    <order_collection>CaitlinHavener_Dashboard_Model_Reports_Resource_Order_Collection</order_collection>
                </rewrite>
            </reports_resource>
        </models>
    </global>
</config>

CaitlinHavener/Dashboard/Model/Reports/Resource/Order/Collection.php

    <?php
/**
 * Show all orders, not only the invoiced one
 */
class CaitlinHavener_Dashboard_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)
        ); */

        $expression = sprintf('%s - %s - %s - (%s - %s - %s)',
            $adapter->getIfNullSql('main_table.base_total_invoiced', 'main_table.base_grand_total'),
            $adapter->getIfNullSql('main_table.base_tax_invoiced', 'main_table.base_tax_amount'),
            $adapter->getIfNullSql('main_table.base_shipping_invoiced',  'main_table.base_shipping_amount'),
            $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);
        // $baseShippingRefunded = $adapter->getIfNullSql('main_table.base_shipping_refunded', 0);

        $baseTotalInvoiced    = $adapter->getIfNullSql('main_table.base_total_invoiced', 'main_table.base_grand_total'); // This will check if there is no invoice it will calculate based on the grand totals ( so when you generate and invoice u will have no issues with the numbers also )
$baseTotalRefunded    = $adapter->getIfNullSql('main_table.base_total_refunded', 0);
$baseTaxInvoiced      = $adapter->getIfNullSql('main_table.base_tax_invoiced', 'main_table.base_tax_amount'); // Same here for taxes
$baseTaxRefunded      = $adapter->getIfNullSql('main_table.base_tax_refunded', 0);
$baseShippingInvoiced = $adapter->getIfNullSql('main_table.base_shipping_invoiced', 'main_table.base_shipping_amount'); // Same here for shipping 
$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)'
        ))
        ->where('main_table.state NOT IN (?)', array(
            Mage_Sales_Model_Order::STATE_PENDING_PAYMENT,
            //Mage_Sales_Model_Order::STATE_NEW
            )
         );

        return $this;
    }

}
?>

解決方案

You have to understand the Order process in Magento so you can fully understand how the chart being populated

  1. Order come to the Store as new Order ( like post paid orders - Cash on Delivery, ... ) or Pending order ( credit card orders or paypal etc.. all online payment methods ).
    • Order can be canceled at this step ( as no invoice generated ).
  2. In case of online payment, payment gone through successfully ( So the order is invoiced - invoice generated ).
  3. Order Shipped after being invoiced ( Shipment is generated ).
  4. Order refunded ( partial or complete ) so credit memos generated.

Now if you look at the previous steps and you will see that the Revenue not supposed to be calculated if the Order is in NEW and CANCELED STATE ( not status )

It should be calculated when the Order gets invoiced ( so you will get the revenue and shipping fees and the refunds )

So to count the orders in NEW STATE in the revenue and the graph Override the method

app/code/core/Mage/Reports/Model/Resource/Order/Collection.php
/**
 * Calculate totals live report
 *
 * @param int $isFilter
 * @return Mage_Reports_Model_Resource_Order_Collection
 */
protected function _calculateTotalsLive($isFilter = 0){}

   // Line 430
    ->where('main_table.state NOT IN (?)', array(
        Mage_Sales_Model_Order::STATE_PENDING_PAYMENT,
        Mage_Sales_Model_Order::STATE_NEW // Comment this line 
        )
     );

So now if you comment this line the order Will be counted in the ( ORDERS chart graph )

but the totals is still not calculated ( because there is no invoice / shipments / refunds )

So you need to change the calculation process from using the invoiced amount to use the TOTALS only even before invoice With small changes you can achieve what you want without mistakes Code below

Change the lines ( 390 and below to be like the following ):

$baseTotalInvoiced    = $adapter->getIfNullSql('main_table.base_total_invoiced', 'main_table.base_grand_total'); // This will check if there is no invoice it will calculate based on the grand totals ( so when you generate and invoice u will have no issues with the numbers also )
$baseTotalRefunded    = $adapter->getIfNullSql('main_table.base_total_refunded', 0);
$baseTaxInvoiced      = $adapter->getIfNullSql('main_table.base_tax_invoiced', 'main_table.base_tax_amount'); // Same here for taxes
$baseTaxRefunded      = $adapter->getIfNullSql('main_table.base_tax_refunded', 0);
$baseShippingInvoiced = $adapter->getIfNullSql('main_table.base_shipping_invoiced', 'main_table.base_shipping_amount'); // Same here for shipping 
$baseShippingRefunded = $adapter->getIfNullSql('main_table.base_shipping_refunded', 0);

So In simple answer the solution is not changed the Way of calculation, But the solution change the Default values of the calculations

Follow this changes and you will get what you exactly want :)

這篇關(guān)于Magento 模塊更改儀表板圖的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Joining 2 tables in SELECT(MYSQL/PHP)(在 SELECT(MYSQL/PHP) 中加入 2 個表)
How to make lt;option selected=quot;selectedquot;gt; set by MySQL and PHP?(如何使lt;option selected=“selectedgt;由 MySQL 和 PHP 設(shè)置?)
Auto populate a select box using an array in PHP(使用 PHP 中的數(shù)組自動填充選擇框)
PHP SQL SELECT where like search item with multiple words(PHP SQL SELECT where like search item with multiple words)
json_encode produce JSON_ERROR_UTF8 from MSSQL-SELECT(json_encode 從 MSSQL-SELECT 產(chǎn)生 JSON_ERROR_UTF8)
MySQL ORDER BY rand(), name ASC(MySQL ORDER BY rand(),名稱 ASC)
主站蜘蛛池模板: 一区二区久久 | 中文字幕三级 | 天天摸夜夜操 | 久久香蕉国产 | 日韩国产一区二区三区 | 欧美一级在线视频 | 午夜在线观看视频网站 | 中文字幕在线观看一区二区三区 | 国产超碰在线 | 色在线视频 | 美女一级片| 日韩一区在线播放 | 男女h黄动漫啪啪无遮挡软件 | 天天干天天操天天爽 | 一级淫片观看 | 亚洲一级特黄 | 在线国产91 | 中文字幕免费在线看线人动作大片 | 色综合色综合 | 一级片在线免费观看 | 久久性| 黄色一区二区三区 | 国产成人在线视频 | 欧美日韩国| 欧美性猛交一区二区三区精品 | 久久人体| 日韩不卡av | 在线观看黄色小视频 | 中文字幕亚洲精品 | www.草 | 日韩免费在线视频 | 亚洲欧美国产毛片在线 | 瑟瑟视频在线观看 | 亚洲综合三区 | 黄色一级片免费 | 精品网站999www| 波多野吉衣一二三区乱码 | 九九热免费视频 | 欧美精品在线观看 | 亚洲国产欧美日韩在线 | 欧美精品久久久久久久多人混战 |