Magento2 কাস্টম অর্ডার অ্যাট্রিবিউট যুক্ত করা


9

আমি কীভাবে একটি ম্যাজেন্টোতে অর্ডারে একটি কাস্টম বৈশিষ্ট্য যুক্ত করব। এটি পণ্য এবং গ্রাহকের পক্ষে পরিষ্কার মনে হলেও অর্ডারে অতিরিক্ত বৈশিষ্ট্য যুক্ত করার জন্য আমি কোনও তথ্য খুঁজে পাচ্ছি না।


আপনি কি সমাধান করেছেন? আমার একই সমস্যা আছে
ফিনিক্স 128_ রিকার্ডোটি

উত্তর:


4

আপনার নিজস্ব মডিউল তৈরি করুন এবং সেটআপ /InstallData.php

<?php



namespace Own\Module\Setup;

use Magento\Customer\Model\Customer;
use Magento\Framework\Encryption\Encryptor;
use Magento\Framework\Indexer\IndexerRegistry;
use Magento\Framework\Setup\UpgradeDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Eav\Setup\EavSetup;
use Magento\Eav\Setup\EavSetupFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Catalog\Setup\CategorySetupFactory;
use Magento\Quote\Setup\QuoteSetupFactory;
use Magento\Sales\Setup\SalesSetupFactory;

/**
 * @codeCoverageIgnore
 */
class InstallData implements InstallDataInterface
{
    /**
     * EAV setup factory
     *
     * @var EavSetupFactory
     */
    private $eavSetupFactory;

    /**
     * Category setup factory
     *
     * @var CategorySetupFactory
     */
    protected $categorySetupFactory;

    /**
     * Quote setup factory
     *
     * @var QuoteSetupFactory
     */
    protected $quoteSetupFactory;

    /**
     * Sales setup factory
     *
     * @var SalesSetupFactory
     */
    protected $salesSetupFactory;


    /**
     * Init
     *
     * @param CategorySetupFactory $categorySetupFactory
     * @param SalesSetupFactory $salesSetupFactory
     */
    public function __construct(
        SalesSetupFactory $salesSetupFactory
    ) {
        $this->salesSetupFactory = $salesSetupFactory;
    }

    /**
     * {@inheritdoc}
     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
     */
    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {

        /** @var \Magento\Sales\Setup\SalesSetup $salesSetup */
        $salesSetup = $this->salesSetupFactory->create(['setup' => $setup]);


        /**
         * Remove previous attributes
         */
        $attributes =       ['NEW_ATTRIBUTE'];
        foreach ($attributes as $attr_to_remove){
            $salesSetup->removeAttribute(\Magento\Sales\Model\Order::ENTITY,$attr_to_remove);

        }



        /**
         * Add 'NEW_ATTRIBUTE' attributes for order
         */
        $options = ['type' => 'varchar', 'visible' => false, 'required' => false];
        $salesSetup->addAttribute('order', 'NEW_ATTRIBUTE', $options);

    }
}

এছাড়াও আপনি আইটেমগুলিতে নতুন বৈশিষ্ট্য নির্ধারণ করতে একই কাঠামোটি ব্যবহার করতে পারেন। আপনার জন্য @ রিকার্ডোটি

সম্পাদনা করুন: কীভাবে নতুন বৈশিষ্ট্যগুলিতে মান সন্নিবেশ করান (আমি এটি আমার মডেল / অর্ডার.এফপিতে ব্যবহার করি যা ক্রোন কাজ):

use Magento\Directory\Model\Currency;
use Magento\Framework\Api\AttributeValueFactory;
use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Framework\Pricing\PriceCurrencyInterface;
use Magento\Sales\Api\Data\OrderInterface;
use Magento\Sales\Api\Data\OrderStatusHistoryInterface;
use Magento\Sales\Model\Order\Payment;
use Magento\Sales\Model\ResourceModel\Order\Address\Collection;
use Magento\Sales\Model\ResourceModel\Order\Creditmemo\Collection as CreditmemoCollection;
use Magento\Sales\Model\ResourceModel\Order\Invoice\Collection as InvoiceCollection;
use Magento\Sales\Model\ResourceModel\Order\Item\Collection as ImportCollection;
use Magento\Sales\Model\ResourceModel\Order\Payment\Collection as PaymentCollection;
use Magento\Sales\Model\ResourceModel\Order\Shipment\Collection as ShipmentCollection;
use Magento\Sales\Model\ResourceModel\Order\Shipment\Track\Collection as TrackCollection;
use Magento\Sales\Model\ResourceModel\Order\Status\History\Collection as HistoryCollection;

class Orders
{

    /**
     * @param \Magento\Sales\Model\Order $order
     */

    public function __construct(
        \Magento\Sales\Model\Order $order,
        \Psr\Log\LoggerInterface $loggerInterface,
        \Magento\Sales\Api\OrderRepositoryInterface $orderRepositoryInterface
    ) {

        $this->order = $order;
        $this->logger = $loggerInterface;
        $this->orderRepository = $orderRepositoryInterface;
    }

    public function execute(){

       $order = $this->order->loadByIncrementId($incrementId);
       $order->setNewAttribute('NEW VALUE');
       $order->save();
   }
}

এটি সাধারণভাবে কীভাবে কোনও অর্ডারে অ্যাক্সেস পাবেন এবং গুণাবলীকে মান নির্ধারণ করবেন।


এটি বৈশিষ্ট্যগুলি যুক্ত করা, তবে পরে আমি নতুন বৈশিষ্ট্যগুলিতে তথ্য সংরক্ষণের কোনও উপায় খুঁজে পাচ্ছি না, মনে হয় এটিগুলি ফিল্টার করে ফেলেছে।
ফিনিক্স 128_ রিকার্ডোটি

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