Whenever we do customize our store, there the situation comes when we add processing fee to the order.
and If we have added fee to the order then we must want that fee to be shown in mails as well,
So today we are going to learn , how to add processing fee to the order emails.
It is very simple, we just need to follow two steps :
Step 1 : In your module create a file named as sales_email_order_items.xml , in this location <Vendor>\<Module>\view\frontend\layout\sales_email_order_items.xml
<?xml version="1.0"?> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <body> <referenceBlock name="order_totals"> <block class="<Vendor>\<Module>\Block\Total\Processingfee" name="processing-fee"/> </referenceBlock> </body> </page>
Step 2 : This xml will add the block row in order email now lets create a block for the processing-fee ,
<?php namespace <Vendor>\<Module>\Block\Total; class Processingfee extends \Magento\Framework\View\Element\Template { /** * Tax configuration model * * @var \Magento\Tax\Model\Config */ protected $config; /** * @var Order */ protected $order; /** * @var \Magento\Framework\DataObject */ protected $source; /** * @param \Magento\Framework\View\Element\Template\Context $context * @param \Magento\Tax\Model\Config $taxConfig * @param array $data * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magento\Tax\Model\Config $taxConfig, array $data = [] ) { $this->config = $taxConfig; parent::__construct($context, $data); } /** * Get data (totals) source model * * @return \Magento\Framework\DataObject */ public function getSource() { return $this->source; } /** * @return Order */ public function getOrder() { return $this->order; } /** * Initialize all order totals relates with tax * * @return \Magento\Tax\Block\Sales\Order\Tax */ public function initTotals() { $parent = $this->getParentBlock(); $this->order = $parent->getOrder(); $this->source = $parent->getSource(); $store = $this->getStore(); $order = $this->order->load($this->order->getId()); $processingFee = $order->getData('processing_fee'); if ($processingFee) { $charges = new \Magento\Framework\DataObject( [ 'code' => 'processing_fee', 'strong' => false, 'value' => $processingFee, 'label' => __('Processing Fee'), ] ); $parent->addTotal($charges, 'processing_fee'); } return $this; } }
That’s it and we are ready to add the processing fee block in order email.
if you have any out then please add a comment in comment section below
Happy Coding .. 🙂
Thanks.