বিক্রয়_ফ্ল্যাট_র্ডারে কাস্টম ক্ষেত্রগুলি যুক্ত করা হচ্ছে


14

আমি মোটামুটি পরিমাণে গুগলিং, ট্রায়াল এবং ত্রুটি করছি কিন্তু সমস্যার সমাধান আমি পাই না।

  1. ক্ষেত্রগুলি এবং বিক্রয়_ অর্ডার_গ্রিডের ক্রম পরিবর্তন করার ক্ষমতা; এবং
  2. এই গ্রিডে দুটি কাস্টম ক্ষেত্র প্রদর্শনের ক্ষমতা (ফিল্টারযোগ্য)।

পূর্ববর্তী (পয়েন্ট 1) সমাধান করা হয়েছে, Mage_Adminhtml_Block_Widget_Gridআমার কাস্টম মডিউলটি প্রসারিত করে (আমি পর্যবেক্ষকদের সম্পর্কে জানি, তবুও অন্যান্য ইনস্টলড মডিউলগুলি তাদের পর্যবেক্ষকদের সাথে আমার পরিবর্তনগুলি ওভাররাইড করছে)।

নির্বিশেষে, পরবর্তীটি আমার বর্তমান সমস্যা, নীচে এমন দুটি পদ্ধতি যা আমাকে এখনও ব্যর্থ করেছে।

পদ্ধতি 1

<?php
/*  @var $this Mage_Sales_Model_Mysql4_Setup  */
$this->startSetup();
$connection = $this->getConnection();

/**
 * Create the payment method dropdown field, because this field _may_ be
 * used for searching we will create an index for it.
 */
$connection->addColumn(
    $this->getTable('sales/order_grid'),
    'x_payment_method',
    "ENUM('PayPal', 'SagePay') DEFAULT NULL"
);
$connection->addKey($this->getTable('sales/order_grid'), 'x_payment_type', 'x_payment_type');

/**
 * Create the order channel field to identify where the order was originally
 * generated from. Also add an index for this field for additional filtering.
 */
$connection->addColumn(
    $this->getTable('sales/order_grid'),
    'x_sale_channel',
    "ENUM('Amazon', 'Play', 'eBay', 'Website') NOT NULL DEFAULT 'Website'"
);
$connection->addKey($this->getTable('sales/order_grid'), 'x_sale_channel','x_sale_channel');

$this->endSetup();

পদ্ধতি 2

এই মুহুর্তে আমি একই articles টি নিবন্ধ পড়তে ক্লান্ত হয়ে পড়েছিলাম যা সাহায্য করেনি, তাই আমি এক ক্ষেত্রের কাজ করার চেষ্টা করেছি; আমি ম্যাজেন্টোতে ত্রুটিযুক্ত লগগুলিও পরীক্ষা করে দেখেছি "$ this-> getTable ()" ভুল ছিল, সুতরাং আমি এটিকে সরিয়ে দিয়েছি।

<?php
/*  @var $this Mage_Sales_Model_Mysql4_Setup  */
$this->startSetup();
$connection = $this->getConnection();

/**
 * Create the payment method dropdown field, because this field _may_ be
 * used for searching we will create an index for it.
 */
$this->addAttribute('sales_flat_order', 'x_test_option', array(
    'label' => 'X Test Option',
    'type' => 'varchar',
    'input' => 'select',
    'visible' => true,
    'required' => false,
    'position' => 1,
    'visible_on_front'  => false,
    'option' => array('value' => array('web', 'test 1', 'test 2')),
    'default' => array('web'),
));

$this->endSetup();

যা একটি প্রশ্ন জিজ্ঞাসা করে তোলে, একটি কলাম এবং একটি গুণাবলী মধ্যে পার্থক্য কি? আমার প্রাথমিক অনুমানটি হ'ল, একটি কলাম একটি বিদ্যমান কোর টেবিলের সাথে যুক্ত করা হবে যখন একটি বৈশিষ্ট্য EAV_ * টেবিলগুলিতে যুক্ত করা হয়েছে এবং যথাযথভাবে সম্পর্কিত।


যদিও এই টেবিলটি সমতল, এটির জন্য উত্সের মডেল EAV, অতএব এট্রিবিউটটি EAV কনফিগারেশনে লিখিত থাকতে হবে। বেশ কয়েকটি বিক্রয় সংস্থাগুলি ইএভি হিসাবে ব্যবহৃত হত তবে কার্য সম্পাদনের কারণে চ্যাপ্টা হয়ে গেছে।
বেনমার্কস

উত্তর:


11

আপনার অনুমানটি সঠিক।
কিন্তু জন্য sales_টেবিল তারা এক এবং একই।
প্রাথমিকভাবে বিক্রয় সংস্থাগুলি ছিল ইএভি। এগুলি ফ্ল্যাট টেবিলগুলিতে পরিবর্তিত হয়ে সংস্করণ 1.4.0.1 দিয়ে শুরু হয়েছে (আমার মনে হয়)। এবং পিছনের সামঞ্জস্যের জন্য উভয় পদ্ধতি রাখা হয়েছিল।
অন্য কোনও ফ্ল্যাট টেবিল সত্তার জন্য (সেমি পৃষ্ঠা, ব্লক, পোল) আপনি addAttributeকেবল ব্যবহার করতে পারবেন না addColumn, তবে বিক্রয়ের জন্য এটি উভয় উপায়েই কাজ করে।
যদি আপনি কোনও এক্সটেনশন করার পরিকল্পনা করেন যা ১.৪ এর আগে সংস্করণগুলির সাথে সামঞ্জস্যপূর্ণ হতে হবে তবে ব্যবহার করুন addAttribute, অন্যথায় আমি এর কোনও অর্থ দেখতে পাচ্ছি না।


আমি এটিকে সত্যই সহায়ক বলে মনে করি তার জন্য ধন্যবাদ Thanks আসলে, এখন এটি সম্পর্কে চিন্তাভাবনা করে, আমি মনে করি সঠিক addColumnপদ্ধতিটি পদ্ধতিটি ব্যবহার করা ? সেলস_ফ্ল্যাট_র্ডার হিসাবে 'গেট টেবিল' ব্যবহার না করা অবস্থায়ও। আমি খুব শীঘ্রই এটি চেষ্টা করব, এবং একটি বিড়ম্বনা দিয়ে ফিরে আসব :)
ছাই

2
দেখা যাচ্ছে যে আমার দুটি সমস্যা ছিল (একটি আমি উপেক্ষা করেছি); একটি $this->getTable('sales/flat_order')পাশাপাশি সেট করা যেতে পারে sales_flat_order; দ্বিতীয়টি ছিল $connection->addKey($this->getTable('sales/order_grid'), 'x_payment_type', 'x_payment_type');; x_payment_typeকরা উচিত ছিল x_payment_method
ছাই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.