打印美元金额的“分”

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

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

例如:

打印格式:

移除打印格式中的描述

问题:

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

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

答案:

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

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

使用内联序列/批次编辑器

内联序列号/批次编辑器让您可以直接在库存单据的物料行上添加和管理序列号与批次——无需弹出单独的对话框。您可以在工作位置看到一个简洁的表格,所有条目在保存单据时一并保存。


如何启用

  1. 打开库存设置(在搜索栏中搜索“库存设置”)。
  2. 进入序列号与批次物料部分。
  3. 确保“使用序列号/批次字段”未被勾选。
  4. 勾选“使用内联序列号/批次编辑器”复选框。
  5. 点击保存

就这样——该功能现在已为网站上的所有人启用。(新安装时默认启用。)

提示:如果启用后未看到编辑器,请刷新一次浏览器页面。


在哪里看到它

打开以下任一单据,然后点击物料行展开。您会在行内找到序列号/批次条目表格(适用于有序列号或批次的物料):

  • 采购收货单和采购发票(包括拒收数量部分)
  • 销售发票、POS 发票和交货单(包括捆绑/包装物料)
  • 库存录入
  • 库存盘点
  • 分包收货单(物料和供应物料)
  • 拣货单
  • 资产资本化和资产维修

为什么使用它?(优势)

  • 一切尽在一处——直接在物料行上添加、编辑和删除序列号或批次。无需在弹出窗口间来回切换。
  • 更快速——您输入时更改会被收集,保存单据时一次性保存到系统,而不是每次更改都调用一次服务器。添加 20 个批次只需一次保存,而非 40 次单独更新。
  • 不会意外保存——在点击单据上的保存按钮之前,您的序列号/批次更改仅显示在屏幕上。一旦有任何更改,保存按钮会立即出现,因此您始终知道有未保存的工作。
  • 轻松处理大量列表——条目以每页 10 条的形式显示,并配有简单的导航按钮,即使有数百个序列号也能轻松浏览。
  • 自动创建缺失的序列号和批次——在入库单据(如采购收货单)上,如果您输入一个尚不存在的序列号或批次,系统会在保存时自动创建它。

如何使用

添加条目

  1. 点击物料行展开,找到序列号/批次条目表格。
  2. 点击添加行
  3. 从下拉列表中选择序列号/批次(或输入新值),然后输入数量。
  4. 根据需要重复添加条目,然后保存单据。

物料数量以及表格下方显示的“总数量”会随着您添加条目自动更新。

编辑条目

  • 直接点击表格中的序列号、批次号或数量单元格,输入新值——就像编辑电子表格单元格一样。

删除条目

  • 勾选一行或多行开头的复选框,然后点击删除行
  • 要清空所有内容,勾选表头中的复选框(全选),然后点击全部删除。如果删除所有条目并保存,关联的序列号和批次捆绑包也会被移除。

⋯(三点)菜单

在表格右下角,您会找到一个包含额外工具的菜单:

  • 自动获取序列号/批次号 (出库单据,如交货单)——输入所需数量,系统会根据库存设置中的选取序列号/批次依据规则(先进先出、后进先出或有效期)自动为您选取序列号/批次。它会替换表格中当前的内容,跳过已预留的库存,并为您保存单据。
  • 扫描序列号/扫描批次号——使用条码扫描器(或输入后按回车)逐个添加条目。再次扫描同一批次只会增加其数量。
  • 从范围创建序列号 (序列号物料)——输入类似 SN-01::10 的范围,一步添加 SN-01 到 SN-10。
  • 下载——将当前条目(或空白模板)下载为 CSV 文件。
  • 上传——填写 CSV 模板并上传,可一次加载大量条目。在入库单据上,缺失的序列号和批次会自动创建。

翻页

当条目超过 10 条时,使用表格底部的箭头翻页,或直接输入页码。您可以使用外侧箭头按钮直接跳转到第一页或最后一页。


须知事项

  • 编辑器仅在单据处于草稿状态时显示。提交后,条目会像往常一样被锁定。
  • 如果某物料行勾选了“使用序列号/批次字段”,则该行保留简单的文本字段,内联表格会对其隐藏。
  • 更喜欢旧的弹出对话框?在库存设置中取消勾选 “使用内联序列/批次编辑器”,即可恢复之前的行为。

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

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

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

步骤 1:前往自定义表单

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

步骤 2:文档类型

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

步骤 3:禁用打印隐藏

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

步骤 4:更新

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

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

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

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

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

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

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

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

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

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

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

添加/移除打印格式字段

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

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

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

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

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

结果:

打印格式中的自定义翻译

通过自定义翻译,用户可以用客户的本地语言打印客户和供应商的文档。

例如,如果您有来自德国和法国的客户,他们希望以德语和法语获取报价单,那么使用自定义翻译功能即可实现。

1. 设置语言

在客户主数据中,选择默认语言。例如,客户的默认语言是西班牙语

同样,您也可以在供应商主数据中设置默认语言。

1.1 以对方语言打印预览

在交易的打印预览中,数值将翻译成对方的语言。

以客户默认语言显示的客户报价单打印预览。

以供应商默认语言显示的供应商报价单打印预览。

1.2 在预览中更改打印语言

用户可以选择在打印视图中切换为其他语言。

2. 自定义翻译

用户可以使用自定义翻译表单设置自己的翻译。例如,如果用户希望将产品描述设置为客户的语言(西班牙语),则可以创建一个语言为西班牙语的新翻译,输入源数据和翻译后的信息。

首页 > 自定义 > 其他 > 自定义翻译 > 新建

当用户在供应商报价单的打印预览中选择西班牙语时,翻译便会生效。请注意,第二个项目的描述没有应用翻译,因为它在翻译列表中尚未创建。

  1. 地址模板
  2. 报价单
  3. 销售订单

自定义打印格式

打印格式是当您想要打印或通过电子邮件发送交易时生成的布局。

此功能适用于 ERPNext 中的所有交易,例如所有销售和采购交易、人力资源文档等。

在 ERPNext 中,有三种类型的打印格式,即标准打印格式、自定义打印格式和 HTML 打印格式。

标准打印格式

ERPNext 中的每个可打印文档类型都有其自己的标准打印格式,该格式由 Frappe 框架生成。标准打印格式中的字段位置取决于文档中相应字段的位置。

对标准打印格式所做的任何更改都必须通过自定义表单来完成。您还可以查看在打印格式中添加字段。

自定义打印格式

您还可以使用名为打印格式生成器的工具创建自己的自定义打印格式。此工具将帮助您通过拖放字段,按照您的偏好格式制作简单的自定义打印格式。

为了创建自定义打印格式,ERPNext 提供了几种预定义的模板,分为三种样式:现代、单色和经典。

要创建您的版本,请从以下位置打开现有模板:

构建 > 视图 > 打印格式

要编辑/更新您的打印和 PDF 设置,请前往:

设置 > 打印设置

HTML 打印格式

要创建 HTML 打印格式,您需要具备一些 HTML、CSS 和 Python 知识。以下是一个如何设计具有非常特定格式的打印格式的示例。

打印格式在服务器端使用 Jinja 模板语言提供。所有表单都可以访问 doc 对象,该对象包含有关正在格式化的文档的信息。您还可以通过 frappe 模块访问常用工具。在创建基于 HTML 的打印格式时,如需支持,您可以参考 ERPNext 社区论坛,或为您的查询发布新帖子。

对于样式,提供了 Bootstrap CSS 框架,您可以享受完整的类范围。

参考

  1. Jinja 模板语言:参考
  2. Bootstrap CSS 框架

示例

<h3>{{ doc.select_print_heading or "Invoice" }}</h3>
<div class="row">
    <div class="col-md-3 text-right">Customer Name</div>
    <div class="col-md-9">{{ doc.customer_name }}</div>
</div>
<div class="row">
    <div class="col-md-3 text-right">Date</div>
    <div class="col-md-9">{{ doc.get_formatted("invoice_date") }}</div>
</div>

        {%- for row in doc.items -%}

        {%- endfor -%}
    <table class="table table-bordered">
    <tbody>
        <tr>
            <th>Sr</th>
            <th>Item Name</th>
            <th>Description</th>
            <th class="text-right">Qty</th>
            <th class="text-right">Rate</th>
            <th class="text-right">Amount</th>
        </tr><tr>
            <td style="width: 3%;">{{ row.idx }}</td>
            <td style="width: 20%;">
                {{ row.item_name }}
                {% if row.item_code != row.item_name -%}
                <br>Item Code: {{ row.item_code}}
                {%- endif %}
            </td>
            <td style="width: 37%;">
                <div style="border: 0px;">{{ row.description }}</div>
            </td>
            <td style="width: 10%; text-align: right;">
                {{ row.qty }} {{ row.uom or row.stock_uom }}
            </td>
            <td style="width: 15%; text-align: right;">
                {{ row.get_formatted("rate", doc) }}
            </td>
            <td style="width: 15%; text-align: right;">
                {{ row.get_formatted("amount", doc) }}
            </td>
        </tr></tbody>
</table>

备注

  1. 要获取日期和货币格式化值,请使用 doc.get_formatted("fieldname")
  2. 对于可翻译字符串,请使用 {{ _("This string is translated") }}

原始打印

从版本 12 开始引入

直接以打印机原生语言向打印机发送一串命令,这被称为原始打印。

许多热敏打印机需要接收这些原始命令才能执行诸如条码打印、收据打印、标签打印等功能。原始打印在大多数情况下会绕过打印机驱动程序,因此速度非常快且可靠。原始打印还能实现一些高级功能,例如切纸、弹出钱箱等。

1. 在 ERPNext 中设置原始打印

1.1 在客户端计算机上安装 QZ Tray 应用程序

在连接热敏打印机的计算机上下载并安装 QZ Tray 应用程序。此应用程序可在其官方网站找到。目前,QZ Tray 支持 Windows、macOS 和 Linux。安装过程中,如果尚未安装 Java,系统会提示您安装,请安装 Java 以完成安装。

有关安装 QZ Tray 应用程序的更多说明,请参见此处。

1.2 创建原始命令打印格式

要能够向打印机发送原始命令,您需要首先创建一个使用原始命令的打印格式。与 HTML 自定义打印格式一样,原始命令中使用 Jinja 模板语言。

要为原始打印创建新的打印格式:

  1. 转到打印格式列表:首页 > 设置 > 打印 > 打印格式
  2. 点击新建。
  3. 选择相关的文档类型。
  4. 勾选自定义格式原始打印选项。
  5. 原始命令字段中填写要发送给打印机的所需原始命令。
  6. 点击保存。

目前,任何基于字符串的打印机语言都可以在打印格式的 Raw Commands 字段中使用。编写原始命令需要了解打印机厂商提供的打印机原生语言。请参考打印机厂商提供的开发手册,了解如何编写其原生命令。

1.3 在打印设置中启用原始打印

要启用原始打印:

  1. 转到:首页 > 设置 > 打印 > 打印设置 > 原始打印
  2. 勾选启用原始打印选项。
  3. 保存。

2. 在 ERPNext 中使用原始打印的方法

有两种方法可以将原始打印命令发送到您的打印机。

2.1 在打印预览页面点击打印

从文档打印预览页面打印原始命令打印格式:

  1. 选择适当的打印格式。对于使用原始命令的打印格式,打印预览位置会显示“无可用预览”消息。
  2. 点击打印按钮。
  3. 请允许 QZ Tray 针对您启动的操作弹出连接提示(键盘快捷键:Alt + A)。
  1. 系统可能会要求您选择“打印格式 – 打印机映射”。
  • 此映射用于将打印命令发送到相应的打印机。
  • 打印机需要安装在您的计算机上,才能将其映射到打印格式。
  • 此映射存储在本地计算机上,并且需要在每台客户端机器上进行设置。
  • 您也可以通过点击打印机设置按钮来编辑此映射。

2.2 从客户端脚本调用原始打印函数

通常需要在某个事件(如提交、保存、修订等)发生时发出打印命令。可以编写一个客户端脚本为您执行此操作。

以下是相关的原始打印函数:

  1. 函数:frappe.ui.form.qz_connect
  • 一个连接包装器,用于与 QZ Tray 应用程序建立连接。
  • 返回一个 promise,在成功建立连接时解决。
  • 允许活动和非活动连接无论如何都能解决。因此,每次发送命令前都可以调用它。
  • 使用示例:
 frappe.ui.form.qz_connect()
 .then(function () {
 return qz.print(config, data);
 })
 .then(frappe.ui.form.qz_success)
 .catch(err => {
 frappe.ui.form.qz_fail(err);
 });

这里,qz 是由 qz-tray.js 库提供的全局对象。

  1. 函数:frappe.ui.form.qz_get_printer_list
  • 提供 QZ Tray 应用程序可用的打印机列表。
  • 返回一个 promise,该 promise 解决为一个打印机列表。

使用示例:

 frappe.ui.form.qz_get_printer_list().then(
 // Required action on getting the printer list.
 // Note: Printer list is a array of strings.
 );
  1. 函数:frappe.ui.form.qz_success
  • 向用户显示“打印已发送到打印机!”的提示。可以在打印命令成功后调用。
  1. 函数:frappe.ui.form.qz_fail
  • 向用户显示错误消息。应在 QZ Tray 连接失败时调用。

您也可以通过 qz 对象直接访问 qz-tray.js 库提供的函数。点击此处查看 qz-tray.js 库文档。注意:qz 对象仅在首次调用 frappe.ui.form.qz_connect 后才初始化。如果您在此之前需要 qz 对象,可以使用 frappe.ui.form.qz_init

  1. 打印设置
  2. 打印格式
  3. 打印样式