So überschreiben Sie das Diagramm im Dashboard
Frage
Ich habe eine Tabelle enthalten einige Daten zum Lagerbetrieb (Order_id, Phase, Dauer, DateTime, Order_canceled). Daher muss ich ein Diagramm zeichnen, um diese Daten für das Leistungsmanagement vorzustellen.
Ich habe versucht, ein Modul mit dem Namen "WarehouseReport" in Manento Admin zu erstellen. Wie kann ich also das Magento -Diagramm in das Dashboard in diesem Modul überschreiben? Eine andere Möglichkeit, jemand kann mir ein Tutorial geben, um das zu tun?
Bitte helfen Sie mir, ich bin verspricht. Vielen Dank.
Lösung
Entsprechend https://stackoverflow.com/questions/14401516/change-the-dashboard-graph-in-version-1-7-1-12-of-magento und https://stackoverflow.com/questions/15370910/magento-module-t-change-dashboard-graph
Im Modul, das Sie erstellen, müssen Sie überschreiben
Mage_Reports_Model_Resource_Order_Collection
: Also in deinemconfig.xml
stellen:... <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. Erstellen Sie die Klasse (respektieren Sie den Pfad) und in dieser Klasse müssen Sie 2 Methoden überschreiben:
<?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;
}
}
In diesem Beispiel wird der Status der Filterung durch den Bestellstatus kommentiert, aber Sie können es leicht zu erfassen und die Bestellstatus einzustellen, in denen Sie nicht gezählt werden möchten.