Odoo 审批模块深度解析
一、审批模块概览
在任何一家企业的日常运营中,从一张请假单、一笔费用报销,到一份采购订单、一个销售折扣,都离不开“审批”这一核心环节。然而,传统的、基于纸张或邮件的审批流程,往往是效率低下、责任不清、风险丛生的温床。流程断点、信息孤岛、审批延迟、合规风险等问题,如同企业高速运转机器中的“锈蚀”,悄无声息地侵蚀着组织的效能与竞争力。
Odoo 18的推出,特别是其全新且高度整合的审批(Approvals)模块,不仅仅是一次功能上的迭代,更是一场管理哲学的革新。它旨在将企业内部纷繁复杂、散落在各个角落的审批需求,收归到一个统一、透明、高效的数字化平台之上。本报告将作为您的业务顾问,深入剖析Odoo 18审批模块的基本概念、设计哲学及其为企业带来的核心业务价值,并结合具体场景,为您揭示其如何成为驱动业务增长与管理升级的强大引擎。
核心概念与设计哲学:构建统一、灵活、智能的审批中心
1. 定义:什么是Odoo 18审批模块?
Odoo 18审批模块是一个企业级的、集中式的流程审批管理中心。它不再是一个孤立的功能,而是作为一个平台级的应用,深度集成于Odoo的各个业务模块(如采购、销售、人力资源、财务等)之中。其核心作用是,允许企业根据自身独特的管理制度和业务逻辑,自定义设计、部署、执行和监控各类审批流程。
从本质上讲,该模块将现实世界中的审批层级、规则和决策过程,精准地映射到数字世界中,实现了审批流程的端到端(End-to-End)电子化和自动化。
2. 设计哲学:从“分散”到“集中”,从“僵化”到“敏捷”
Odoo 18审批模块的设计,蕴含了深刻的管理思想,其哲学核心可概括为以下几点:
- 中央集权(Centralization):这是其最核心的设计理念。以往,采购单的审批逻辑在采购模块设置,员工假期的审批在HR模块定义,二者体验不一,管理分散。Odoo 18将所有审批类型(Approval Types)的配置和监控,全部收归于统一的审批模块中。这种“大一统”的设计,为管理者提供了全局视野,极大地降低了流程配置和维护的复杂性。
- 高度灵活性与可配置性(Flexibility & Configurability):Odoo深知“一刀切”的流程无法适应所有企业。因此,审批模块被设计得极具弹性。企业可以:
- 自定义审批类型:无论是“合同审批”、“IT设备申领”还是“市场活动预算审批”,任何业务流程皆可创建。
- 定义多级、动态的审批路径:支持按条件(如金额、部门、物料类别)触发不同的审批流。例如,5000元以下的采购单由部门经理审批,超过5000元的则需额外经过总监审批。
- 指定多样化的审批人:审批人可以是具体的某个员工、某个岗位角色(如“财务经理”),甚至是基于申请人关系的动态指定(如“申请人的直属上级”)。
- 用户体验至上(User-Centric Experience):对于普通员工(申请人)和管理者(审批人)而言,操作的便捷性至关重要。
- 统一的审批仪表盘:所有待我审批、我已提交的申请一目了然,避免了在不同模块间来回切换的烦恼。
- 及时的通知与提醒:通过系统内部通知、邮件等方式,确保审批请求能够被及时处理。
- 移动端支持:管理者可以随时随地通过手机或平板完成审批,打破了时间和空间的限制。
- 无缝集成与数据驱动(Seamless Integration & Data-Driven):审批流程并非孤立存在。Odoo 18审批模块与整个ERP系统血脉相连。当一个采购订单被批准后,系统可以自动更新订单状态、触发后续的财务凭证生成等。审批决策是基于系统内真实、实时的数据,而非模糊的信息。
核心业务价值:审批模块如何赋能企业发展
引入Odoo 18审批模块,企业获得的绝非仅仅是一个工具,而是一整套管理能力的提升。其核心业务价值体现在以下几个方面:
核心价值 | 解决的关键业务痛点 | 为企业带来的益处和竞争优势 |
流程标准化与执行力强化 | 流程不规范、口头协议、执行随意:不同的人处理同一事务,标准不一,导致管理混乱和不公。 | • 固化最佳实践:将最优的管理制度和业务流程以数字化的形式固定下来,确保全员遵照执行。<br>• 消除模糊地带:明确每个环节由谁负责、在什么条件下触发,减少推诿和扯皮。<br>• 提升组织执行力:确保公司的政令、规章能够不打折扣地贯彻到业务末端。 |
责任明确与可追溯性 | 审批责任不清、事后追责困难:“这个是谁批的?”、“为什么会批准?”等问题难以回答,审计困难。 | • 完整的审批链条:每一次提交、审批、拒绝、评论都有详细的记录,形成不可篡改的电子痕迹。<br>• 清晰的权责划分:谁在何时做了何种决策,一清二楚,为绩效评估和内部审计提供坚实依据。<br>• 强化合规性(Compliance):对于有严格合规要求的行业(如金融、医药),完善的审批记录是满足监管要求的关键。 |
运营效率的革命性提升 | 审批流程漫长、信息传递梗阻:纸质文件在不同办公室间“旅行”,邮件审批淹没在信息海洋中,严重拖慢业务节奏。 | • 审批自动化:系统自动根据预设规则流转,替代了大量手动跟进和提醒工作。<br>• 消除等待时间:审批请求实时送达,管理者可即时处理,业务流程无缝衔接。<br>• 降低沟通成本:所有相关信息和历史记录都在申请单中,无需反复沟通询问背景情况。 |
增强的决策质量与风险控制 | 审批人信息不足、决策拍脑袋:审批时缺乏足够的数据支持,仅凭经验或片面信息做决策,隐藏巨大风险。 | • 基于数据的决策:审批请求直接关联相关业务单据(如采购单详情、员工历史请假记录),让决策有据可依。<br>• 内置风控规则:通过设置审批条件(如超过预算、低于安全库存等),自动触发更高级别的审批,提前规避风险。<br>• 全局视野:管理者在审批中心可以看到所有类型的待办事项,能更好地从公司全局利益出发进行决策。 |
业务场景应用示例:让价值落地
理论的价值最终要通过实践来检验。以下是三个典型的业务场景,展示Odoo 18审批模块如何解决实际问题。
场景一:采购订单的多级审批(财务与库存双重控制)
- 背景痛点:一家制造企业,采购流程混乱。低价值的物料采购,流程繁琐;高价值的设备采购,却可能因审批不严谨而造成资金浪费或买错型号。财务部门希望控制预算,而仓库部门关心库存水平。
- Odoo 18解决方案:
- 创建“采购订单审批”类型。
- 设置审批规则:
- 规则1:如果订单总金额 < 5,000元,由申请人所在部门的经理审批。
- 规则2:如果订单总金额 ≥ 5,000元 且 < 50,000元,需要先由部门经理审批,再由财务部预算专员审批。
- 规则3:如果订单总金额 ≥ 50,000元,则在规则2的基础上,还需增加总经理的最终审批。
- 额外规则:如果采购的物料是“关键备件”且当前库存低于安全水平,无论金额大小,都必须抄送仓储经理。
- 应用价值:
- 效率与控制兼得:小额采购快速流转,大额采购得到严格控制。
- 跨部门协同:自动将审批请求流转至财务和仓储,实现了跨部门的协同决策。
- 风险防范:将预算控制和库存管理前置到审批环节,有效避免了超预算采购和生产缺料的风险。
场景二:销售折扣的灵活审批(加速销售成交)
- 背景痛点:一家快速消费品公司,销售人员为了促成交易,经常需要提供折扣。但折扣权限不明确,申请流程靠邮件或口头,经常因为等待审批而错失商机。
- Odoo 18解决方案:
- 创建“销售订单折扣审批”类型。
- 设置审批规则:
- 规则1:如果折扣率 ≤ 5%,销售人员无需审批,系统自动通过。
- 规则2:如果折扣率 > 5% 且 ≤ 15%,需要其直属销售经理审批。
- 规则3:如果折扣率 > 15%,需要先由销售经理审批,再由区域销售总监审批。
- 规则4:如果客户是“战略大客户”,折扣率超过10%的审批请求,需抄送副总裁。
- 应用价值:
- 为销售赋能:在授权范围内,销售可以快速响应客户,提升客户满意度和成交率。
- 利润保护:通过对超额折扣的严格审批,有效保护了公司的利润空间。
- 决策透明:管理层能清晰地看到折扣审批的分布情况,为后续调整销售策略提供数据支持。
场景三:人力资源流程审批(提升员工体验)
- 背景痛点:公司员工的请假、加班、报销等申请,依赖纸质表格,流程不透明。员工不知道自己的申请到哪个环节了,HR处理和统计工作量巨大。
- Odoo 18解决方案:
- 创建“员工请假审批”、“费用报销审批”等多种类型。
- 以“请假审批”为例设置规则:
- 规则1:请假 ≤ 1天,由申请人直属上级审批。
- 规则2:请假 > 1天 且 ≤ 3天,由直属上级审批后,自动通知HR部门备案。
- 规则3:请假 > 3天,需先由直属上级审批,再由部门负责人审批。
- 应用价值:
- 提升员工满意度:员工可以通过系统随时提交和追踪申请状态,体验更佳。
- 解放HR生产力:HR从繁琐的流程执行和统计工作中解放出来,可以更专注于战略性人力资源管理。
- 确保管理一致性:所有请假申请都遵循统一的规则,杜绝了“人情假”,保证了管理的公平公正。
对比与总结:为何选择Odoo 18审批模块?
- 对比Odoo早期版本/社区应用:Odoo 18之前的版本,审批功能分散在各个模块中,缺乏统一的管理界面和灵活的配置能力。社区虽有相关应用,但往往在集成性、稳定性和升级保障上存在短板。Odoo 18将其提升到官方核心模块的高度,意味着更强的稳定性、更好的集成度和持续的官方支持。
- 对比通用审批解决方案(如钉钉、飞书审批):通用审批工具虽然灵活,但其与核心业务数据(如ERP中的库存、财务数据)是脱节的。审批时,审批人需要跳出系统去查询相关信息。而Odoo 18审批模块的最大优势在于其原生集成性,审批流程是业务流程的有机组成部分,实现了**“业审一体化”**,决策数据实时、准确,审批结果能直接驱动后续业务环节。
总结:迈向智能、敏捷、合规的现代化企业
Odoo 18审批模块远不止是一个简单的“电子签名”工具,它更像是一个植入企业肌体的**“流程自动化引擎”和“风险控制阀门”。它通过集中化管理、高度灵活性和无缝集成**的设计哲学,精准地解决了企业在流程管理中普遍存在的标准化、责任、效率和合规性四大痛点。
对于不同规模的企业,其价值同样显著:
- 对于初创和中小型企业,它提供了一个低成本、高效率的方式来快速建立规范的管理体系,避免了“人治”带来的混乱,为未来的规模化扩张打下坚实基础。
- 对于大中型和集团型企业,它提供了一个强大的工具来统一和优化复杂的、跨部门、跨地域的审批流程,强化了总部的管控能力,确保了政策的统一执行和合规性。
最终,通过拥抱Odoo 18审批模块,企业能够将管理者从繁琐的日常审批事务中解放出来,专注于更高价值的战略决策;将宝贵的人力资源从流程的等待和梗阻中释放出来,投入到创新和增长之中。这不仅仅是效率的提升,更是企业治理能力和核心竞争力的一次深刻跃迁。
二、审批模块安装与初始配置
Odoo 18的审批(Approvals)模块提供了一个强大而集中的平台,用于管理企业内所有类型的审批请求。本指南专为初次接触此模块的技术人员或系统管理员设计,将提供清晰、详尽的步骤,帮助您完成从安装到基础配置的全过程,并确保系统的安全与高效运行。
1. 模块安装与激活
安装Odoo 18审批模块是一个直接的过程,但需要具备管理员权限。
步骤 1: 定位审批模块
- 以管理员账户登录您的Odoo 18环境。
- 从主仪表盘或左上角的应用菜单进入 应用 (Apps) 模块。
- 在搜索框中,移除默认的
Apps
筛选器(点击搜索框右侧的 "x"),然后输入Approvals
或中文审批
进行搜索。 - 您将看到名为 Approvals (技术名称:
approvals
) 的模块。
步骤 2: 安装模块
- 在 Approvals 模块卡片上,您会看到一个 安装 (Install) 或 激活 (Activate) 按钮。
- 点击该按钮。Odoo将自动处理所有依赖关系并完成安装。
- 安装完成后,页面会自动刷新。您将在Odoo主仪表盘上看到一个新的应用程序图标,名为 审批 (Approvals)。
2. 关键初始配置:权限是第一要务
模块安装后,切勿直接投入使用。首要任务是配置用户权限,以确保流程的合规性和安全性。错误的权限设置可能导致普通员工能审批他本不该看到的请求,或管理者无法看到下属的申请。
步骤 1: 理解审批模块的用户权限组
Odoo的审批模块主要创建了两个核心的权限级别:
权限组 | 描述 | 典型用户 |
User: Own Documents Only | 普通用户。此级别的用户只能: • 创建和提交自己的审批请求。 • 查看和追踪自己提交请求的状态。 • 不能看到他人的请求,也不能作为审批人进行审批。 | 全体员工 |
Administrator | 管理员/审批者。此级别的用户拥有完全权限,可以: • 创建、编辑和删除“审批类型”。 • 查看所有用户的审批请求。 • 作为审批人,批准或拒绝分配给他们的请求。 • 访问配置菜单和报告。 | 各级部门经理、总监、HR、财务等需要审批他人的管理者 |
步骤 2: 为用户分配权限
- 导航至 设置 (Settings) 模块。
- 在设置主界面,找到并点击 用户与公司 (Users & Companies) 菜单下的 用户 (Users)。
- 在用户列表中,选择一个需要配置权限的用户(例如,一位部门经理)。
- 进入该用户的表单视图,找到 访问权限 (Access Rights) 标签页。
- 向下滚动,找到 人力资源 / 审批 (Human Resources / Approvals) 或类似的分类。
- 在下拉菜单中,为该用户选择恰当的权限级别。
- 对于普通员工,选择
User: Own Documents Only
。 - 对于需要审批他人请求的经理,选择
Administrator
。
- 对于普通员工,选择
重点强调:
- 最小权限原则:始终遵循最小权限原则。不要为了方便而给予所有用户管理员权限。
- 新员工配置:将审批权限的设置,作为新员工入职IT配置流程的一部分。
- 系统管理员(
Administrator
)默认拥有所有权限,但实际业务中的审批者(如部门经理)也需要被授予Administrator
权限才能执行审批操作。
步骤 3: 访问基本设置菜单(可选)
对于审批模块的深度定制,例如修改审批相关的邮件模板或自动化动作,可以开启开发者模式进行访问。
- 在 设置 (Settings) 仪表盘,点击 激活开发者模式 (Activate the developer mode)。
- 激活后,在 审批 (Approvals) 模块中,您会看到一个 配置 (Configuration) 菜单。这里可以进行更深度的技术设置,但对于初始配置,通常不需要动这里。
3. 访问与使用:模块主界面导览
当权限配置完成后,用户即可开始使用。
- 返回主仪表盘,点击 审批 (Approvals) 应用图标。
- 您将进入审批模块的主界面,主要包含以下几个部分:
- 我的审批 (My Approvals)
- 我的请求 (My Requests): 一个看板视图,显示您自己提交的所有请求,按状态(草稿、已提交、已批准等)分类。
- 新建请求 (New Request): 点击后会展示所有可用的“审批类型”(例如:采购申请、请假申请),您可以选择一个来创建新的申请。
- 管理者 (Manager)
- 待审核的审批 (Approvals to Review): 这是审批者的核心工作区。所有需要您审批的请求都会出现在这里。
- 所有审批 (All Approvals): 查看您权限范围内的所有审批请求,无论其状态如何。
- 配置 (Configuration) (仅对管理员可见)
- 审批类型 (Approval Types): 这是最重要的配置项。在这里定义企业需要的所有审批流程,我们将在下一节演示如何创建一个新的类型。
- 我的审批 (My Approvals)
4. 演示:创建第一个审批类型
让我们创建一个简单的“办公用品申领”审批流程。
- 在 审批 模块中,导航到 配置 (Configuration) -> 审批类型 (Approval Types)。
- 点击 新建 (New) 按钮。
- 填写表单:
- 名称 (Name):
办公用品申领
- 描述 (Description):
用于申领价值在500元以下的办公用品。
- 审批人 (Approvers) (在下方的标签页):
- 点击 添加一行 (Add a line)。
- 审批人 (Approver): 在这里,您可以选择一个具体的 用户 (User) 或一个 用户组 (Group)。为增加灵活性,我们通常基于角色来设置。假设我们希望由申请人的直属上级审批。
- 要求 (Required): 勾选此项,表示该审批步骤是强制性的。
- 最小审批数量 (Minimum Number of Approvals): 设置为
1
,表示这个层级只要有1个人批准即可。
- 名称 (Name):
- 点击 保存 (Save)。
现在,任何有权访问审批模块的员工,在点击“新建请求”时,都能看到并使用“办公用品申领”这个新流程了。
5. 常见问题与排查建议 (Troubleshooting)
常见问题 | 可能原因 | 排查建议 |
用户在主仪表盘看不到“审批”应用图标 | 1. 用户未被授予任何审批权限组的访问权限。 2. 模块未正确安装或需要更新应用列表。 | 1. 检查权限: 前往 |
经理在“待审核的审批”中看不到下属提交的请求 | 1. 经理没有被授予审批模块的 2. 审批类型中的“审批人”未正确指向该经理。 3. 请求可能仍处于“草稿”状态,申请人并未点击“提交”。 | 1. 确认经理权限: 确保该经理在用户设置中拥有 |
用户点击“批准”按钮无反应或按钮为灰色 | 1. 该用户不在此审批步骤的指定审批人列表中。 2. 用户权限不足。 | 1. 核对审批人: 在请求单据的审批状态栏中,查看当前步骤需要谁来审批。<br>2. 检查权限: 确保操作者拥有审批模块的 |
审批相关的邮件通知未收到 | 1. Odoo的出站邮件服务器(Outgoing Mail Server)未正确配置。 2. 用户的邮箱地址不正确。 3. 相关的自动化邮件模板被禁用。 | 1. 检查邮件服务器: 前往 |
通过遵循本指南,您应能顺利地在Odoo 18中部署并成功启动审批模块,为企业的数字化流程管理打下坚实的第一步。
三、“审批类型”配置
作为Odoo系统配置员,您是企业流程数字化的架构师。在Odoo 18的审批模块中,“审批类型” (Approval Type) 是整个审批体系的基石。每一个审批流程,无论简单或复杂,都源于一个精确配置的“审批类型”。它定义了“谁”在“什么条件”下需要对“什么事情”进行审批。本指南将深入每一个配置细节,助您精准构建满足企业多样化需求的审批流程。
1. “审批类型”的核心地位与作用
在Odoo的审批世界里,“审批类型”扮演着**“流程模板”或“规则蓝图”**的核心角色。它的作用可以概括为以下三点:
- 定义“审什么”:明确审批的对象。是员工的“请假申请”,是财务的“差旅费报销”,还是采购部的“供应商资质审核”?每一种业务场景都对应一个审批类型。
- 定义“谁来审”:构建审批的权责链条。是直属上级一人足矣,还是需要部门总监、财务、甚至CEO层层把关?审批类型精确定义了审批路径上的每一位决策者。
- 定义“怎么审”:设定审批的规则和逻辑。审批是需要全员通过还是满足最少人数即可?在何种条件下可以自动批准以提升效率?审批过程中的通知如何发送?这些都由审批类型的配置决定。
因此,精通“审批类型”的创建与配置,是释放Odoo 18审批模块全部潜力的关键。
2. 如何创建新的“审批类型”:分步演示
让我们以一个常见的业务场景——**“员工请假审批”**为例,演示创建步骤。
- 导航入口:以管理员权限登录Odoo,进入 审批 (Approvals) 模块。
- 进入配置:点击左侧菜单栏的 配置 (Configuration) -> 审批类型 (Approval Types)。
- 创建新类型:点击页面左上角的 新建 (New) 按钮,进入审批类型配置表单。
3. 配置字段深度解析
创建审批类型的表单包含了多个字段,每个字段都对最终的流程有重要影响。下表将对核心字段进行详细解释。
关键配置字段汇总表
字段分类 | 字段名称 (技术名称) | 字段选项/类型 | 含义与作用详解 |
基本信息 | 名称 (Name) | 文本 | [必须] 审批流程的名称,将直接显示给用户。例如:“请假申请”、“差旅费报销”。应清晰易懂。 |
描述 (Description) | 文本 | 对此审批类型的详细说明。可以告知用户此流程的适用范围、注意事项或政策依据。例如:“适用于所有正式员工3天及以上的假期申请。” | |
自动化与集成 | 关联单据模型 (Document Model) | 模型选择 | [可选/高级] 将此审批类型与Odoo中其他的业务单据(模型)关联。例如,关联“采购订单”。这使得审批流程可以与特定业务单据紧密集成,但Odoo 18的通用审批模块设计上更倾向于独立,此项在自定义开发时更有用。 |
自动批准条件 (Automated approval) | Python代码 | [高级/自动化] 基于Python表达式设定自动批准的条件。当条件满足时,系统将跳过所有人工审批步骤,直接将请求置为“已批准”状态。这是提升效率的关键。 | |
审批人设置 | 审批人 (Approvers) - 列表 | [核心] 定义审批流程中的所有审批环节和审批人。这是一个可添加多行的列表,每一行代表一个审批“层级”或“节点”。 | |
| 审批人类型 (Type) | • 用户 (User)<br>• 用户组 (Group) | 指定具体的人或角色进行审批。<br>• 用户: 直接指定一个或多个员工作为审批人。适用于职责固定的审批环节(如“IT经理”)。<br>• 用户组: 指定一个Odoo的用户组(如“财务部”)。该组内的所有成员都会收到审批通知,任何人批准都可能使流程继续(取决于“最少审批人数”)。 |
| 审批人 (Approvers) | 关联用户/用户组 | 根据选择的“审批人类型”,在此字段中选择具体的用户或用户组。 |
| 要求 (Required) | 布尔 (勾选框) | [重要] 如果勾选,则此审批步骤为必经步骤。如果不勾选,则此步骤为可选步骤,申请人可以自行决定是否需要请求此人审批(例如,在提交前“征求意见”)。 |
| 最少审批人数 (Minimum Number of Approvals) | 整数 | 定义通过条件。设定此审批层级需要多少人批准后,流程才能进入下一环节或最终批准。例如,设置为 |
通知设置 | 通知顺序 (Notification Order) | • 同时通知 (Notify all at once)<br>• 逐个通知 (Notify in sequence) | 定义审批人收到通知的方式。<br>• 同时通知: 列表中的所有审批层级会同时收到审批请求通知。适用于并行的、无先后顺序的审批。<br>• 逐个通知: 严格按照列表中的顺序,只有前一个层级审批完成后,后一个层级的人才会收到通知。这是构建多级审批流程的关键。 |
4. 不同业务场景的配置实例
理论需要通过实例来巩固。下面提供两个具有代表性的配置案例,展示如何组合使用上述字段以满足不同需求。
实例一:简单的“加班申请”审批(单级、直属上级审批)
此场景旨在快速、高效地处理常规加班请求,审批责任明确到个人。
- 业务需求:员工提交加班申请后,只需其直属上级一人批准即可。
- 配置步骤:
- 名称:
加班申请
- 描述:
用于工作日或周末加班申请,需提前提交。
- 审批人 (Approvers) 列表:
- 只添加一行。
- 审批人类型: 选择 用户 (User)。
- 审批人: 此字段留空。因为直属上级是动态的,我们将在请求创建时通过自动化规则(或Odoo 18新特性)来指定。(在Odoo中,通常通过在审批请求模型上添加一个字段,并通过自动化动作在创建时自动填充申请人的
parent_id
(直属上级)来实现。) * 要求: 勾选 (必须审批)。 - 最少审批人数:
1
。
- 通知顺序:
逐个通知
(虽然只有一个层级,但这是良好实践)。
- 名称:
- 流程效果:员工A提交加班申请后,系统会自动将审批请求发送给其在Odoo中设置的直属经理B。经理B批准后,申请状态变为“已批准”。流程简单直接。
实例二:复杂“采购申请”审批(多级、条件分支、会签)
此场景模拟一个中型企业的采购流程,兼顾了成本控制、部门协同和风险管理。
- 业务需求:
- 所有采购申请,首先需要部门经理批准。
- 如果金额超过 5,000元,则还需要财务部进行预算审核(财务部内任何一位预算专员批准即可)。
- 如果金额超过 20,000元,在财务部批准后,还必须由 总经理 (CEO) 和 首席财务官 (CFO) 两人共同批准(会签)。
- 金额在 200元以下的办公用品采购,自动批准。
- 配置步骤:
- 名称:
通用采购申请
- 自动批准条件 (Automated approval):
- 名称:
# 假设请求模型中有'amount'和'category'字段
record.category == 'office_supplies' and record.amount < 200
-
- 通知顺序: 选择 逐个通知 (Notify in sequence),以保证审批的层级顺序。
- 审批人 (Approvers) 列表(按顺序添加):
- 第一行 (部门经理):
- 审批人类型:
用户 (User)
- 审批人: 留空(同样由自动化填充申请人的直属经理)
- 要求: 勾选
- 最少审批人数:
1
- 审批人类型:
- 第二行 (财务部):
- 审批人类型:
用户组 (Group)
- 审批人: 选择
财务部
用户组。 - 要求: 不勾选。我们通过审批流的逻辑控制,而非让用户选择。在Odoo 18中,更高级的控制可以通过
Studio
或自动化规则实现,当金额 > 5000时,将此审批置为必选。 - 最少审批人数:
1
(财务部或签)
- 审批人类型:
- 第三行 (高层会签):
- 审批人类型:
用户 (User)
- 审批人: 添加
总经理
和CFO
两位用户。 - 要求: 不勾选 (理由同上)。
- 最少审批人数:
2
(实现会签)
- 审批人类型:
- 第一行 (部门经理):
- 流程效果:
- 场景A: 员工申请购买150元的鼠标 -> 触发自动批准规则 -> 状态直接变为“已批准”。
- 场景B: 员工申请购买8,000元的显示器 -> 流程启动 -> 部门经理收到通知并批准 -> 财务部收到通知并批准 -> 流程结束,状态变为“已批准”。
- 场景C: 员工申请购买30,000元的服务器 -> 流程启动 -> 部门经理批准 -> 财务部批准 -> 总经理和CFO同时收到通知,两人都必须批准后 -> 流程结束,状态变为“已批准”。若其中一人拒绝,流程即终止。
结论
Odoo 18审批模块的强大,根植于其“审批类型”的高度可配置性。作为系统配置员,通过深刻理解并灵活运用审批人设置、通知顺序和自动批准条件等核心字段,您可以将现实世界中千变万化的管理规则,精准地转化为数字化、自动化、智能化的业务流程。这不仅能极大地提升企业运营效率,更能强化内部控制,为管理决策提供坚实的数据支撑。
四、构建高级审批流、层级与条件逻辑
作为业务流程分析师,您的核心价值在于将复杂的业务规则转化为清晰、高效、自动化的系统流程。Odoo 18的审批模块提供了一套极其灵活而强大的工具集,使您能够精确地构建多层级、多条件、甚至并行的审批工作流。其核心在于审批规则、审批层级以及背后由Domain表达式和Python代码驱动的条件逻辑。本指南将详细拆解这些高级功能,助您驾驭Odoo,将任何复杂的审批需求落地为现实。
1. 审批规则与审批流的核心作用
在Odoo 18中,一个“审批类型”内部的审批流,是通过一系列有序的审批规则 (Approval Rules) 来定义的。这些规则并非孤立存在,而是共同构成了一个完整的审批路径。其核心作用是:
- 定义流程路径 (Process Path):审批规则的顺序决定了审批的先后步骤,即“先由谁审,后由谁审”。
- 设定准入条件 (Entry Condition):每条规则都可以附带一个条件,只有当提交的申请满足该条件时,这条规则(及其指定的审批人)才会被激活。这使得动态、多分支的审批流成为可能。
- 分配审批责任 (Responsibility Assignment):每条规则都明确了在该步骤由谁(具体用户、角色组或动态指定的人)来进行审批。
通过组合这些规则,我们可以从简单的“一级审批”扩展到复杂的“N级审批”,并为每一级设置精细的触发条件。
2. 构建多层级审批流:序贯与并行模式
Odoo 18支持两种核心的审批模式,这两种模式的设定,决定了审批层级之间的协作方式。
A. 序贯审批 (Sequential Approval)
这是最常见的审批模式,审批请求按照预设的层级顺序逐级进行。只有前一级审批通过后,后一级审批人才能收到通知并进行处理。
配置方法:
在“审批类型”配置页的 审批人 (Approvers) 标签下,有一个关键字段:
- 通知顺序 (Notification Order): 选择
逐个通知 (Notify in sequence)
。
当选择此模式时,您在下方“审批人”列表中添加的规则顺序,将严格决定审批的流程顺序。
演示:定义一个三级审批流
假设我们要为一个“IT资产采购申请”定义三个审批层级:
- 第一步:进入 审批 (Approvals) -> 配置 (Configuration) -> 审批类型 (Approval Types),新建或编辑一个审批类型。
- 第二步:设置 通知顺序 为
逐个通知 (Notify in sequence)
。 - 第三步:在 审批人 (Approvers) 列表中,按顺序点击 添加一行 (Add a line) 添加三个层级:
- 层级1: 由“申请人直属经理”审批。
- 层级2: 由“IT部门主管”审批。
- 层级3: 由“财务总监”审批。
(示意图:审批人列表中按1, 2, 3顺序列出三个审批层级)
流程效果:申请提交后,只有当直属经理批准,IT部门主管才会收到审批通知。同理,只有IT主管批准后,财务总监才会介入。
B. 并行审批 (Parallel Approval)
在某些场景下,一个申请需要多个不同部门或角色的人同时进行审核,他们之间没有先后顺序。例如,一份产品营销方案可能需要销售总监和市场总监同时审阅。
配置方法:
- 通知顺序 (Notification Order): 选择
同时通知 (Notify all at once)
。
流程效果:当申请提交后,所有在“审批人”列表中定义的、且满足各自条件的审批人,将同时收到审批通知。整个申请的最终批准,取决于所有这些并行审批步骤是否都已完成(并满足各自的“最少审批人数”要求)。
3. 条件逻辑的引擎:Domain与Python表达式
这是Odoo审批模块最强大的功能所在。您几乎可以为每一个审批规则(层级)都设置触发条件。
A. Domain表达式:最直观的条件过滤器
Domain是一种在Odoo中广泛使用的、用于筛选数据的声明性语法。它由一个或多个三元组 ('字段名', '操作符', '值')
组成的列表构成。在审批规则中,它用于判断提交的申请是否满足特定条件,从而决定是否激活该审批步骤。
- 配置入口:在“审批人”列表的每一行,都有一个 适用领域 (Apply on) 字段。点击它可以打开Domain编辑器。
操作符 | 含义 | 示例 |
| 等于 | |
| 不等于 | |
| 大于 | 表示仅当申请的 |
| 小于 | |
| 大于等于 | |
| 小于等于 | |
| 在...之中 | |
| 模糊匹配 |
逻辑连接符:
- 默认情况下,多个三元组之间是“与”(
AND
)的关系。 - 可以使用
|
(或) 和&
(与) 来构建更复杂的逻辑。例如['|', ('amount', '>', 10000), ('is_urgent', '=', True)]
表示金额大于10000 或 标记为紧急的申请。
B. Python代码:终极灵活性的保障
当Domain无法满足极其复杂的逻辑判断时(例如需要比较不同字段的值、进行数学计算、或查询其他关联数据),可以直接使用Python代码。
- 配置入口:在审批类型的表单上,有一个 自动批准条件 (Automated approval) 字段。您可以在此编写Python表达式。如果表达式返回
True
,整个审批流程将被跳过,直接批准。 - 在规则中应用: 在更高级的自定义中(通常需要借助Odoo Studio或自定义开发),可以将Python逻辑嵌入到每个审批规则的条件判断中。
Python代码中可用的变量:
record
: 代表当前正在被评估的审批申请记录。您可以像操作Odoo对象一样访问它的所有字段,例如record.amount
或record.request_user_id.name
。user
: 代表当前登录的用户对象。
4. 高级审批流程配置案例
案例一:资本性支出申请(多级序贯与金额条件)
业务场景:一家公司对资本性支出(CapEx)有严格的财务审批阶梯。审批层级随申请金额的升高而增加。
- 配置步骤:
- 创建审批类型: 名称为
资本性支出申请 (CapEx)
。需要预先在该审批对象上创建自定义字段,如amount
(金额, 浮点型) 和asset_category_id
(资产类别, 多对一关联)。 - 设置通知顺序:
逐个通知 (Notify in sequence)
。 - 配置审批人列表:
- 规则1:部门经理审批 (所有申请)
- 审批人: 动态指定为申请人的直属经理(通常通过自动化动作或自定义代码实现)。
- 适用领域 (Domain): 留空 (表示此规则对所有
CapEx
申请都生效)。
- 规则2:财务总监审批 (金额 > 5,000)
- 审批人: 指定用户
财务总监
。 - 适用领域 (Domain):
[('amount', '>', 5000)]
- 审批人: 指定用户
- 规则3:CEO审批 (金额 > 20,000)
- 审批人: 指定用户
CEO
。 - 适用领域 (Domain):
[('amount', '>', 20000)]
- 审批人: 指定用户
- 规则4:董事会审批 (IT类资产且金额 > 100,000)
- 审批人: 指定用户组
董事会成员
。 - 最少审批人数:
2
(需要至少两位董事同意)。 - 适用领域 (Domain):
['&', ('asset_category_id.name', '=', 'IT Equipment'), ('amount', '>', 100000)]
- 审批人: 指定用户组
- 规则1:部门经理审批 (所有申请)
- 创建审批类型: 名称为
- 流程分析:
- 申请4,000元:只需部门经理批准。
- 申请15,000元:需部门经理批准 -> 然后财务总监批准。
- 申请50,000元的IT设备:需部门经理批准 -> 财务总监批准 -> CEO批准。
- 申请120,000元的IT设备:需部门经理批准 -> 财务总监批准 -> CEO批准 -> 最后由董事会至少两人批准。
案例二:销售合同特殊折扣审批(并行与复杂条件)
业务场景:销售团队为签下合同,有时需要提供超出标准范围的折扣。此折扣需同时获得销售管理和财务部门的批准,且审批规则因客户类型和折扣率而异。
- 配置步骤:
- 创建审批类型: 名称为
特殊折扣申请
。自定义字段包括partner_id
(客户),discount_rate
(折扣率),is_strategic_partner
(是否战略伙伴, 布尔型)。 - 设置通知顺序:
同时通知 (Notify all at once)
。 - 配置审批人列表:
- 规则1:销售总监审批
- 审批人: 指定用户
销售总监
。 - 适用领域 (Domain):
[('discount_rate', '>', 15)]
(折扣率大于15%时,此规则激活)。
- 审批人: 指定用户
- 规则2:财务风控审批
- 审批人: 指定用户组
财务风控
。 - 适用领域 (Domain):
['|', ('discount_rate', '>', 20), '&', ('is_strategic_partner', '=', False), ('discount_rate', '>', 10)]
- Domain逻辑解读: (折扣率大于20%) 或者 ((非战略伙伴) 并且 (折扣率大于10%))。
- 审批人: 指定用户组
- 规则1:销售总监审批
- 创建审批类型: 名称为
- 流程分析:
- 场景A: 为普通客户申请18%的折扣。
discount_rate > 15
为 True -> 激活规则1。is_strategic_partner
=False,discount_rate
>10 为 True -> 激活规则2。- 结果: 销售总监和财务风控将同时收到审批通知,两人都需批准。
- 场景B: 为战略伙伴申请18%的折扣。
discount_rate > 15
为 True -> 激活规则1。is_strategic_partner
=True, 第二个&
条件不满足;discount_rate > 20
为 False。|
两边都不满足 -> 规则2不激活。- 结果: 仅需销售总监一人批准。
- 场景A: 为普通客户申请18%的折扣。
结论
Odoo 18的审批模块通过将审批层级定义、序贯/并行模式切换以及基于Domain和Python的条件逻辑三者精妙结合,为业务流程分析师提供了一个几乎无所不能的流程构建平台。掌握这些高级配置技巧,意味着您不再受限于僵化的流程,而是可以随需而动,为企业设计出既符合严谨内控要求、又具备高度自动化和智能化的动态审批工作流,从而将管理意图无损地转化为系统行动。
五、审批流程用户操作指南
本指南将带您了解如何轻松地提交您的申请、处理分配给您的审批任务,并随时追踪申请的进展。无论您是需要提交申请的普通员工,还是需要审核他人申请的管理者,都能在这里找到清晰的操作步骤和实用技巧。让我们一起告别繁琐的纸质流程,拥抱高效的数字化工作方式!
第一部分:为普通用户 - 如何发起和追踪您的审批请求
作为申请人,您的主要工作是创建请求并了解其处理进度。
1. 创建并提交一个新的审批请求
当您需要申请(例如:请假、报销、物品申领等),请按照以下步骤操作:
- 进入审批模块:
- 登录您的Odoo账号,在主仪表盘上找到并点击名为 审批 (Approvals) 的应用程序图标。
- 选择审批类型:
- 进入模块后,点击页面左上角的 新建请求 (New Request) 按钮。
- 系统会弹出一个窗口,列出所有您可以发起的审批类型,如“员工请假申请”、“差旅费用报销”等。
- 选择您本次需要申请的类型,例如,我们选择 “差旅费用报销”。
- 填写申请信息:
- 系统会展现一个为您量身定制的申请表单。请仔细填写所有必填字段(通常有特殊颜色标记)。
- 描述 (Description): 清晰地填写本次申请的标题或摘要,例如“2025年6月北京出差费用报销”。
- 申请详情: 根据表单提示,填写具体信息,如“报销金额”、“出差事由”、“日期”等。
- 添加附件 (Attach a File): 这是非常重要的一步!点击表单右侧或下方的 附件 (Attachments) 按钮(通常是个回形针图标),上传所有相关证明材料,如发票照片、行程单扫描件等。您可以一次上传多个文件。
- 提交您的申请:
- 确认所有信息填写无误、附件上传完整后,点击页面左上角的 提交 (Submit) 按钮。
- 提交后,您的申请状态会从“草稿 (Draft)”变为“已提交 (Submitted)”,并自动进入审批流程。
2. 追踪您的审批状态
提交申请后,您一定想知道它到哪一步了。Odoo提供了非常直观的方式来追踪。
- 在主看板查看:
- 在 审批 (Approvals) 模块的主界面,您的所有请求会以卡片的形式显示在 我的请求 (My Requests) 看板中。
- 这些卡片会按照状态(如:已提交、已批准、已拒绝)分栏排列。您可以一目了然地看到每个申请的当前状态。
- 查看详细历史记录:
- 点击任意一个申请卡片,进入详情页面。
- 状态栏 (Status Bar): 页面右上角会有一个清晰的状态栏,用高亮颜色显示当前所处的阶段,例如
已提交
->部门经理审批
->已批准
。 - 沟通栏 (Chatter): 页面下方的区域被称为“沟通栏”,这是追踪历史的“神器”。这里记录了:
- 您何时提交了申请。
- 哪位审批人在何时批准或拒绝了您的申请。
- 审批人留下的所有意见或评论。
- 您也可以在这里 @提及 (at) 相关的同事或审批人,进行补充说明。
第二部分:为审批者 - 如何高效处理审批任务
作为管理者或指定审批人,您会收到他人的申请。及时处理这些任务是保证业务流程顺畅的关键。
1. 查看您的待审批任务
Odoo会通过多种方式提醒您有待处理的任务,确保您不会遗漏。
- 审批模块仪表盘: 进入 审批 (Approvals) 模块,在 管理者 (Manager) 区域下,有一个专门的看板叫做 待审核的审批 (Approvals to Review)。所有需要您处理的请求都会集中显示在这里。
- 右上角活动提醒: 在Odoo界面的任何地方,右上角的小图标(通常是一个时钟或对话泡泡)会显示一个数字,提示您有新的待办事项,点击后可以快速导航到待审批列表。
2. 执行审批操作
进入 待审核的审批 (Approvals to Review) 列表,点击一个请求卡片进入详情页。仔细审阅申请人提交的所有信息和附件后,您可以执行以下操作:
- 批准 (Approve):
- 如果您认为申请合理合规,点击页面左上角的绿色 批准 (Approve) 按钮。
- 您的批准操作和时间会被系统自动记录下来,流程将自动流转到下一个审批节点(如果有的话),或最终变为“已批准”状态。
- 拒绝 (Refuse):
- 如果申请不符合规定,点击红色的 拒绝 (Refuse) 按钮。
- 点击后,系统会弹出一个窗口,强烈建议您在此窗口中清晰地填写拒绝的原因。这将作为正式记录,并帮助申请人理解问题所在,以便他们修改后重新提交。
- 要求更多信息或沟通:
- 如果您在决策前需要申请人提供更多信息或进行澄清,请不要直接拒绝。
- 您应该使用页面下方的 沟通栏 (Chatter)。点击 发送消息 (Send message),输入您的问题,并使用
@
功能提及申请人。例如:“@张三 请补充本次出差的详细行程单。” - 申请人会收到通知并在此回复您。这保证了所有沟通都有据可查。
- 关于委派/转审:
- 在Odoo的标准审批流程中,审批人无法直接将一个待办任务“转”给另一个同事。这是为了保证审批流程的严肃性和既定规则。
- 如果您认为自己不是合适的审批人,最佳做法是 拒绝 该申请,并在理由中说明“请提交至正确的审批人XXX”。
- 如果您因休假等原因需要临时找人代理您的审批工作,请提前联系系统管理员为您设置假期代理。
第三部分:通用效率小技巧
无论您是申请人还是审批人,掌握以下技巧能让您使用起来更得心应手。
- 使用过滤器 (Filters):
- 在请求列表的上方,有一个 过滤器 (Filters) 按钮。您可以用它快速筛选出您想看的内容。例如:
- 点击
我的请求
可以只看自己提交的。 - 点击
已批准
可以只看所有已完成的申请。 - 您还可以创建自定义的筛选规则。
- 点击
- 在请求列表的上方,有一个 过滤器 (Filters) 按钮。您可以用它快速筛选出您想看的内容。例如:
- 使用分组 (Group By):
- 过滤器旁边的 分组 (Group By) 功能非常强大。您可以按“申请人”、“审批类型”、“状态”等对所有请求进行分类查看,便于进行统计和概览。例如,经理可以按“申请人”分组,快速查看每个下属的申请情况。
- 保存您的常用视图:
- 如果您经常使用某一套“过滤器”和“分组”的组合,可以点击页面上方的 收藏夹 (Favorites) 菜单,选择 保存当前搜索 (Save current search),并给它起一个名字。下次您只需在收藏夹里点击一下,就可以直接回到这个视图,无需重复设置。
- 利用好沟通栏进行协作:
- 沟通栏不仅是历史记录器,更是协作工具。善用
@提及
功能,可以让相关人员(即使不是审批人)也了解到申请的背景信息,实现透明高效的团队协作。
- 沟通栏不仅是历史记录器,更是协作工具。善用
六、审批模块通知与提醒系统
作为Odoo系统管理员,确保信息在正确的时间、以正确的方式、送达给正确的人,是保障业务流程自动化成功的核心。在Odoo 18的审批模块中,通知系统扮演着流程“血液循环系统”的角色,它驱动着请求的流转,提醒相关人员履行职责。一个配置精良的通知系统能显著提升审批效率,减少延误;反之,则可能导致流程中断和用户抱怨。本报告将全面、深入地剖析Odoo 18审批模块的通知与提醒机制,为您提供从配置到优化的完整实战指南。
1. 通知触发节点:系统在何时“发声”?
Odoo的审批模块在其生命周期的各个关键节点,设计了自动化的通知触发机制,以确保信息流的畅通。主要的触发节点包括:
- 新请求提交时: 当用户点击“提交”按钮,将申请从“草稿”状态变为“已提交”状态时。
- 通知对象: 第一个审批层级的审批人。
- 目的: 告知审批人有新的任务需要处理。
- 审批任务分配时: 在多级审批流程中,当前一级审批人批准后,流程流转至下一级时。
- 通知对象: 下一个审批层级的审批人。
- 目的: 同上,分配新的审批任务。
- 审批完成时 (最终批准): 当最后一个审批步骤完成,整个请求被最终批准时。
- 通知对象: 申请人。
- 目的: 告知申请人其请求已获批准,可以进行下一步操作。
- 审批被拒绝时: 任何一个审批层级的审批人点击“拒绝”按钮时。
- 通知对象: 申请人。
- 目的: 及时告知申请人请求被驳回,并附带拒绝理由,以便其修改或重新提交。
- 有新的沟通/评论时: 当任何人在审批请求的“沟通栏 (Chatter)”中发送消息或添加备注,特别是使用
@
提及某人时。- 通知对象: 被
@
提及的用户、请求的关注者 (Followers)。 - 目的: 促进围绕审批请求的协同沟通与信息补充。
- 通知对象: 被
2. 通知渠道与接收人配置
Odoo 18提供两种核心的通知渠道,并且其接收人配置逻辑清晰。
A. 可用的通知渠道
- Odoo内部消息 (Discussions/Inbox): 这是Odoo原生的即时通知方式。通知会出现在用户界面右上角的对话泡泡图标中,形成一个待办事项列表。这是最直接、最即时的通知方式。
- 邮件通知 (Email): 系统会自动将通知内容生成一封电子邮件,发送到用户的预设邮箱中。这对于不时刻在线但需要及时获取信息的管理者尤为重要。
B. 配置通知的接收人
通知的接收人主要由系统根据审批流程自动确定,但管理员可以进行一定程度的干预。
- 审批人: 由“审批类型”中定义的审批流决定,无需额外配置。
- 申请人: 由创建请求的用户决定,系统自动识别。
- 关注者 (Followers): 这是管理员可以手动干预的关键点。在任何一个审批请求的详情页面,下方沟通栏的右侧有一个“关注者”区域。
- 手动添加: 管理员或有权限的用户可以点击“添加关注者”按钮,将其他用户或用户组加入,他们将收到关于此请求的所有更新通知。
- 应用场景: 财务部门可能不直接参与某个采购审批,但希望自动关注所有金额超过5万元的采购请求,以便备案。这可以通过“自动化动作”实现。
C. 管理用户的通知偏好
Odoo赋予了每个用户管理自己通知偏好的能力,这是作为管理员需要告知用户的。
- 配置路径: 点击Odoo界面右上角的用户头像 -> 偏好设置 (Preferences)。
- 配置选项: 在“通知 (Notifications)”一栏,用户可以针对不同类型的Odoo应用(包括审批),选择接收通知的方式:
- 通过Odoo处理: 只接收内部消息。
- 通过电子邮件处理: 只接收邮件通知。
- 两者都处理: 同时接收内部消息和邮件(Odoo 18中简化了此逻辑,通常是邮件作为内部消息的补充)。
管理员须知: 如果用户反馈“收不到邮件通知”,除了检查Odoo的出站邮件服务器配置外,首先应检查该用户自己的偏好设置。
3. 审批任务的提醒与升级机制 (Escalation)
对于长时间未处理的审批任务,仅靠一次性的通知是不够的。我们需要建立提醒(甚至升级)机制来“推动”流程。Odoo 18的标准审批模块本身不带开箱即用的“超时提醒”按钮,但可以利用Odoo平台级的自动化工具——计划操作 (Scheduled Actions) 来完美实现。
配置示例:创建“审批任务超时提醒”
目标: 对于所有提交超过2个工作日仍未被处理的审批请求,每天上午9点自动向当前待审批人发送一封提醒邮件。
配置步骤:
- 激活开发者模式: 前往 设置 (Settings),点击页面底部的 激活开发者模式 (Activate the developer mode)。
- 导航至计划操作: 返回 设置 (Settings) -> 技术 (Technical) -> 自动化 (Automation) -> 计划操作 (Scheduled Actions)。
- 创建新的计划操作:
- 操作名称:
审批任务超时提醒
- 模型 (Model): 选择
approvals.request
(审批请求模型)。 - 执行方式 (Execute Every):
1
天 (Days)。 - 下一次执行日期 (Next Execution Date): 设置为明天的上午9点。
- 用户 (User): 选择一个有权访问所有审批单据的管理员用户,如
OdooBot
或系统管理员。 - 操作执行 (Action To Do): 选择
执行Python代码 (Execute Python Code)
。 - Python代码: 这是实现逻辑的核心。
- 操作名称:
from datetime import datetime, timedelta# 设置超时阈值为2天
time_threshold = datetime.now() - timedelta(days=2)# 查找所有处于“已提交”状态且超过2天未更新的审批请求
# 'write_date' 字段记录了最后一次修改时间,可以作为审批流转的参考
overdue_requests = env['approvals.request'].search([('state', '=', 'submitted'),('write_date', '<=', time_threshold.strftime('%Y-%m-%d %H:%M:%S'))
])for request in overdue_requests:# 找到当前需要审批的用户# 审批请求模型通常有一个字段记录当前待审批人,例如 `approver_ids` 或类似# 这里的 `current_approver_ids` 是一个假设字段,需要根据实际模型结构调整# 在Odoo 18中,这通常与 `request_owner_id` 或具体的审批线关联current_approvers = request.mapped('approver_ids').filtered(lambda a: a.status == 'pending').mapped('user_id')for approver in current_approvers:# 构建邮件内容subject = f"【审批提醒】您有一个待处理的申请:{request.name}"body = f"""<p>尊敬的 {approver.name},</p><p>这是一个自动提醒,以下审批请求已等待您处理超过2天,请尽快处理:</p><ul><li><strong>申请名称:</strong> {request.name}</li><li><strong>申请人:</strong> {request.user_id.name}</li><li><strong>提交时间:</strong> {request.create_date.strftime('%Y-%m-%d')}</li></ul><p>您可以点击下方链接直接访问该请求:</p><a href="{request.get_base_url()}/web#id={request.id}&model=approvals.request&view_type=form" style="padding: 8px 12px; background-color: #875A7B; color: #FFFFFF; text-decoration: none; border-radius: 5px;">立即处理</a><p>谢谢!</p>"""# 创建并发送邮件mail_values = {'subject': subject,'body_html': body,'email_to': approver.email,'email_from': env.user.company_id.email or env.user.email, # 使用公司邮箱或管理员邮箱'auto_delete': True, # 发送后自动删除邮件记录}env['mail.mail'].create(mail_values).send()
-
- 保存并激活: 保存该计划操作。它将按照设定的频率自动运行。
4. 通知模板的深度定制化
为了让通知更符合企业文化、包含更多上下文信息,管理员可以对Odoo的通知模板进行定制。
- 模板类型:
- 邮件模板 (Email Templates): 控制发送邮件的样式、内容和布局。
- 消息子类型 (Subtypes): 控制在沟通栏中显示的内部通知的默认文本。
- 配置路径: 激活开发者模式后,前往 设置 (Settings) -> 技术 (Technical) -> 邮件 (Email) -> 模板 (Templates)。
- 定制化示例:修改“审批已完成”的邮件通知
- 在邮件模板列表中,搜索与
Approvals
相关的模板。例如,找到一个名为Approvals: Request Approved
的模板。 - 点击进入编辑。您会看到:
- 主题 (Subject): 可以修改邮件标题。支持使用简单的Jinja2模板语言插入动态内容,如
您的申请 "${object.name}" 已被批准
。 - 内容 (Body): 这是一个富文本编辑器,您可以像编辑Word文档一样修改邮件正文。切换到HTML视图,可以进行更精细的布局和样式调整(例如加入公司Logo、页脚)。
- 动态占位符构建器 (Dynamic Placeholder Generator): 在右侧,您可以方便地选择模型字段(如
object.user_id.name
代表申请人姓名),系统会自动生成可用的占位符表达式,您可以将其复制到邮件主题或正文中。
- 主题 (Subject): 可以修改邮件标题。支持使用简单的Jinja2模板语言插入动态内容,如
- 在邮件模板列表中,搜索与
最佳实践: 在修改系统默认模板前,建议先点击 操作 (Action) -> 复制 (Duplicate),在副本上进行修改。这样可以避免因Odoo版本升级覆盖掉您的定制内容。
结论
Odoo 18的审批通知系统是一个强大而灵活的框架。作为系统管理员,您的工作不仅仅是启用它,更是要通过精细化的配置,使其真正服务于业务效率的提升。核心要点包括:
- 理解默认行为: 清晰掌握各节点默认的通知逻辑。
- 善用计划操作: 通过
Scheduled Actions
建立主动的、智能的提醒与升级机制,是变被动为主动的关键。 - 深度定制模板: 让每一封通知都体现企业专业形象,并为用户提供最充足的上下文信息。
- 引导用户自管理: 培训用户使用自己的“偏好设置”,减少不必要的支持请求。
通过上述配置与优化,您可以将Odoo 18的审批模块从一个单纯的“流程工具”转变为一个智能、高效、且用户体验友好的“流程协作平台”。
七、审批模块与其他Odoo应用的集成与协同
1. 导论:从“功能孤岛”到“流程中枢”的架构演进
在传统的ERP实施中,审批逻辑往往作为子功能“嵌入”在各个独立的业务模块之内。采购的审批规则在采购模块里设置,费用的审批在费用模块里定义——这种模式导致了配置分散、体验不一、流程僵化三大弊病,形成了“功能孤岛”。
Odoo 18的审批(Approvals)模块,其架构设计的核心思想,正是要打破这种孤岛格局。它不再是一个简单的功能,而是一个平台级的、可插拔的流程控制中枢。其设计哲学是将“业务单据的生命周期管理”与“流程决策的权责管理”进行解耦,通过标准化的接口和强大的自动化工具,赋能其他核心应用,实现真正意义上的跨模块统一审批流程。本报告将从解决方案架构师的视角,深入剖析其集成机制、技术实现与业务价值。
2. 核心集成点:哪些应用与审批模块“天生一对”?
Odoo 18中,几乎任何需要决策和控制的业务环节,都可以与审批模块集成。以下是最为典型和高频的集成应用:
核心应用 | 集成场景 | 业务痛点与控制目标 |
采购 (Purchase) | 采购订单审批 (Purchase Order Approval) | 控制采购成本,防止超预算、未经授权或不合理的采购行为。 |
费用 (Expense) | 费用报销审批 (Expense Report Approval) | 确保费用报销的合规性、真实性,执行公司差旅及费用政策。 |
人力资源 (HR) | 请假审批 (Leave/Time Off Approval) | 管理员工出勤,确保团队人力资源的合理调配与工作的连续性。 |
销售 (Sales) | 销售订单/报价单审批 (Sale Order/Quotation Approval) | 控制销售折扣,管理特殊销售条款(如信用期),保障公司利润与经营风险。 |
会计 (Accounting) | 供应商账单审批 (Vendor Bill Approval) | 在付款前对账单进行最终审核,防止错误支付或欺诈性支付。 |
3. 集成架构解析:工作流与数据交互的艺术
跨模块集成的本质,是一套精心设计的数据流、状态同步和用户交互的自动化流程。其典型的生命周期如下:
- 触发 (Trigger): 用户在源应用中执行一个关键动作(如:在采购模块中“确认订单”)。
- 实例化 (Instantiation): Odoo的自动化动作 (Automated Action) 被触发,它读取源单据(如采购订单)的数据。
- 创建审批请求 (Request Creation): 自动化动作调用审批模块的接口,创建一个新的、独立的审批请求(
approvals.request
对象),并将源单据的关键信息(如金额、供应商、申请人)复制到审批请求的字段中。同时,通过一个关联字段(如purchase_order_id
)将二者牢固地链接起来。 - 锁定源单据 (Record Locking): 为了保证数据一致性,在审批完成前,源单据通常会被锁定在一个“待审批”的状态(如采购订单的
To Approve
状态),防止用户在此期间进行修改。 - 执行审批流 (Approval Execution): 审批请求在其独立的审批模块中,按照预设的审批类型(包含多级、条件等复杂逻辑)进行流转。这是解耦的核心:复杂的审批逻辑被封装在审批模块内部,源模块无需关心。
- 状态反馈 (Status Feedback): 当审批请求最终被“批准”或“拒绝”时,会触发另一套自动化动作。
- 更新源单据 (Record Update): 该自动化动作会找到关联的源单据,并根据审批结果更新其状态。例如:
- 批准: 将采购订单状态从“待审批”更新为“采购订单”,并可能自动触发邮件发送给供应商。
- 拒绝: 将采购订单状态退回到“草稿”或“已取消”,并在其沟通栏(Chatter)中记录拒绝理由。
(示意图:采购订单 -> 自动化动作 -> 创建审批请求 -> 审批流 -> 自动化动作 -> 更新采购订单状态)
4. 技术实现与概念演示:为一个已有单据配置审批流
让我们以最经典的“为金额超过5000元的采购订单启用审批”为例,概念性地演示其配置过程。
步骤一:准备源单据(采购订单)
- 添加状态: 使用Odoo Studio或自定义代码,为采购订单(
purchase.order
模型)添加一个新的状态:to_approve
(待审批)。 - 修改工作流: 调整采购订单的状态机,使得“确认订单”按钮不再直接将状态从
Draft
变为Purchase Order
,而是变为to_approve
。
步骤二:创建对应的审批类型
- 在 审批 模块中,创建一个名为“大额采购订单审批”的审批类型,并配置其审批层级(例如,需部门经理和财务总监两级审批)。
- 在审批请求(
approvals.request
)模型上,使用Studio添加一个多对一(Many2one)关联字段,名为purchase_order_id
,关联到purchase.order
模型。
步骤三:配置自动化动作(核心)
我们需要创建两个自动化动作。
自动化动作1:创建审批请求
- 模型 (Model):
采购订单 (purchase.order)
- 触发条件 (Trigger):
当更新时 (On Update)
- 应用范围 (Apply on): 设置Domain表达式
[('state', '=', 'to_approve'), ('amount_total', '>', 5000)]
- 执行操作 (Action To Do): 选择
执行Python代码 (Execute Python Code)
。
# 为当前满足条件的采购订单创建审批请求
for po in records:# 防止重复创建existing_approval = env['approvals.request'].search([('purchase_order_id', '=', po.id)], limit=1)if not existing_approval:env['approvals.request'].create({'name': f"采购订单审批: {po.name}",'category_id': env.ref('your_module.approval_category_large_po').id, # 引用预设的审批类型ID'request_owner_id': po.user_id.id or env.user.id, # 申请人'purchase_order_id': po.id, # 建立关联# 将PO的其他关键信息复制到审批请求的自定义字段中'custom_amount_field': po.amount_total,'custom_partner_field': po.partner_id.id,})
自动化动作2:根据审批结果更新采购订单
这个动作需要反向配置,即在审批请求上配置。
- 模型 (Model):
审批请求 (approvals.request)
- 触发条件 (Trigger):
当更新时 (On Update)
- 应用范围 (Apply on):
['&', ('purchase_order_id', '!=', False), ('state', 'in', ['approved', 'refused'])]
- 执行操作 (Action To Do):
执行Python代码 (Execute Python Code)
。
for approval in records.filtered(lambda r: r.purchase_order_id):po = approval.purchase_order_idif approval.state == 'approved':# 批准:将PO状态推进po.with_context(skip_approval_check=True).button_approve() # 调用PO的批准方法po.message_post(body="采购订单已通过审批。")elif approval.state == 'refused':# 拒绝:将PO状态退回po.button_cancel() # 调用PO的取消方法# 在PO的chatter中记录拒绝理由refuse_reason = approval.action_get_attachment_data().get('reason', '未提供理由。')po.message_post(body=f"采购订单被拒绝。原因: {refuse_reason}")
5. 集成带来的核心价值
- 统一内部控制 (Unified Internal Control):
审批模块成为了企业内部控制策略的唯一入口 (Single Source of Truth)。无论是财务总监想调整审批金额阈值,还是HR总监想修改请假审批流程,都可以在一个统一的界面完成。这使得内控策略的部署和审计变得前所未有的简单和透明。
- 流程深度自动化 (Deep Process Automation):
集成的流程是端到端自动化的。用户只需在业务单据上进行操作,后续的审批请求创建、流转、通知、状态回写全部由系统自动完成,彻底消除了“线下提醒”、“邮件转发”等低效环节,极大地缩短了业务周期。
- 数据高度一致性 (High Data Consistency):
通过将源单据在审批期间锁定,并由系统自动同步最终状态,我们确保了业务单据的状态与其审批结果始终保持强一致性。这避免了因人工操作失误(如审批未通过但订单已发出)而导致的财务和运营风险。
- 架构的灵活性与可扩展性 (Architectural Flexibility & Scalability):
这种解耦的架构使得系统极易扩展。当企业引入新的业务流程需要审批时,我们无需在原有模块上进行伤筋动骨的二次开发。只需创建一个新的审批类型,并配置一套简单的自动化动作,即可将其无缝接入到统一的审批中枢,大大降低了维护成本和技术债。
6. 结论
Odoo 18的审批模块与核心应用的集成,并非简单的功能联动,而是一次深刻的架构性变革。它将审批从分散在各处的“附庸”,提升到了统领全局流程的“中枢”地位。作为解决方案架构师,理解并善用这一集成模式,意味着我们能够为企业构建一个既灵活敏捷、又内控严密的数字化运营体系。这不仅是技术上的优化,更是对企业治理能力和管理效率的根本性提升。
八、高级技巧、最佳实践与版本跃迁深度解析
对于资深Odoo专家而言,我们看待一个模块,不仅是看其“能做什么”,更是看其“能做到多好”,以及它如何撬动整个系统的潜力。Odoo 18的审批模块,相较于其前身或社区的零散方案,标志着一次决定性的成熟与整合。它不再是一个简单的流程工具,而是演变为一个企业内部控制和流程自动化的核心引擎。本报告旨在超越基础配置,分享高级应用技巧、沉淀最佳实践,并深度剖析Odoo 18带来的革命性变化,为您的咨询与实施工作提供更深层次的洞察。
1. 高级配置技巧与自定义方法:释放审批模块的极限潜力
标准的审批配置可以满足80%的需求,但剩下的20%决定了方案的卓越程度。以下是一些不常见但极其强大的高级技巧。
技巧一:利用服务器动作实现“动态审批人”的终极形态
场景: 企业的审批矩阵并非基于固定的用户或角色,而是基于复杂的业务数据。例如,一个项目的费用报销,需要由该项目的当前项目经理来审批,而项目经理是动态变化的。
解决方案: 不要试图在审批类型中穷举所有项目经理。我们通过服务器动作(Server Action)和自动化动作(Automated Action)来动态注入审批人。
- 准备: 在审批请求(
approvals.request
)模型上,创建一个多对一字段x_project_id
关联到项目(project.project
)。 - 创建服务器动作:
- 名称:
动态设置项目审批人
- 模型:
审批请求 (approvals.request)
- 操作执行:
执行Python代码
- Python代码:
- 名称:
# 该服务器动作将在审批请求创建后被调用
for req in records:if req.x_project_id and req.x_project_id.user_id:# 找到审批类型中代表“项目经理”的那个审批节点# 我们约定该节点的名称中包含 'Project Manager'pm_approver_line = req.category_id.approver_ids.filtered(lambda r: 'Project Manager' in r.name)if pm_approver_line:# 清空该节点预设的审批人,并写入当前项目的项目经理# 注意:这里直接修改了请求的实际审批人,而非模板approval_to_update = req.approver_ids.filtered(lambda r: r.approval_type_line_id == pm_approver_line)if approval_to_update:approval_to_update.write({'user_id': req.x_project_id.user_id.id})
- 创建自动化动作:
- 模型:
审批请求 (approvals.request)
- 触发条件:
创建时
- 执行操作:
执行服务器动作
,并选择刚才创建的动态设置项目审批人
。
- 模型:
价值: 此方法将审批逻辑与具体的人完全解耦,审批流跟着业务数据(项目经理)动态漂移,实现了极高的自动化和准确性。
技巧二:Python条件实现“跨模型”审批决策
场景: 审批条件不仅取决于申请单本身,还取决于其他模型的数据。例如,批准一笔采购订单,需要检查该供应商的历史平均交货延迟率是否低于5%。
解决方案: 在审批类型的规则(Rule)中,使用Python代码进行条件判断。Odoo 18的审批规则增强了这种能力。
- 前提: 供应商模型(
res.partner
)上有计算字段或存储字段记录了平均交货延迟率(x_avg_delivery_delay_rate
)。 - 配置审批规则:
- 在采购审批类型的某个特定审批层级(如“供应链总监审批”)的**适用领域(Apply on)**字段中,切换到Python表达式模式。
- Python Code:
# 'record' 代表当前的审批请求
# 假设审批请求上有关联的采购订单 'purchase_order_id'
result = False
if record.purchase_order_id and record.purchase_order_id.partner_id:# 跨模型查询供应商数据if record.purchase_order_id.partner_id.x_avg_delivery_delay_rate > 0.05:result = True # 延迟率>5%,此审批规则生效
# 返回布尔值
return result
价值: 这使得审批决策不再是基于孤立的申请信息,而是能整合整个ERP系统的数据,做出更智能、更具洞察力的判断,将风控提升到新的维度。
2. 设计与实施审批流程的最佳实践
技术是骨架,但最佳实践是灵魂。
- 保持简洁,避免过度设计 (Keep It Simple, Stupid - KISS):
- 实践: 在流程设计初期,抵制住“为所有可能性都设置一个审批节点”的诱惑。从最核心的控制点开始,通常不超过3-4级。
- 反例: 为一个500元的费用报销设置五级审批,会严重打击员工士气和组织效率。
- 经验分享: 上线后再根据实际运行情况和反馈,逐步增加或调整层级,比一开始就设计一个庞大复杂的流程要稳妥得多。
- 明确权责,杜绝模糊地带 (Clarity of Responsibility):
- 实践: 审批人的设置应首选角色/用户组(Role/Group),而非具体的用户(User)。例如,使用“财务经理”组而非“张三”。这能避免因人员变动导致流程中断。
- 实践: 在审批类型的描述中,用清晰的业务语言说明每个层级的审批目的。例如,“财务部审批节点:负责审核费用票据的合规性与预算占用情况。”
- 授权与信任,结合自动化 (Empowerment & Automation):
- 实践: 大胆使用**自动批准(Automated Approval)**规则。对于低风险、高频次的申请(如小额办公用品申领),设置自动批准是解放生产力的关键。
- 经验分享: 我们可以为某些信任度高的员工或部门设置更宽松的自动批准阈值,实现差异化管理,这是对员工信任的体现。
- 定期审计与持续优化 (Regular Audit & Continuous Improvement):
- 实践: 利用Odoo的报表和筛选功能,每季度对审批流程进行一次“体检”。分析“平均审批时长”、“各节点拒绝率”、“超时审批单据数量”等指标。
- 价值: 数据会告诉你流程的瓶颈在哪里。例如,如果发现“IT总监”节点的平均审批时长超过3天,就需要与其沟通,是任务过多还是操作不便,从而进行针对性优化。
3. Odoo 18的革命性更新:从工具到平台的跃迁
Odoo 18在审批模块上的投入是空前的,它不再是一个次要功能,而是提升到了战略高度。
新功能一:统一的审批仪表盘 (Centralized Approvals Dashboard)
- 变化: 在Odoo 18中,审批模块拥有了自己顶级的应用图标和专属仪表盘。用户的所有待办、已提交、已完成的审批请求,无论源自哪个业务模块(采购、费用、HR等),都会被汇集于此。
- 旧版对比: 在Odoo 17及更早版本,审批任务分散在各个模块中,或者需要通过右上角的“活动”菜单进行查找,缺乏一个统一的管理视图。
- 应用价值:
- 极致的用户体验: 用户(特别是管理者)有了一个单一的工作入口来处理所有审批任务,极大地降低了认知负荷和操作复杂度。
- 全局管理视野: 管理者可以在一个地方看到所有类型的待办事项,能更好地进行优先级排序和时间管理。
新功能二:原生支持多级审批与审批流配置 (Native Multi-Level & Sequential/Parallel Flows)
- 变化: Odoo 18的审批类型配置界面,原生提供了**“通知顺序 (Notification Order)”选项,允许用户清晰地选择“逐个通知 (Sequential)”或“同时通知 (Parallel)”**。审批层级的定义也通过一个有序列表直观地呈现。
- 旧版对比: 在旧版本或社区模块中,实现多级审批往往需要复杂的自动化动作链或自定义开发,配置困难且难以维护。
- 应用价值:
- 配置平民化: 无需写一行代码,业务顾问或系统管理员就能通过图形界面轻松配置出复杂的多级串行或并行审批流,极大地降低了实施门槛。
- 流程可视化: 审批路径变得清晰可见,便于理解和交接。
新功能三:增强的条件逻辑与规则应用 (Enhanced Conditional Logic)
- 变化: 在审批规则的定义中,对Domain表达式和Python代码的支持变得更加成熟和易用。UI上更清晰地引导用户为每一条审批线(rule line)设置其生效的条件。
- 旧版对比: 旧版实现条件审批更多地依赖于在源单据上设置多个状态和复杂的自动化动作。
- 应用价值:
- 动态与精准: 正如前文高级技巧所述,这使得审批流可以根据申请单的实时数据动态调整路径。例如,一个采购申请,如果采购的是“IT设备”,则自动加入“IT部门”审批;如果采购的是“市场物料”,则自动流向“市场部”,而这些都在同一个审批类型中配置。
4. 利用Odoo 18新特性优化企业管理
- 构建“企业内控中心”: 利用统一的仪表盘,将审批模块定位为企业所有流程的“内控审计中心”。审计人员不再需要到各个业务模块去追踪流程,只需在审批模块中,即可审查所有关键业务的决策历史。
- 加速业务流程,打破部门墙: 通过配置并行审批流,可以显著加速需要多部门协同决策的业务。例如,一个新产品上架申请,可以同时发送给“产品部”、“法务部”和“市场部”进行并行审核,将原来需要串行三周的流程缩短为一周。
- 赋能业务部门,实现流程自管理: 由于配置变得简单直观,可以将部分审批流程的维护权限下放给业务部门负责人。例如,允许HR经理自行调整内部的请假审批层级,IT部门可以更好地响应变化,而无需每次都依赖IT实施顾问。
5. 未来展望:审批模块的智能化与社会化
- AI辅助决策 (AI-Assisted Decision Making):
- 预测: 未来的审批模块可能会集成AI。当一个审批请求到达时,系统可以基于历史数据,向审批人提供“建议”(如“批准”、“拒绝”),并给出理由(如“此类申请历史上95%都被批准”、“该供应商近期有3次延迟交货记录,建议谨慎批准”)。
- 基于工作负载的动态分配 (Workload-Based Dynamic Assignment):
- 预测: 对于角色组审批(如“财务部”),系统不再是简单地通知组内所有人,而是可以根据组内成员当前的待办任务数量、历史审批效率等,智能地将新任务分配给最“空闲”或最高效的成员。
- 流程挖掘与智能优化 (Process Mining & Intelligent Optimization):
- 预测: Odoo可能会内置流程挖掘工具。系统能自动分析所有已完成的审批流程,可视化地呈现出瓶颈节点、异常路径和冗余环节,并主动向管理员提出优化建议,例如“建议将‘规则A’和‘规则B’合并,可平均缩短流程1.5天”。
结论
Odoo 18的审批模块已经完成了从一个分散的功能点到统一的流程平台的华丽蜕变。作为资深专家,我们的价值在于利用其统一的架构、原生的多级流能力和增强的条件逻辑,结合动态注入、跨模型判断等高级技巧,去构建那些真正能够反映企业智慧、提升组织韧性的解决方案。Odoo 18为我们提供了前所未有的强大工具,而我们的经验和想象力,将决定能用它创造出多大的价值。