使用Jinja标签获取子表值

Jinja 模板可用于引用 ERPNext 中任何 DocType 上的任意字段。只需在打印格式中调用 {{doc.field_name}} 即可实现,其中 ‘doc.name’ 是某个字段的变量名。

然而,这种方法不适用于 DocType 内部的子表。本文将帮助您遍历并显示任何 DocType 中子表的所有行。

前置条件

我们需要知道子表在对应 DocType 上的变量名。可以通过所需 DocType 的“自定义表单”部分查看。如下所示

我们还需要知道子表中需要引用的所有字段的变量名。可以通过对应子表的“自定义表单”部分获取,如下所示

方法 1. 在无序列表中显示子表的行

{% for row in doc.items %}

  • 项目代码: {{ row.get_formatted(“item_code”, doc) }}

数量: {{ row.get_formatted(“qty”, doc) }}

单价: {{ row.get_formatted(“rate”, doc) }}

金额: {{ row.get_formatted(“amount”, doc) }}

{% endfor %}

在打印格式上的输出如下所示

方法 2. 以表格形式显示子表的行

项目代码 数量 单价 金额
{{item.item_code }} {{item.qty}} {{item.rate}} {{item.amount}}

在打印格式上的输出如下所示

此模板可供参考。子表字段中的任何其他字段都可以通过修改 Jinja 模板以类似方式获取。

打印美元金额的“分”

对于未出现在“货币列表”文档类型中的货币:

您可以前往“货币列表”文档类型 –> 添加货币 –> 添加汇率 –> 启用该货币 –> 然后即可在任何需要的交易中添加该货币。

例如:

打印格式:

移除打印格式中的描述

问题:

我想从打印格式中移除描述,因为它占用了太多空间:

但是当我使用打印格式生成器这样做时,我同时也丢失了物料编码和名称。如何解决这个问题?

答案:

这是因为你在打印设置中启用了紧凑物料打印选项。

你可以禁用此选项,然后在打印格式生成器中取消勾选描述。这应该能解决你的问题。

自定义打印格式中的字段可见性

每笔交易都有一个标准打印格式。在标准格式中,默认只显示某些字段。如果用户希望在标准格式中显示特定字段,可以使用自定义表单工具进行定制。

假设在销售订单中,我们需要让“收货地址”字段在标准打印格式中可见。

步骤 1:前往自定义表单

首页 > 自定义 > 表单自定义 > 自定义表单

步骤 2:文档类型

根据我们的场景,将选择“销售订单”作为文档类型。

步骤 3:禁用打印隐藏

点击打开要在标准打印格式中显示的字段。禁用打印隐藏字段。

步骤 4:更新

更新自定义表单以保存更改。重新加载您的 ERPNext 账户,然后检查打印格式以确认。

在打印格式生成器中自定义表格

您可以通过以下导航路径自定义打印格式生成器中的“项目”列:

  1. 点击“设置”按钮,然后选择“自定义”,创建您的自定义打印格式。
  2. 为您正在创建的新自定义打印格式添加一个相关的名称。
  3. 进入新打印格式后,您可以点击“项目(表格)”字段中的“选择列”按钮。

打开表格后,您将看到打印格式标准模板中已有的列列表,如下所示:

您在此处选择的选项将显示在打印格式中。

选择您希望在为自定义打印格式创建的表格中保留的列。您可以根据需要调整列的宽度和顺序。

选择好您希望打印格式包含的列后,点击“更新”,并在对打印格式进行进一步修改后“保存”所做的更改。

刷新屏幕,然后选择新创建的打印格式。在本例中,它是“采购收货单”。

点击您新创建的打印格式后,更改将显示在项目表格中。

要查看标准打印格式与您刚刚创建的格式之间的区别,您只需点击现有的打印格式模板即可。

添加/移除打印格式字段

为了说明,我们以采购订单为例,该订单在打印格式中包含以下字段。这里,我想在“供应商名称”下添加“供应商联系人姓名”,并从项目表中移除“每单位重量”列。

步骤 1: 导航到您想要更改打印格式的文档的打印视图 -> 菜单 (…) -> 自定义

步骤 2: 按名称搜索字段,并将其添加到所需位置

使用相同的拖放方法也可以移除字段。

步骤 3: 要添加/移除文档子表中的字段:定位到该表 -> 选择列 -> 根据需要勾选/取消勾选。

结果: