বিক্রয়_ফ্ল্যাট_র্ডার_গ্রিডে নতুন কলাম যুক্ত করুন


14

আমি কীভাবে sales_flat_order_gridটেবিলে একটি নতুন কলাম যুক্ত করতে পারি এবং মানগুলি যথাযথভাবে sertedোকানো হয়েছে তা নিশ্চিত করতে পারি?

নতুন কলামের "উত্স" হ'ল একটি কাস্টম কলাম যা আমরা যুক্ত করেছি sales_flat_order, আসুন এটি কল করুন foo। আফিক্স, fooপ্রধান অর্ডার গ্রিডে উপস্থিত হওয়ার জন্য তিনটি উপায় রয়েছে :

  1. JOINউপর sales_flat_order_gridসংগ্রহ sales_flat_order
    • সমস্যা: দ্ব্যর্থহীন কলামগুলির কারণে ফিল্টারগুলি আর কাজ করবে না (যেহেতু উভয় টেবিলের সমান কলামের নাম রয়েছে)
  2. sales_flat_orderপরিবর্তে ডেটা জন্য গ্রিড ব্যবহার করুন sales_flat_order_grid
    • সমস্যা: কলামগুলি সূচিযুক্ত নয়, তাই ফিল্টারিং ভয়ঙ্করভাবে ধীর। অব্যবহৃত sales_flat_order_gridটেবিলটিতে সূচিযুক্ত একই ডেটা সূচকে যুক্ত করা নির্বোধ বলে মনে হচ্ছে ।
  3. এতে একটি নতুন কলাম যুক্ত করুন sales_flat_order_grid এবং মানটির আপডেট আপডেট করুন

কীভাবে sales_flat_order_gridআপডেট হচ্ছে তা আমি বুঝতে পারি না, সুতরাং এই নতুন কলামটি কীভাবে যুক্ত করব তা আমি জানি না। কোন চিন্তা?

উত্তর:


18

sales_flat_order_gridটেবিল কর্ম সংরক্ষণ প্রতি আদেশ এ আপডেট করা হয়। আপনি নিজের এক্সটেনশনে টেবিলটিতে কাস্টম কলামগুলি যুক্ত করতে পারেন, আপনি যদি সেলস_ফ্ল্যাট_র্ডার টেবিলটিতে ইতিমধ্যে ব্যবহৃত একটি কলামের নাম যুক্ত করেন তবে প্রতিটি ক্রম-সংরক্ষণ ক্রিয়ায় কলামগুলি আপডেট করা হয় (প্রয়োজনে) । আপনি যদি অন্য কোনও টেবিল থেকে ডেটা toোকাতে চান তবে sales_order_resource_init_virtual_grid_columnsইভেন্টটি যোগ সংগ্রহ এবং প্রস্তুত করার জন্য আপনাকে একটি পর্যবেক্ষক তৈরি করতে হবে ।

আরও বিশদ বিবরণ এবং একটি কার্যকারী উদাহরণের জন্য আমার উত্তরটি দেখুন গ্রিডে কলাম যুক্ত করুন (পর্যবেক্ষক) - কলামটি 'স্টোর_আইড' যেখানে ধারাটি দ্বিধাহীন সমস্যা রয়েছে


আপনি কি নিশ্চিত যে এই আপডেটটি কেবল কলামের নামের উপর ভিত্তি করে? আমার ক্ষেত্রে, "গ্রিড" => সত্য দিয়ে বৈশিষ্ট্যটি মুছে ফেলা এবং পুনরায় তৈরি না করা পর্যন্ত এটি কাজ করে না। কেবলমাত্র একটি অভিন্ন কলাম যুক্ত করতে উভয় টেবিলকে পরিবর্তন করা যথেষ্ট ছিল না, বা বিদ্যমান বৈশিষ্ট্যটিতে আপডেট অ্যাট্রিবিউট () কল করছিল। : (আমি এই প্রশ্নের থেকে ধারণা পেয়েছেন stackoverflow.com/a/11254067/884734 )
এরিক Seastrand

গ্রিড = সত্য বৈশিষ্ট্যের সাহায্যে সেটআপ স্ক্রিপ্টটি স্লাস_ফ্ল্যাট_র্ডার এবং বিক্রয়_ফ্ল্যাট_র্ডার_গ্রিড টেবিলের ইনোবিথ বৈশিষ্ট্য তৈরি করে। এটি একটি আদেশের আপডেটটি এটি উভয় টেবিলগুলিতে সংরক্ষণ করবে।
ভ্লাদিমির কেরখফ

9

আমি একই জিনিস করেছি। ক্রম অনুসারে 'অর্ডার_ টাইপ' ক্ষেত্র যুক্ত হয়েছে এবং এটি গ্রিডে প্রদর্শিত হয়েছে। এটি ম্যাজেন্টো ভের 1.7.0.2 এ পুরোপুরি কাজ করছে

অ্যাডমিনে বিক্রয় অর্ডার গ্রিডে অর্ডার প্রকারের ক্ষেত্রটি কীভাবে যুক্ত করবেন?

1) আমাদের নীচের কোড সহ একটি ইনস্টল এসকিউএল ফাইল তৈরি করতে হবে।

<?php 
/* @var $installer Mage_Sales_Model_Entity_Setup */
$installer = $this;
$installer->startSetup();
$installer->run(" 
ALTER TABLE `{$installer->getTable('sales/order')}` ADD `order_type` VARCHAR(255) NOT NULL;
ALTER TABLE `{$installer->getTable('sales/order_grid')}` ADD `order_type` VARCHAR(255) NOT NULL;
ALTER TABLE `{$installer->getTable('sales/quote')}` ADD `order_type` VARCHAR(255) NOT NULL; 
");
$installer->endSetup();
?>

2) ওভাররাইড Mage_Adminhtml_Block_Sales_Order_Grid ফাইল এবং এতে নীচের কোড যুক্ত করুন।

<?php

class Mycompany_Mymodule_Block_Adminhtml_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid
{
    protected function _prepareColumns()
    {

        $options = array(
        'ordertypeID1' => 'order type label1',
        'ordertypeID2' => 'order type label2',
        'ordertypeID3' => 'order type label3',
        ); 
        $this->addColumn('order_type', array(
            'header'    =>  Mage::helper('customer')->__('Order Type'),
            'width'     =>  '100',
            'index'     =>  'order_type',
            'type'      =>  'options',
            'options'   =>   $options
        ));
        $this->addColumnsOrder('order_type', 'grand_total');
        return parent::_prepareColumns();
    }
}
?>

3) অর্ডার প্রকারের ক্ষেত্রের মান / আপডেট করতে একটি পর্যবেক্ষক ইভেন্ট তৈরি করুন

আপনার মডিউল / ইত্যাদি / config.xml খুলুন

<config>
    <adminhtml> 
         <events>
            <adminhtml_sales_order_create_process_data>
                <observers>
                    <modulename>
                        <class>Mycompany_Mymodule_Model_Adminhtml_Observer</class>
                        <method>adminhtml_sales_order_create_process_data</method>
                    </modulename>
                </observers>
            </adminhtml_sales_order_create_process_data>
            <sales_convert_quote_to_order>
                <observers>
                    <modulename>
                        <type>model</type>
                        <class>Mycompany_Mymodule_Model_Adminhtml_Observer</class>
                        <method>sales_convert_quote_to_order</method> 
                    </modulename>
                </observers>
            </sales_convert_quote_to_order>
        </events>  
    </adminhtml>
</config>

৪) মাইকম্পানি_মোমডিউল_মডেল_এডমিন_এইচটিএমএল_অবসারবার ক্লাসের একটি পর্যবেক্ষক ফাইল তৈরি করুন

<?php
class Mycompany_Mymodule_Model_Adminhtml_Observer 
{
    public function adminhtml_sales_order_create_process_data(Varien_Event_Observer $observer)
    { 
        try {
            $requestData = $observer->getEvent()->getRequest();

            if (isset($requestData['order']['order_type'])) {
                $observer->getEvent()->getOrderCreateModel()->getQuote()
                    ->addData($requestData['order']) 
                    ->save();
            } 

        } catch (Exception $e) {
            Mage::logException($e);
        }
        return $this;
    }


    /** 
     *
     * @param Varien_Event_Observer $observer
     * @return Mycompany_Mymodule_Model_Adminhtml_Observer
     */
    public function sales_convert_quote_to_order(Varien_Event_Observer $observer)
    {
        if ($ordertype = $observer->getEvent()->getQuote()->getOrderType()) {
            try {  
                $observer->getEvent()->getOrder()
                    ->setOrderType($ordertype);

            } catch (Exception $e) {
                Mage::logException($e);
            }
        }       

        return $this;
    }
}
?>

2

আমি অনুরূপ কোড অনুসরণ করে ব্যবহার করেছি। এটা ঠিক কাজ করছে।

$installer = $this;
$installer->startSetup();

$installer->run("ALTER TABLE  sales_flat_order ADD COLUMN barcode  VARCHAR(255) NOT NULL;");

$installer->run("ALTER TABLE  sales_flat_order_grid ADD COLUMN barcode  VARCHAR(255) NOT NULL;");

$installer->run("ALTER TABLE  sales_flat_quote ADD COLUMN barcode  VARCHAR(255) NOT NULL;");

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