久久久久久久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)
主站蜘蛛池模板: 色婷婷综合久久久久中文一区二区 | 欧美一区二区三区在线 | 欧美一区二区三区小说 | 在线免费观看黄视频 | 欧美日韩亚洲一区 | 综合久久久 | 午夜免费观看网站 | 欧美猛交 | 91精品久久 | 国产又色又爽又黄又免费 | 天天av天天好逼 | 日本精a在线观看 | 日韩中文一区二区三区 | 国产9 9在线 | 中文 | 免费精品视频 | 中文字幕1区| 欧美特级黄色 | 色网在线观看 | 中文字幕1区 | 精品亚洲第一 | 亚洲一区二区三区在线视频 | 高清黄色网址 | 亚洲欧美国产精品一区二区 | 一区二区三区欧美 | 99久久夜色精品国产亚洲96 | 中文字幕日韩一区二区 | 国产精品亚洲成在人线 | 一区二区三区视频在线免费观看 | 欧美日韩1区2区 | 羞羞视频在线观看 | 欧美日韩不卡合集视频 | 久草视频在线播放 | 色综合久久久久 | 日日骚视频 | 免费一级做a爰片久久毛片潮喷 | 亚州精品天堂中文字幕 | 黄色网址av | www久久国产| 综合久久av| 国产日韩欧美激情 | 国产人久久人人人人爽 |