Magento 1.9.x Пользовательский отчет: добавление суммы из другой таблицы по диапазону дат - PullRequest
0 голосов
/ 20 марта 2019

Я хочу создать пользовательский отчет в Magento 1.9 на основе учебника по https://www.atwix.com/magento/simple-products-report/

В этом отчете мне понадобится дополнительный столбец с SUM из product qty из другой таблицы в указанном интервале.

Отчет аналогичен отчетам -> Продукт -> Заказчик продуктов.

Я могу выбрать даты (from и to), но эти даты недоступны в Frontline_Simpleproductsreport_Block_Report_Product_Inventory.

В: Как я могу получить даты (from и to) в функции 'render'?

Также: есть ли другой подход для расчета суммы на основе диапазонов дат отчета?

Ниже приведены соответствующие части из моей текущей реализации.

/app/code/local/Frontline/Simpleproductsreport/Block/Report/Product/Simplesold/Grid.php

<?php

class Frontline_Simpleproductsreport_Block_Report_Product_Simplesold_Grid extends Mage_Adminhtml_Block_Report_Product_Sold_Grid
{
    /**
     * Setting up proper product collection name for a report
     *
     * @return Frontline_Simpleproductsreport_Block_Report_Product_Simplesold_Grid
     */
    protected function _prepareCollection()
    {
        Mage_Adminhtml_Block_Report_Grid::_prepareCollection();

        $this->getCollection()
            ->initReport('frontline_simpleproductsreport/simpleproduct_sold_collection');

        return $this;
    }

    protected function _prepareColumns()
    {

        $this->addColumn('entity_id', array(
            'header'    => Mage::helper('reports')->__('ID'),
            'index'     => 'entity_id',
            'align'     => 'left'
        ));

        $this->addColumn('name', array(
            'header'    => Mage::helper('reports')->__('Product Name'),
            'index'     => 'name',
            'align'     => 'left'
        ));

        $this->addColumn('ordered_qty', array(
            'header'    => Mage::helper('reports')->__('Quantity Ordered'),
            'index'     => 'ordered_qty',
            'align'     => 'left'
        ));

        $this->addColumn('inventory', array(
            'header'    => Mage::helper('reports')->__('Inventory'),
            'index'     => 'inventory',
            'align'     => 'left',
            'renderer'  => 'Frontline_Simpleproductsreport_Block_Report_Product_Inventory',
        ));

        return parent::_prepareColumns();
    }
}

/app/code/local/Frontline/Simpleproductsreport/Block/Report/Product/Inventory.php

<?php

class Frontline_Simpleproductsreport_Block_Report_Product_Inventory extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{

    public function render(Varien_Object $row)
    {
        $movements = Mage::getModel('stockmonitor/stockmovement')->getCollection()
           ->addFieldToFilter('product_id', $row->getData('entity_id'))
           ->addFieldToFilter('order_id', 0)
           ->getColumnValues('qty_change');

        return count($movements);
    }

}

Заранее спасибо:)

...