We sacrifice by not doing any other technology, so that you get the best of Magento.

We sacrifice by not doing any other technology, so that you get the best of Magento.

    This functionality will be done by and event observer. And Event is “checkout_onepage_controller_success_action”.

    In this event you can get the current order data and you will be able to export this data in to csv.

    Step 1: For add the event you have to make a events.xml in your module and paste the below code into it.

    <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
        <event name="checkout_onepage_controller_success_action">
            <observer name="customorderexport" instance="MagemonkeysCustomexportObserverOrderexport" />
        </event>
    </config>

    Step 2: Now you have to create a Orderexport.php file in Observer folder and place the below code into it.

    <?php
    
    namespace MagemonkeysCustomexportObserver;
    
    use MagentoFrameworkEventObserverInterface;
    use MagentoFrameworkAppFilesystemDirectoryList;
    use MagentoFrameworkFilesystem;
    use MagentoFrameworkFilesystemDirectoryWriteInterface;
    use MagentoStoreModelScopeInterface;
    
    class Orderexport implements ObserverInterface
    {
    	protected $_request;
    	protected $_order;
    	protected $_productRepository;
    	protected $_scopeConfig;
    	protected $_customer;
    	protected $_storemanager;
    
    	public function __construct(
    	    MagentoFrameworkAppRequestInterface $request,
    	    MagentoSalesModelOrder $order,
         	MagentoFrameworkAppResponseHttpFileFactory $fileFactory,
    		Filesystem $filesystem,
            MagentoFrameworkAppConfigScopeConfigInterface $scopeConfig,
            MagentoCustomerModelCustomerFactory $customer,
        	MagentoStoreModelStoreManagerInterface $storemanager,
    		MagentoCatalogModelProductRepository $productRepository
    	) { 
    		$this->_scopeConfig = $scopeConfig;
    		$this->_customer = $customer;
    		$this->_storemanager = $storemanager;
    	    $this->_request = $request;
    	    $this->_order = $order;
    	   	$this->_fileFactory = $fileFactory;
            $this->directory = $filesystem->getDirectoryWrite(DirectoryList::VAR_DIR);
            $this->_productRepository = $productRepository;
     	}
    
    	public function execute(MagentoFrameworkEventObserver $observer) {
    		
    		$post = $this->_request->getPost();
    		
    		$orderids = $observer->getEvent()->getOrderIds();
    
    
    	  	foreach($orderids as $orderid){
    
            	$order = $this->_order->load($orderId);
    
    
            	$websiteID = $this->_storemanager->getStore()->getWebsiteId();
    			$customer = $this->_customer->create()->setWebsiteId($websiteID)->loadByEmail($order->getCustomerEmail());
            	$customerId = $customer->getId(); // using this 
            	$customerPoNumber = $customer->getCustomerNumber(); // using this 
    
    
    			$headers = array('Magento_Account_Number','Back_Office_Account_Number','Transaction_Date','Transaction_Time','Magento_Transaction_Number','Client_Reference_Number','Item_Number','Quantity_Sold','Selling_Price','Discount');
    
    			$name = strtotime("now");
    		    $file = 'customorderexport/'.$name.'_detailed_orderexport.csv';
    		    $this->directory->create('customorderexport');
    		    $stream = $this->directory->openFile($file, 'w+');
    		    $stream->lock();
    		    $stream->writeCsv($headers);
    		    
    	        
    
    	        $items = $order->getAllItems();
    			foreach ($items as $item) {
    				$orderdetail['Magento_Account_Number'] = $orderdata->getData('created_at');
    		        $orderdetail['Order_Number'] = $orderdata->getData('increment_id');
    		        $orderdetail['Transaction_Date'] = date('Y-m-d',strtotime($order->getCreatedAt()));
    		        $orderdetail['Transaction_Time'] = date('h:i A',strtotime($order->getCreatedAt()));
    		        $orderdetail['Magento_Transaction_Number'] = $order->getIncrementId();
    		        $orderdetail['Client_Reference_Number'] = $customerPoNumber;
    				$id = $item->getProdcutId();
    				$product = $this->_productRepository->getById($id);
    		        $orderdetail['Item_Number'] = $product->getAutoKoolNumber();
    		        $orderdetail['Quantity_Sold'] = $item->getQtyOrdered();
    		        $orderdetail['Selling_Price'] = $item->getPrice();
    	        	$orderdetail['Discount'] = $order->getDiscountAmount();
    	        	$stream->writeCsv($orderdetail);
    		    }
    
    		    $stream->unlock();
    		    $stream->close();
            }
    	}
    
    }
    ?>

    That’s it.

    Note- I have use the field and data as per my requirements. You will change this as per your requirements.

    field_5bfb909c5ccae

      Get a Free Quote