ম্যাজেন্টো 2: কীভাবে কাস্টম মডিউলটিতে প্রোগ্রামের অর্ডার স্ট্যাটাস আপডেট করবেন?


11
$orderId = 1;
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$order = $objectManager->create('\Magento\Sales\Model\Order')->load($orderId); 
$order->setState("processing")->setStatus("processing");
$order->save();

দয়া করে বলুন আমি কীভাবে ম্যাজেন্টো 2 এ অর্ডার স্থিতি আপডেট করব?

উত্তর:


19

আপনি নিম্নলিখিত উপায় মত এটি করতে পারেন

নেমস্পেসের নীচে ঘোষণা করুন

use Magento\Sales\Model\Order;

$orderId = 1;
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$order = $objectManager->create('\Magento\Sales\Model\Order') ->load($orderId);
$orderState = Order::STATE_PROCESSING;
$order->setState($orderState)->setStatus(Order::STATE_PROCESSING);
$order->save();

আশাকরি এটা সাহায্য করবে


উত্তর @Dhaval Drcsystems জন্য ধন্যবাদ আমি শুধু আপডেট অর্ডারের অবস্থা চান
রাহুল Katoch

আপনি এই মডেলটি উল্লেখ করতে পারেন যাতে আপনি আরও ভাল ধারণা পাবেন Magento \ বিক্রয় \ মডেল \ আদেশ \ অর্থ প্রদান কোডের সাথে তারা কীভাবে অর্ডার প্রক্রিয়াকরণ করছে তা এখানে পরীক্ষা করে দেখুন।
ধাওয়াল সোলঙ্কি

উপরের কোডটি দেখায় \ ম্যাজেন্টো les বিক্রয় \ মডেল \ অর্ডার ত্রুটিটি পাওয়া যায় নি
জয়সা

আপনি কি আমাকে আপনার ফাইলটি দেখাতে পারেন?
ধাওয়াল সোলঙ্কি

কীভাবে কাস্টম অর্ডার স্থিতি আপডেট করবেন? আমার যদি 'সেন্ড_ টো_প্রিন্ট' নামক স্ট্যাটাস থাকে?
জাফর পিনজার

12

অর্ডার অবস্থা আপডেট

এই বিন্যাসে স্থিতি এবং রাজ্যকে সংজ্ঞায়িত করতে অর্ডার অবস্থা এবং অবস্থান-ব্যাকরণগতভাবে স্থিতি আপডেট করতে। কন্সট্রাক্ট ফাংশনে অর্ডার অবজেক্টটি সূচনা করুন এবং আপডেট করার জন্য কাস্টম ফাংশনে সেই অর্ডার অবজেক্টটি ব্যবহার করুন। মডেলটিতে প্রোগ্রামের অর্ডারের অর্ডার আপডেট করতে, কনস্ট্রাক্ট ফাংশন থেকে অর্ডার অবজেক্টটি পান।

public function __construct(
    \Magento\Sales\Model\Order $order
){
    $this->order = $order;
}
public function updateorder(){
    $order = $this->order;
    $order->setState(\Magento\Sales\Model\Order::STATE_PROCESSING, true);
    $order->setStatus(\Magento\Sales\Model\Order::STATE_PROCESSING);
    $order->addStatusToHistory($order->getStatus(), 'Order processed successfully with reference');
    $order->save();
}

নতুন অর্ডার ইমেল

$orderid = '10000000';
$order = $this->_objectManager->get('Magento\Sales\Model\Order')->loadByIncrementId($orderid);
$this->_objectManager->get('Magento\Sales\Model\Order\Email\Sender\OrderSender')->send($order);

@ ক্যালিপসো জবাবের জন্য দুর্দান্ত ধন্যবাদ তবে আমি কেবল অর্ডার স্থিতি আপডেট করতে চাই
রাহুল কাতোচ

@ রাহুলোকোডেওয়ায়ার এটিও মন্তব্য করেছে is
জেলানভিশাল

@ ক্যালিপসো দয়া করে ব্যাখ্যা করুন যে আমি এই কোডটি আমার মডিউলটিতে কোথায় রেখেছি
রাহুল কাটোচ

আমি কীভাবে নিয়ামক স্থগিত স্থিতি দেখায়?
রাহুল কাটোচ

5

যেহেতু লোড () এবং সংরক্ষণ () বর্তমানে অবচিত হয় (কারণ :)

* @deprecated 100.1.0 because entities must not be responsible for their own loading.
* Service contracts should persist entities. Use resource model "load" or collections to implement
* service contract model loading operations.

অর্ডার লোড করতে এবং সংরক্ষণ করতে আমি অর্ডারপোজিটরি ইন্টারফেস ব্যবহার করেছি :

use Magento\Sales\Api\OrderRepositoryInterface;

public function __construct(
    OrderRepositoryInterface $orderRepository,
    ...
) {
    $this->orderRepository = $orderRepository;
}

...
$order = $this->orderRepository->get($orderId);
$order->setState(\Magento\Sales\Model\Order::STATE_PAYMENT_REVIEW);
$order->setStatus(\Magento\Sales\Model\Order::STATE_PAYMENT_REVIEW);

try {
    $this->orderRepository->save($order);
} catch (\Exception $e) {
    $this->logger->error($e);
    $this->messageManager->addExceptionMessage($e, $e->getMessage());
}

আশা করি এটা সাহায্য করবে


কিভাবে কাস্টম অর্ডার স্থিতি আপডেট করবেন?
জাফর পিঞ্জার

3

@ মিডেমেক এবং @ প্রিন্স-প্যাটেল উত্তরের জন্য ধন্যবাদ। কাস্টম অর্ডার স্থিতি সম্পর্কিত @ জাফর-পিনজারের প্রশ্ন হিসাবে, সেটস্টেট এবং সেটস্ট্যাটাস কলগুলি স্থিতি কোড নিতে পারে। উদাহরণস্বরূপ, কাস্টম স্থিতি কোড "প্রদত্ত" তৈরি করা হয়েছে। কোনও আদেশে স্থিতি / অবস্থা আপডেট করতে:

...
use \Magento\Sales\Api\OrderRepositoryInterface;

class nameOfTheClass {
    ...
    protected $_orderRepository;
    ...
    public function __construct(..., OrderRepositoryInterface $orderRepository, ...){

        $this->_orderRepository = $orderRepository;
        ...
    }
    ...
    public function setOrderStatus($orderID, $statusCode){
        try{
            // obtain the order with the order ID
            $order = $this->_orderRepository->get($orderID);
            $order->setState($statusCode)->setStatus($statusCode);
            $this->_orderRepository->save($order);
            return true;
        } catch (\Exception $e){
            // add some logging here
            return false;
        }
    }
    ...
}

অর্ডার স্থিতি আপডেট করতে:

$orderID = 1234; // this is the order ID
$code = 'paid';
$this->setOrderStatus($orderID, $code);

আশা করি সেখানকার কাউকে সাহায্য করবে।


1
ক্রমবর্ধমান ID # 3000001469-1 মত, 1234. না 1234 বরং অর্ডার আইডি হল
Greck

এই টুইটটি গ্রিককে দেখানোর জন্য ধন্যবাদ। সাড়া আপডেট।
কিগোর

2

ম্যাজেন্টো ২.২.২ এটি কেবল নিম্নলিখিত পদ্ধতিতে কাজ করে!

    $order = $this->order->loadByIncrementId('000000001');
    //$order = $this->order;
    $order->setState(\Magento\Sales\Model\Order::STATE_PROCESSING, true)->save();
    $order->setStatus(\Magento\Sales\Model\Order::STATE_PROCESSING, true)->save();
    $order->addStatusToHistory($order->getStatus(), 'Order processed successfully with reference again and again');
    //$order->save();

তবে আমার একটাই সমস্যা হ'ল এটি সম্পূর্ণ স্থিতি আপডেট করে না: এখানে চিত্র বর্ণনা লিখুন

এটি কেবল গ্রিডে এবং অনুসরণগুলি আপডেট করে: এখানে চিত্র বর্ণনা লিখুন

এছাড়াও নতুন চালান, শিপিং এবং ক্রেডিট মেমো তৈরি করা সম্ভব নয়। ধন্যবাদ

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