নতুন সম্পূর্ণ কাস্টম প্রতিবেদন তৈরি করা হচ্ছে


22

বেশিরভাগ ম্যাজেন্টো রিপোর্ট বিল্ডিং ফোরাম, ব্লগ, টিউটোরিয়াল ইত্যাদি all সমস্ত বিদ্যমান ম্যাজেন্টো রিপোর্ট গ্রহণ এবং এটি অনুলিপি করা বা প্রসারিত করার দিকে মনোনিবেশ করে বলে মনে হচ্ছে । এগুলির বেশিরভাগ গ্রিড যা নির্দিষ্ট ডেটাসেটের সাথে লিঙ্ক করে এবং সেগুলির মধ্যে স্ট্যান্ডার্ড ফিল্টার অন্তর্ভুক্ত থাকে / থেকে / তারিখ এবং সময়কাল (কিছু রিপোর্টে অতিরিক্ত ফিল্টার)।

তবে, কাস্টম ফিল্টারগুলির সাথে কীভাবে সম্পূর্ণ কাস্টম প্রতিবেদন তৈরি করা যায় সে সম্পর্কে খুব কম তথ্য আছে বলে মনে হয়।

উদাহরণস্বরূপ, কোনও গ্রাহক দুটি কাস্টম ফিল্টার সহ একটি প্রতিবেদন চান যা কেবলমাত্র দুটি সাধারণ সমষ্টিগত মেট্রিকগুলিতে ফিরে আসে


1
: সম্পদের জন্য শুধু একটি রেফারেন্স stackoverflow.com/questions/7030255/...
B00MER

এমনকি আমার জন্য একই ফাঁকা পৃষ্ঠা প্রদর্শন করার জন্য, দয়া করে কী করবেন তা প্রস্তাব করুন।

উত্তর:


22

প্রথমত, আপনাকে একটি কাস্টম মডিউল তৈরি করতে হবে, নিম্নলিখিত ফাইলগুলি তৈরি করতে হবে:

    /app/etc/modules/Mycompany_Mymodule.xml 
    /app/design/adminhtml/default/default/layout/mymodule.xml 
    /app/code/local/Mycompany/Mymodule/Block/adminhtml/Mymodule/Grid.php
    /app/code/local/Mycompany/Mymodule/Block/adminhtml/Mymodule.php 
    /app/code/local/Mycompany/Mymodule/Block/Mymodule.php 
    /app/code/local/Mycompany/Mymodule/controllers/Adminhtml/MymoduleController.php 
    /app/code/local/Mycompany/Mymodule/etc/config.xml 
    /app/code/local/Mycompany/Mymodule/Helper/Data.php 
    /app/code/local/Mycompany/Mymodule/Model/Mymodule.php

আপনার মডিউলটি / অ্যাপ্লিকেশন / মডেল / মাইকম্পানি_মায়মডিউল.এক্সএমএল সংজ্ঞায়িত করুন :

<?xml version="1.0"?>
<config>
    <modules>
        <Mycompany_Mymodule>
            <active>true</active>
            <codePool>local</codePool>
        </Mycompany_Mymodule>
    </modules>
</config>

লেআউট ফাইলটি সম্পূর্ণ করুন যা অ্যাডমিন ভিউ আপডেট করবে (আমি সর্বদা এটি প্রথমে করি কারণ আমি এটি ভুলতে চাই না)। /app/design/adminhtml/default/default/layout/mymodule.xml

<?xml version="1.0"?>
<layout version="0.1.0">
    <mymodule_adminhtml_mymodule_index>
        <reference name="content">
            <block type="mymodule/adminhtml_mymodule" name="mymodule" />
        </reference>
    </mymodule_adminhtml_mymodule_index>
</layout>

এই সামগ্রী /app/code/local/Mompompany/Mymodule/etc/config.xml দ্বারা কনফিগার ফাইলটি তৈরি করুন :

<?xml version="1.0"?>
<!-- 
/**
 * @category   Mycompany
 * @package    Mycompany_Mymodule
 * @author     Damian Alberto Pastorini
 */
 -->
<config>
    <modules>
        <Mycompany_Mymodule>
            <version>0.1.0</version>
        </Mycompany_Mymodule>
    </modules>
    <admin>
        <routers>
            <mymodule>
                <use>admin</use>
                <args>
                    <module>Mycompany_Mymodule</module>
                    <frontName>mymodule</frontName>
                </args>
            </mymodule>
        </routers>
    </admin>
    <adminhtml>
        <menu>
            <report>
                <children>
                    <mymodule translate="title" module="mymodule">
                        <title>Mymodule Report</title>
                        <action>mymodule/adminhtml_mymodule</action>
                    </mymodule>
                </children>
            </report>
        </menu>
        <acl>
            <resources>
                <all>
                    <title>Allow Everything</title>
                </all>
                <admin>
                    <children>
                        <report>
                            <children>
                                <mymodule translate="title" module="mymodule">
                                    <title>Mymodule Report</title>
                                    <action>mymodule/adminhtml_mymodule</action>
                                </mymodule>
                            </children>
                        </report>
                    </children>
                </admin>
            </resources>
        </acl>
        <layout>
            <updates>
                <mymodule>
                    <file>mymodule.xml</file>
                </mymodule>
            </updates>
        </layout>
    </adminhtml>
    <global>
        <models>
            <mymodule>
                <class>Mycompany_Mymodule_Model</class>
                <resourceModel>mymodule</resourceModel>
            </mymodule>
        </models>
        <resources>
            <mymodule_setup>
                <setup>
                    <module>Mycompany_Mymodule</module>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </mymodule_setup>
            <mymodule_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </mymodule_write>
            <mymodule_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </mymodule_read>
        </resources>
        <blocks>
            <mymodule>
                <class>Mycompany_Mymodule_Block</class>
            </mymodule>
        </blocks>
        <helpers>
            <mymodule>
                <class>Mycompany_Mymodule_Helper</class>
            </mymodule>
        </helpers>
    </global>
</config>

এখানে আমরা নিয়ামক, মেনু অ্যাক্সেস এবং অনুমতিগুলি, মডেল, ব্লক এবং সহায়ককে সংজ্ঞায়িত করি।

গ্রিডটি তৈরি করুন এবং সমস্ত কলাম /app/code/local/Mycompany/Mymodule/Block/adminhtml/Mymodule/Grid.php নির্দিষ্ট করুন :

<?php
 class Mycompany_Mymodule_Block_Adminhtml_Mymodule_Grid extends Mage_Adminhtml_Block_Report_Grid {

public function __construct() {
    parent::__construct();
    $this->setId('mymoduleGrid');
    $this->setDefaultSort('created_at');
    $this->setDefaultDir('ASC');
    $this->setSaveParametersInSession(true);
    $this->setSubReportSize(false);
}

protected function _prepareCollection() {
    parent::_prepareCollection();
    $this->getCollection()->initReport('mymodule/mymodule');
    return $this;
}

protected function _prepareColumns() {
    $this->addColumn('ordered_qty', array(
        'header'    =>Mage::helper('reports')->__('Quantity Ordered'),
        'align'     =>'right',
        'index'     =>'ordered_qty',
        'total'     =>'sum',
        'type'      =>'number'
    ));
    $this->addColumn('item_id', array(
        'header' => Mage::helper('mymodule')->__('Item ID'),
        'align' => 'right',
        'index' => 'item_id',
        'type'  => 'number',
        'total' => 'sum',
    ));
    $this->addExportType('*/*/exportCsv', Mage::helper('mymodule')->__('CSV'));
    $this->addExportType('*/*/exportXml', Mage::helper('mymodule')->__('XML'));
    return parent::_prepareColumns();
}

public function getRowUrl($row) {
    return false;
}

public function getReport($from, $to) {
    if ($from == '') {
        $from = $this->getFilter('report_from');
    }
    if ($to == '') {
        $to = $this->getFilter('report_to');
    }
    $totalObj = Mage::getModel('reports/totals');
    $totals = $totalObj->countTotals($this, $from, $to);
    $this->setTotals($totals);
    $this->addGrandTotals($totals);
    return $this->getCollection()->getReport($from, $to);
}
}

এই ফাইলটি পরিষ্কার তবে আমি আপনাকে নির্দিষ্ট লাইন সম্পর্কে কিছু টিপস দিচ্ছি:

// এই লাইনটি তথ্য পাওয়ার জন্য মডেলটিকে ব্যবহার করতে নির্দেশ করে।

$this->getCollection()->initReport('mymodule/mymodule'); // it's used to indicate that this field must be totalized at the end. 
'total' =>'sum', // this is executed when you click on the rows grid, in case you return false (like the example) nothing will happen when you click on the rows grid. 
public function getRowUrl($row) {

পরবর্তী পদক্ষেপের জন্য, গ্রিড কনটেইনার ব্লক / অ্যাপ্লিকেশন / কোড / লোকাল / মাইকম্পানি / মায়মডিউল / ব্লক / অ্যাডমিনটিচটিএমএল / মাইমডিউল.এফপি তৈরি করুন :

<?php
 class Mycompany_Mymodule_Block_Adminhtml_Mymodule extends Mage_Adminhtml_Block_Widget_Grid_Container {

public function __construct() {
    $this->_controller = 'adminhtml_mymodule';
    $this->_blockGroup = 'mymodule';
    $this->_headerText = Mage::helper('mymodule')->__('Mymodule Report');
    parent::__construct();
    $this->_removeButton('add');
}
}

অ্যাড বোতামটি সরাতে আমরা এখানে এই লাইনটি যুক্ত করব: // parent::__construct();লাইনের পরে এটি সর্বদা হওয়া উচিত ।$this->_removeButton('add');

ব্লক ধারক / অ্যাপ্লিকেশন / কোড / লোকাল / ম্যাকম্পনি / মায়মডিউল / ব্লক / মাইমডিউল.এফপি তৈরি করুন :

<?php
 class Mycompany_Mymodule_Block_Mymodule extends Mage_Core_Block_Template {

public function _prepareLayout() {
    return parent::_prepareLayout();
}

public function getMymodule() {
    if (!$this->hasData('mymodule')) {
        $this->setData('mymodule', Mage::registry('mymodule'));
    }
    return $this->getData('mymodule');
} 
}

কন্ট্রোলারটি তৈরি করুন / অ্যাপ্লিকেশন / কোড / লোকাল / ম্যাকম্পানি / মায়মডিউল / নিয়ন্ত্রণকারী / অ্যাডমিনিটিএমএল / মাইমডিউলকন্ট্রোলআরএফপি :

<?php

 class Mycompany_Mymodule_Adminhtml_MymoduleController extends Mage_Adminhtml_Controller_Action {

protected function _initAction() {
    $this->loadLayout();
    return $this;
}

public function indexAction() {
    $this->_initAction()
            ->renderLayout();
}

public function exportCsvAction() {
    $fileName = 'mymodule.csv';
    $content = $this->getLayout()->createBlock('mymodule/adminhtml_mymodule_grid')
                    ->getCsv();
    $this->_sendUploadResponse($fileName, $content);
}

public function exportXmlAction() {
    $fileName = 'mymodule.xml';
    $content = $this->getLayout()->createBlock('mymodule/adminhtml_mymodule_grid')
                    ->getXml();
    $this->_sendUploadResponse($fileName, $content);
}

protected function _sendUploadResponse($fileName, $content, $contentType='application/octet-stream') {
    $response = $this->getResponse();
    $response->setHeader('HTTP/1.1 200 OK', '');
    $response->setHeader('Pragma', 'public', true);
    $response->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true);
    $response->setHeader('Content-Disposition', 'attachment; filename=' . $fileName);
    $response->setHeader('Last-Modified', date('r'));
    $response->setHeader('Accept-Ranges', 'bytes');
    $response->setHeader('Content-Length', strlen($content));
    $response->setHeader('Content-type', $contentType);
    $response->setBody($content);
    $response->sendResponse();
    die;
}
}

তারপরে খালি সহায়ক / অ্যাপ্লিকেশন / কোড / স্থানীয় / মাইকম্পানি / মায়মডিউল / হেল্পার / ডেটা.এফপি :

<?php
class Mycompany_Mymodule_Helper_Data extends Mage_Core_Helper_Abstract
{

}

এবং শেষের জন্য আমরা এমন মডেল তৈরি করি যা ডেটা / অ্যাপ্লিকেশন / কোড / লোকাল / মাইকম্পানি / মাইমডিউল / মডেল / মাইমডিউল.এফপি আনবে :

 <?php
    class Mycompany_Mymodule_Model_Mymodule extends Mage_Reports_Model_Mysql4_Order_Collection
{
    function __construct() {
        parent::__construct();
        $this->setResourceModel('sales/order_item');
        $this->_init('sales/order_item','item_id');
   }

    public function setDateRange($from, $to) {
        $this->_reset();
        $this->getSelect()
             ->joinInner(array(
                 'i' => $this->getTable('sales/order_item')),
                 'i.order_id = main_table.entity_id'
                 )
             ->where('i.parent_item_id is null')
             ->where("i.created_at BETWEEN '".$from."' AND '".$to."'")
             ->where('main_table.state = \'complete\'')
             ->columns(array('ordered_qty' => 'count(distinct `main_table`.`entity_id`)'));
        // uncomment next line to get the query log:
        // Mage::log('SQL: '.$this->getSelect()->__toString());
        return $this;
    }

    public function setStoreIds($storeIds)
    {
        return $this;
    }

    }
    ?>

এটি একটি কাস্টম মডেল যা ম্যাগেন্টো কোর মডেলগুলি থেকে ডেটা পেয়েছে, এখানে আপনি যে কোনও মডেল সংজ্ঞায়িত করতে পারেন বা যদি আপনি ইতিমধ্যে আপনার নিজের ডিবি / টেবিল পেয়ে থাকেন তবে আপনি সেখান থেকে রিপোর্টের ডেটা পেতে পারেন। // এই লাইনটি ডিফল্টরূপে আসা আসল মূল কোয়েরিটিকে পুনরায় সেট করুন।$this->_reset();

আমি এই সমস্ত ফাইল যুক্ত করার চেষ্টা করেছি তবে আমি প্রতিবেদনের নতুন মেনু আইটেমে ক্লিক করলে একটি ফাঁকা পৃষ্ঠা উপস্থিত হয়।


1
এটি খালি পৃষ্ঠা দেখাচ্ছে। এর সমাধান করার কোন ধারণা?
502_গীক

এই cpomes একটি ফাঁকা পাতা কোন আপডেট আছে?
ইয়াহুদা শোয়ার্টজ

শুধু একটি সম্পাদনা করা এবং বুঝতে পেরে আমি একটি বোকা! দয়া করে এটি গ্রহণ করবেন না :)
ওয়াইল্ডকার্ড

এই ফাঁকা পৃষ্ঠা সমস্যাটি কেউ সমাধান করেছেন?
জন ফনসেকা

আমি বিক্রয় অর্ডার আইটেমটি তৈরি করতে চাই যে আমার কী পরিবর্তন করতে হবে?
জিগস পারমার

1

শুধু ফোল্ডারের পুনঃনামকরণ adminhtmlকরার Adminhtmlপথ নিচে অনুযায়ী:

অ্যাপ্লিকেশন / কোড / স্থানীয় / Mycompany / Mymodule / ব্লক / adminhtml / Mymodule.php

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.