Hi,
I want to forward all order info with an email to the supplier by manually clicking a button in order page.
I want to forward order shipping info (name, address, phone) and ordered items list (with cost price) to a specific email address by clicking a button.
The email will be one of the email templates.
Just click and send an email with order info.
Thanks ...
Hello @seryum,
You have to customize functionality for it. Please follow the below steps to achieve this functionality
Create a plugin in Company/Module/etc/adminhtml/di.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="Magento\Backend\Block\Widget\Button\Toolbar"> <plugin name="MagePal_TestBed::pluginBefore" type="MagePal\TestBed\Plugin\PluginBefore" /> </type> </config>
Then in Plugin/PluginBefore.php
namespace MagePal\TestBed\Plugin; class PluginBefore { public function beforePushButtons( \Magento\Backend\Block\Widget\Button\Toolbar\Interceptor $subject, \Magento\Framework\View\Element\AbstractBlock $context, \Magento\Backend\Block\Widget\Button\ButtonList $buttonList ) { $this->_request = $context->getRequest(); if($this->_request->getFullActionName() == 'sales_order_view'){ $buttonList->add( 'mybutton', [ 'label' => __('My Button'), 'onclick' => 'setLocation(\'' . $this->getCustomUrl() . '\')', 'class' => 'reset' ], -1 ); } } public function getCustomUrl() { $email = 'john@doe.com'; $order = $this->_objectManager->create('Magento\Sales\Model\Order')->load(1); $order->setCustomerEmail($email); if ($order) { try { $this->_objectManager->create('\Magento\Sales\Model\OrderNotifier') ->notify($order); $this->messageManager->addSuccess(__('You sent the order email.')); } catch (\Magento\Framework\Exception\LocalizedException $e) { $this->messageManager->addError($e->getMessage()); } catch (\Exception $e) { $this->messageManager->addError(__('We can\'t send the email order right now.')); $this->_objectManager->create('Magento\Sales\Model\OrderNotifier')->critical($e); } } } }
In above file, if you didn't get $this->_objectManager value then please create construct function for it and you have to pass order id in getCustomUrl then you will get $this->getRequest()->getParam('order_id');
--
If my answer is useful, please Accept as Solution & give Kudos