您发送给客户的文档承载着您的品牌和形象,必须根据您的需求进行定制。ERPNext 为您提供了多种选项,以便您可以在文档中设置组织的品牌标识。
ERPNext 还允许您使用原始打印功能打印条形码标签、POS 收据,并向打印机发送其他原始命令。
主题
- 打印设置
- 打印格式生成器
- 打印样式
- 打印标题
- 信笺抬头
- 地址模板
- 条款与条件
- 支票打印模板
- 自定义翻译
- 原始打印
您发送给客户的文档承载着您的品牌和形象,必须根据您的需求进行定制。ERPNext 为您提供了多种选项,以便您可以在文档中设置组织的品牌标识。
ERPNext 还允许您使用原始打印功能打印条形码标签、POS 收据,并向打印机发送其他原始命令。
“打印样式”帮助您定义自定义 CSS 样式,这些样式可应用于打印格式。
ERPNext 自带用于打印文档的预设样式。您也可以使用 CSS 创建新样式,并将其应用于所有打印格式。
ERPNext 中的标准打印样式包括:单色、现代、重新设计和经典。
要创建新的打印样式,请前往:
首页 > 设置 > 打印样式
您在此处创建的样式将同时应用于标准打印格式和自定义打印格式。要了解可用的各种 CSS 类,您可以创建一个标准打印格式,在新页面中打开并查看源代码。
默认打印样式可以在打印设置中进行设置。
所有打印格式样式均基于 Bootstrap(版本 3)CSS 框架。
如果您已启用开发者模式并勾选“标准”,系统将为该打印样式生成 JSON 文件。您可以通过此方式贡献一个默认打印样式。
在打印设置中,您可以配置打印偏好,例如纸张大小、默认文本大小、是否输出为 PDF 或 HTML 等。
由于 ERPNext 是基于浏览器的应用程序,实际的打印命令由您使用的浏览器执行。
要编辑打印设置,请前往:
首页 > 设置 > 打印设置
打印设置中有多种配置选项。让我们来了解一下它们。
当您从 ERPNext 通过电子邮件发送任何文档(如销售订单/发票)时,它会以 PDF 或 HTML 格式发送。默认情况下,文件以 PDF 格式发送。如果您希望以 HTML 格式发送文档,只需取消勾选“以 PDF 格式发送打印件”选项。
信笺是一个主数据,您可以在其中定义标准的页眉和页脚,这些内容会附加到文档的打印格式中。如果启用此属性,则每页都会添加页眉和页脚。如果您不希望每页重复页眉和页脚,只需禁用此设置。
打印 PDF 页面的默认大小为 A4,您可以从此处定义的选项中选择任何大小,包括以毫米为单位的自定义尺寸。
启用此属性后,在打印文档时将自动勾选“信笺”选项。请注意,您需要将信笺设置为默认值,或在交易中选择一个信笺,它才会出现在打印视图中。
像销售订单/发票这样的交易有一个详细列出购买或销售项目的表格。它包含多个列,如项目名称、描述、计量单位、单价、金额等。如果项目表中有很多列,打印格式会显得有些杂乱。您可以通过启用“紧凑项目打印”来改善表格的显示效果。
根据此设置,打印格式中将只有四列,分别是:描述、数量、单价和金额。
其他列的值(如名称、描述、图片、序列号等)会合并到“描述”列中。
当复选框未勾选时,打印格式如下所示:
这是紧凑打印格式的样子:
文档(主要是交易)有两个认证阶段:保存和提交。已保存的文档是初稿,尚未提交到系统。因此,在此阶段打印文档是受限的。但是,如果您希望允许用户也可以在草稿阶段打印文档,请启用此复选框。
启用此设置后,打印格式中也会打印“草稿”,从而表明共享的文档尚未完全认证。
如果某个项目的描述占用了超过一页的通常空间,启用此设置会将项目的详细信息拆分到下一页。因此,会在项目描述之间插入分页符,其余详细信息将被推到下一页。
已取消的交易是对报表没有任何影响的交易。如果您希望允许打印已取消的交易,请启用此设置。交易只有在提交后才能被取消。
在销售和采购交易中,您可以为项目添加多种税费。默认情况下,在打印格式中,只有计算了金额的税费是可见的。如果您还希望打印未应用且税率为零的税费,请启用此设置。
您可以通过填写打印服务器的 IP 和端口来启用打印服务器。然后选择默认打印机。
在启用此功能之前,您必须安装 pycups 库。
如果您的系统上尚未安装 cups 库,您可能需要先安装它。
对于 Debian 操作系统系列:
sudo apt-get install libcups2-dev
对于 Red Hat 操作系统系列:
sudo yum install cups-libs
之后,在环境中使用以下命令安装 pycups:
./env/bin/pip install pycups
此命令从 frappe-bench 目录执行。
您可以启用原始打印并打印到许多支持的热敏打印机。阅读原始打印以了解更多信息。
打印格式构建器可帮助您通过拖放数据字段并添加自定义文本或 HTML,快速制作简单的自定义打印格式。
默认会创建“标准”打印格式,该格式无法编辑。
要访问打印格式构建器,请前往:
首页 > 设置 > 打印格式构建器
或者通过文档访问。
###1.1 通过菜单导航
前往打印格式构建器。
在此,您可以编辑现有的打印格式,或为项目、报价单等文档类型创建新的打印格式。
在本节中,我们来看看如何编辑现有的打印格式。要了解如何创建新的打印格式,请参阅下一节。
选择要编辑的打印格式。
点击编辑按钮,您将进入打印格式构建器界面。
在此,您可以将字段从侧边栏拖放到页面,反之亦然。
完成更改后,点击保存。
要添加字段,只需将其从左侧侧边栏拖出并放入您的布局中。您可以通过点击设置图标来编辑部分或单个字段的布局。
要移除字段,只需将其拖回字段侧边栏即可。
保存。
您可以在打印格式中添加自定义文本、HTML,只需拖放自定义 HTML 字段(深色显示)并将其添加到您想要放置自定义 HTML 内容的位置。
然后点击编辑 HTML 来编辑您的内容。
通过打印格式,您可以设置文档类型在打印时的外观。
每笔交易都有一个名为“标准”的默认打印格式。您可以通过以下方式更改打印格式:
要访问打印格式,请前往:
首页 > 设置 > 打印格式
在样式设置下,有更改样式选项的选项。通过这些选项,您可以更改字体、将标签统一左对齐或右对齐、为各部分添加标题等。
要使用自定义 Jinja/JS 设置打印格式样式,请点击自定义格式。如果您选择此选项,将出现一个用于原始打印的复选框。要了解更多关于原始打印的信息,请点击此处。
如果启用了开发者模式,您可以将“标准”设置为“是”,以将打印格式作为系统中的一个标准(预设)打印格式贡献出来。
交易及其子表中的字段可以使用自定义表单来隐藏/显示。 例如,如果您想在打印报价单时隐藏“项目代码”,请点击打印图标进入打印界面。
前往菜单 > 自定义,在“输入表单类型”字段中选择报价单项目。
要了解更多信息,请访问自定义打印格式页面。
在字段表中,展开“项目代码”行,向下滚动并勾选“打印时隐藏”复选框。
新创建的打印格式可以在交易的打印界面上被选中。从那里您可以查看其外观并进行打印。
在 ERPNext 中,打印功能支持直接从系统生成与业务相关的所需文档。用户可以轻松创建和定制各种文档的模板,例如发票、采购订单、销售订单、工资单等。
用户可以根据公司的品牌指南,构建和维护各种打印格式,并包含符合业务需求的相关信息。
将此自定义脚本添加到项目的脚本中,以便在项目保存前
自动生成新的项目代码。
cur_frm.cscript.customvalidate = function (doc) {
// clear itemcode (name is from itemcode)
doc.itemcode = "";
// first 2 characters based on itemgroup
switch (doc.itemgroup) {
case "Test A":
doc.itemcode = "TA";
break;
case "Test B":
doc.itemcode = "TB";
break;
default:
doc.itemcode = "XX";
}
// add next 2 characters based on brand
switch (doc.brand) {
case "Brand A":
doc.itemcode += "BA";
break;
case "Brand B":
doc.itemcode += "BB";
break;
default:
doc.itemcode += "BX";
}
};
本文将通过三个步骤,帮助您在任何 DocType 上添加一个用于获取完整地址的自定义字段。
步骤 1:在所需 DocType 上进行外观自定义
首先,我们需要在 DocType 上添加两个新字段来获取地址:
a) 一个类型为“链接”的字段,指向我们的地址主数据
b) 一个类型为“只读”的字段,用于显示完整地址
请记下您创建的新字段的变量名。此信息将在后续步骤中用到。
有关在 DocType 上创建自定义字段的信息,您可以参考以下链接 – ERPNext 中的自定义字段
完成此步骤后,您应该在所选 DocType 上看到两个新字段,如下图所示:
步骤 2:添加客户端脚本以从地址主数据获取完整地址
在搜索栏中搜索“客户端脚本”,然后创建一个新的客户端脚本。选择需要获取地址的所需 DocType。
在脚本部分粘贴以下客户端脚本:
frappe.ui.form.on("DocType Name", "address_link_field", function(frm, cdt, cdn) { if(frm.doc.address_link_field){ return frm.call({ method: "frappe.contacts.doctype.address.address.get_address_display", args: { "address_dict": frm.doc.address_link_field }, callback: function(r) { if(r.message) frm.set_value("full_address_field", r.message); } }); } else{ frm.set_value("full_address_field", ""); }});
这里,我们需要根据您的使用场景替换以下内容:
a) 将“DocType 名称”替换为需要获取地址的 DocType 的名称。例如:销售发票、采购订单等。
b) 将“addresslinkfield”替换为我们在步骤 1 中创建的自定义链接字段的变量名
c) 将“fulladdressfield”替换为我们在步骤 1 中创建的自定义只读字段的变量名
完成此操作后,您将得到一个如下所示的客户端脚本:
步骤 3:保存、启用并测试客户端脚本
根据您的使用场景修改客户端脚本后,我们可以保存它,并通过勾选“已启用”复选框来启用它。
前往所需的 DocType 并刷新页面,以使更改生效。
现在,当在我们的自定义链接字段中选择一个地址时,完整地址将显示在我们的自定义只读字段中,如下图所示:
要在选择时提取链接的值,请使用 add_fetch 方法。
add_fetch(link_fieldname, source_fieldname, target_fieldname)
假设您在 客户 和 销售发票 中创建了一个自定义字段 增值税号 (vat_id),并希望确保在销售发票中选择客户时,该值能自动更新。
要配置此功能,请在销售发票的自定义脚本中添加以下代码行:
cur_frm.add_fetch(‘customer’,’vat_id’,’vat_id’)
步骤 1:为销售发票(父级)单据类型创建自定义脚本
步骤 2:脚本如下所示并保存
frappe.ui.form.on("Sales Invoice Item", "batch_no", function(frm, cdt, cdn) {
var d = locals[cdt][cdn];
frappe.db.get_value("Batch", {"name": d.batch_no}, "expiry_date", function(value) {
d.expiry_date = value.expiry_date;
});
});