当前位置: 技术文章>> 如何以编程方式在Magento 2发票电子邮件中的发票总计中添加自定义字段?

文章标题:如何以编程方式在Magento 2发票电子邮件中的发票总计中添加自定义字段?
  • 文章分类: Magento
  • 22130 阅读
系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》

本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。


以编程方式在Magento 2发票电子邮件中的发票总计中添加自定义字段的步骤:

步骤1:第一步,您需要 在以下文件路径中创建sales_order_invoice.xml文件

app/code/Vendor/Extension/view/frontend/layout/sales_order_invoice.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="invoice_totals">
            <block class="Vendor\Extension\Block\CustomFieldinInvoice" name="invoice"/>
            <action method="setLabel">
                <argument name="label" xsi:type="string">Custom Field Name</argument>
            </action>
        </referenceBlock>
    </body>
</page>

步骤2:现在在 以下路径创建自定义字段发票.php文件

app/code/Vendor/Extension/Block/CustomFieldinInvoice.php

现在添加以下代码

<?php
 
namespace Vendor\Extension\Block;
use Magento\Framework\View\Element\Template;
 
class CustomFieldinInvoice extends Template
{
    public function __construct(
        Template\Context $context,
        array $data = []
    )
    {
        parent::__construct($context, $data);
        $this->setInitialFields();
    }
 
    public function setInitialFields()
    {
        if (!$this->getLabel())
        {
            $this->setLabel(__('Custom Field Name'));
        }
    }
 
    public function initTotals()
    {
        $this->getParentBlock()->addTotal(
            new \Magento\Framework\DataObject(
                [
                    'code' => 'customfield',
                    'strong' => $this->getStrong(),
                    'value' => $this->getOrder()->getCustom(), // extension attribute field
                    'base_value' => $this->getOrder()->getCustom(),
                    'label' => __($this->getLabel()),
                ]
            ),
            $this->getAfter()
        );
        return $this;
    }
 
    public function getOrder()
    {
        return $this->getParentBlock()->getOrder();
    }
 
    public function getSource()
    {
        return $this->getParentBlock()->getSource();
    }
}

结论:

因此,通过这种方式,您可以轻松地以编程方式在Magento 2发票电子邮件中的发票总计中添加自定义字段。


推荐文章