In this blog, I would like to share with you the detailed procedure of adding a new section to the Admin Sales Invoice View in Magento, that can show a new section content custom example for my instruction.
Step 1: Setting up Module
First, we need to create a custom module.
Create a registration file:
your_magento_base/app/code/Magenest/CutomizeOrderInvoice/registration.php
<?php /** * Created by Magenest JSC. * Author: Linh Phung * Date: 16/06/2020 * Time: 9:40 */ use \Magento\Framework\Component\ComponentRegistrar; ComponentRegistrar::register(ComponentRegistrar::MODULE, 'Magenest_CutomizeOrderInvoice', __DIR__); Create file: your_magento_base/app/code/Magenest/CutomizeOrderInvoice/etc/module.xml <?xml version="1.0"?> <!-- /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Magenest_CutomizeOrderInvoice" setup_version="1.0.0"> <sequence> <module name="Magento_Sales"/> </sequence> </module> </config>
Step 2: Create layout and View
File layout
your_magento_base/app/code/Magenest/CutomizeOrderInvoice/view/adminhtml/layout/sales_order_invoice_view.xml
<?xml version="1.0"?> <!-- /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ --> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <body> <referenceContainer name="content"> <block class="Magento\Backend\Block\Template" name="magenest_sales_invoice_custom_section" before="sales_invoice_view" template="Magenest_CutomizeOrderInvoice::order/invoice/view/custom_section.phtml"> </block> </referenceContainer> </body> </page>
As in this file, the class=”Magento\Backend\Block\Template” is call file “custom_section.phtm” and show data in this file on display. The <referenceContainer property is to extend the layout in Magento.
File template
your_magento_base/app/code/Magenest/CutomizeOrderInvoice/view/adminhtml/templates/order/invoice/view/custom_section.phtml
<?php /** * Copyright © 2020 Magenest. All rights reserved. * See COPYING.txt for license details. * * NOTICE OF LICENSE * * @category Magenest * @package Magenest Module * @author linhpv@magenest.com */ ?> <section class="admin__page-section"> <div class="admin__page-section-title"> <span class="title"><?= $block->escapeHtml(__('Magenest Custom Section')) ?></span> </div> <div id="invoice_item_container" class="admin__page-section-content"> <div> <p><b>This my section :</b> section custom information</p> <strong>Copyright © by Magenest</strong> </div> </div> </section>
This template will show data on display.
Step 3: Install module & Result
Install module use command: php bin/magento setup:upgrade
You should flush Magento cache use command: php bin/magento cache:flush
And we go to Admin panel > Sales > Invoices. In the Invoices grid, click on the Insert Widget icon.
In the Invoices grid, click on the action View.
And finally, we have the result on Invoice View Page like this: