1

I am trying to save order details in a custom table with sales_order_place_after observer, but its not working.

    public function execute(\Magento\Framework\Event\Observer $observer)
    {

        $order = $observer->getEvent()->getOrder();        
        $order_id = $order->getIncrementId();   
        $customer_email = $order->getCustomerEmail();  

        //$writer = new \Zend\Log\Writer\Stream(BP . '/var/log/test.log');
        //$logger = new \Zend\Log\Logger();
        //$logger->addWriter($writer);

        foreach($order->getAllItems() as $item){
            $ProdustIds= $item->getProductId();
            $proName = $item->getName();  
            //$details = array($order_id,$customer_email,$ProdustIds,$proName); 
            //$logger->info($details);

             $model = $this->_objectManager->create('Conversion\Replenish\Model\Replenish');
            $model->setOrderId($order_id);
            $model->setProductId($ProdustIds);
            $model->setEmail($customer_email);
            $model->setPeriod($ProdustIds);
            $model->setNextDate('');
            $model->seCreatedDate('');
            $model->save();  
        }            
    }
}
Mohit Kumar Arora
  • 9,951
  • 7
  • 27
  • 55
Ramesh
  • 986
  • 1
  • 14
  • 38

2 Answers2

2

sales_order_place_after did not called every time.

So , my suggestion to use checkout_submit_all_after event which better than instead of sales_order_place_after.

Whenever, place() function of model class Magento\Sales\Model\Order then this event is fire.

And that place() function is call depends on Payment gateways code.

If payment gatewsy call this function then it will call.

But checkout_submit_all_after call every time whenever an order place.

Also try to use getAllVisibleItems instead of getAllItems()

Amit Bera
  • 77,456
  • 20
  • 123
  • 237
1

Instead of object manager you need to use below code:

protected $_replenish;

public function __construct(\Conversion\Replenish\Model\ReplenishFactory $replenish){
     $this->_replenish = $replenish;
}


public function execute(\Magento\Framework\Event\Observer $observer)
    {

        $order = $observer->getEvent()->getOrder();        
        $order_id = $order->getIncrementId();   
        $customer_email = $order->getCustomerEmail();  

        //$writer = new \Zend\Log\Writer\Stream(BP . '/var/log/test.log');
        //$logger = new \Zend\Log\Logger();
        //$logger->addWriter($writer);

        foreach($order->getAllItems() as $item){
            $ProdustIds= $item->getProductId();
            $proName = $item->getName();  
            //$details = array($order_id,$customer_email,$ProdustIds,$proName); 
            //$logger->info($details);

            $model = $this->_replenish->create();
            $model->setOrderId($order_id);
            $model->setProductId($ProdustIds);
            $model->setEmail($customer_email);
            $model->setPeriod($ProdustIds);
            $model->setNextDate('');
            $model->seCreatedDate('');
            $model->save();

        }     

    }
Mujahidh
  • 2,793
  • 4
  • 37
  • 82
Prashant Valanda
  • 12,659
  • 5
  • 42
  • 69