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

Magento 模塊更改儀表板圖

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

問題描述

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

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

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();/*** 重置所有列,因為結果將僅按 '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)', $表達式,$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()-> 列(數組('數量' =>'COUNT(main_table.entity_id)','范圍' =>$tzRangeOffsetExpression,))//轉爐修改->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;}受保護的函數 _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');//這將檢查是否沒有發票,它將根據總計計算(因此當您生成和發票時,您也不會遇到數字問題)$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()'數量' =>'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. 訂單作為新訂單(如后付款訂單 - 貨到付款,...)或待處理訂單(信用卡訂單或貝寶等.所有在線支付方式)進入商店.
    • 可以在這一步取消訂單(因為沒有生成發票).
  2. 在線支付的情況下,支付成功(因此訂單已開具發票 - 發票已生成).
  3. 訂單在開具發票后發貨(生成發貨).
  4. 訂單已退款(部分或全部),因此生成貸項通知單.

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

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

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

<塊引用>

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

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

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

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

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

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

$baseTotalInvoiced = $adapter->getIfNullSql('main_table.base_total_invoiced', 'main_table.base_grand_total');//這將檢查是否沒有發票,它將根據總計計算(因此當您生成和發票時,您也不會遇到數字問題)$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);

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

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

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 :)

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

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

相關文檔推薦

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 設置?)
Auto populate a select box using an array in PHP(使用 PHP 中的數組自動填充選擇框)
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 產生 JSON_ERROR_UTF8)
MySQL ORDER BY rand(), name ASC(MySQL ORDER BY rand(),名稱 ASC)
主站蜘蛛池模板: 免费看国产精品视频 | 真人一级毛片 | 久久国产精品久久久久久 | 请别相信他免费喜剧电影在线观看 | 日韩欧美视频 | 久久久久久国产精品免费免费狐狸 | 一区二区欧美在线 | 欧美v片| 亚洲精品免费在线 | 波多野结衣精品在线 | 欧美一a一片一级一片 | 国产亚洲黄色片 | 一区二区av| 日日爱视频| 国产成人高清成人av片在线看 | 国产91在线观看 | 亚洲毛片在线 | 一二三四在线视频观看社区 | 精品久久久av | 黄色av网站在线观看 | 日韩欧美三区 | 九色.com | 91在线视频播放 | 天堂中文av | 国产精品一区二区久久 | 蜜桃视频麻豆 | 久久久免费少妇高潮毛片 | 日本 欧美 国产 | 国产成人91视频 | 伊人久久综合影院 | 色综久久| 日韩在线一区二区 | 99久久婷婷国产综合精品电影 | 欧美在线激情 | 视频一区二区中文字幕 | 影音先锋久久 | 久久久国产精品视频 | 欧美 日韩 国产 在线 | 丝袜一区二区三区 | 色婷婷一区二区三区四区 | 成人欧美在线 |