Odoo 自己的营销页面称,可以“plan resources with finite capacity planning”(按实际产能规划资源)(odoo.com/app/manufacturing)。下面依据官方文档和源代码,说明这在 Odoo 19.0 中具体意味着什么:计划按钮如何工作、能力边界在哪里,以及哪些情况下它就足够用。
Odoo 如何安排工单:逐步解析
1. 启用工单并配置工作中心
进入制造 > 配置 > 设置,启用工单。随后,配置菜单下就会出现工作中心。每个工作中心(mrp.workcenter)都包含排程所需的以下字段:
| 字段 | 在排程中的作用 |
|---|---|
| Working Hours | 工作中心采用的资源日历。默认为“标准每周 40 小时”,工作日为周一至周五 |
| Time Efficiency | 以百分比调整该工作中心上每张工单的执行速度 |
| Setup Time / Cleanup Time | 每张工单开始前和结束后增加的时间,以分钟计 |
| Alternative Workcenters | 点击“计划”时可选用的其他工作中心 |
| 产品产能选项卡 | 每周期的产出件数,以及各产品的准备和清理时间,单位为分钟(mrp.workcenter.capacity) |
| OEE Target | 用于报表的绩效目标,不参与排程计算 |
| Allowed Employees | 指定哪些员工可以在此工作。仅用于筛选,不代表产能 |
2. 物料清单中的工序
Odoo 没有共用的工艺路线主数据。工序分别保存在各物料清单的工序选项卡中(mrp.routing.workcenter)。每道工序都需指定Work Center和Duration Computation:可以手动输入固定时长,也可以根据最近的工单计算,默认取最近 10 张。预计时长由准备时间、清理时间和加工时间相加得出;其中,加工时间为周期数乘以单周期时间,再除以时间效率(mrp_routing.py)。
启用Work Order Dependencies(工单依赖关系)后,可以通过Blocked By(前置工序)指定某道工序必须等待另一道工序完成。Odoo 文档写道:“A blocked work order is scheduled at the end of the time period specified in the Expected Duration field of the work order that precedes it.”(受阻塞工单会安排在前置工单的 Expected Duration 字段所指定的时段结束时开始。)(来源)
3. 确认生产订单(MO),然后点击计划
确认制造订单(mrp.production)后,系统会生成对应的工单(mrp.workorder)。点击制造订单上的计划按钮,系统会从末道工单开始,递归地优先安排各道前置工单。每张工单都按正向排程安排在其前置工单之后。对于每张工单,Odoo 会执行以下步骤:
- 在生产订单开始时间、当前时间和所有阻塞工单的结束时间中,取最晚的时间。
- 尝试主工作中心及每个备选工作中心。
- 在各工作中心的日历中向后查找,找到第一个足以容纳预计工时的空闲时段。
- 选择能最早完工的工作中心,并在其日历中创建一条
resource.calendar.leaves记录,预留该时段。
19.0 的源代码明确写出了规则:“The available interval is disjoinct with all other workorders planned on this workcenter”(可用时段与该工作中心上所有已排程工单的时段均不重叠)(mrp_workcenter.py)。这就是其体现有限产能的部分。工单遇到非工作时段,会在下一个工作时段继续执行。如果在 700 天内(默认搜索范围)都找不到合适时段,计划功能就会停止,并提示“Impossible to plan the workorder.”(无法为该工单排程。)
4. 停工时段与备选工作中心
借助 Time Off 应用和开发者模式,可以将工作中心的维护或假期时段设为不可用。计划功能随后会将工单安排到备选工作中心。如果没有备选工作中心,Odoo 文档指出:“work orders begin to pile up at the work center until it is operational again”(工单会开始在该工作中心积压,直到它恢复运行)(来源)。
5. 检查与调整
通过制造 > 计划 > 按生产订单计划和按工作中心计划,可以打开工单计划视图。Enterprise 版提供支持拖放的甘特图,Community 版则提供列表、日历、数据透视表和图表视图。文档说明调整需手动完成:“Times and planned work centers can be changed by clicking to access the individual work order.”(点击进入具体工单后,可以修改时间和计划使用的工作中心。)(来源)
Odoo 的能力边界
- 先排先占。计划功能逐张处理生产订单,先安排的订单就占据最早的时段。同时选择多张生产订单时,系统按 Odoo 的默认顺序排程:先看优先级,再看开始日期。它不会权衡交期与换型,也不会为更紧急的订单挪动已排程的生产订单。
- 不按准备时间优化顺序。Setup Time 是每张工单固定增加的时间,无论前一张工单生产什么,增加的分钟数都一样。Odoo 没有换型矩阵,也不会将相似生产任务集中安排来避免换型。
- 只有一个约束。排程只受工作中心日历的限制。操作人员仅通过 Allowed Employees 进行筛选。计划功能预订时段时,不会检查工具和物料是否可用。组件预留和采购订单日期只用于补货。
- MRP 不考虑产能。补货规则和 MTO 根据物料清单中的 Manuf. Lead Time,按自然日创建生产订单。文档写道:“Lead times do not consider weekends, holidays, or work center capacity”(交货期不考虑周末、节假日或工作中心产能)(来源)。生产订单的截止日期和承诺交期都按自然日计算,而非依据实际排队情况。
- MPS 只是建议清单。主生产计划(Enterprise 版)同样不考虑产能负荷。“The MPS only suggests the amount of product to be replenished, requiring the user to actually create the replenishing POs/MOs.”(MPS 仅建议需要补充的产品数量,补货所需的采购订单和生产订单仍须由用户实际创建。)(来源)
- 不会自动重排。设备故障或急单本身不会触发任何排程调整。一旦有工单开工,Odoo 就不允许取消该生产订单的排程:“Some work orders have already started, so you cannot unplan this manufacturing order.”(部分工单已经开工,因此无法取消这张生产订单的排程。)(mrp_production.py)
- 子装配件单独排程。多层物料清单会生成独立的子生产订单,每张订单分别排程。计划员必须按正确顺序安排这些订单,才能确保上层工序需要子装配件时,子装配件已经就绪。
- 甘特图和 MPS 仅限 Enterprise 版。版本对比页面将制造功能中的“Scheduling”(排程)和“Shopfloor”(车间)标为 Enterprise 版专属(odoo.com/page/editions)。Community 版的计划员使用列表和日历开展工作。
哪些情况下 Odoo 原生计划功能就够用
在以下情况下,Odoo 的计划按钮就能满足需求:
- 每道工序都有明确对应的工作中心,且生产量适中。
- 争用同一瓶颈的订单很少,按先排先占的方式安排,得出的日期可以接受。
- 备选设备完全相同,结合使用备选工作中心与 Time Off 就能应对大多数突发情况。
- 准备时间短,或不受前一项生产任务影响。
- 计划员每天查看一次按工作中心计划视图,手动调整少量冲突即可。
如果您的工厂符合这些情况,就应把精力放在数据质量上。为每个工作中心设置日历,并在 Setup 和 Cleanup Time 中填入符合实际的准备与清理时间。历史数据波动较大时,使用固定工时;启用依赖关系,并按优先级安排生产订单。
何时需要生产排程系统
如果以下多项情况符合实际,计划按钮就已无法满足您的需求:
- 大量订单争用两个或更多瓶颈资源,必须根据交期决定生产顺序。
- 准备时间取决于前一项生产任务,因此任务顺序会影响产出。
- 人员和班次与设备一样,都会限制排程。
- 物料到货时间决定生产任务何时能够开始。
- 急单、设备故障和到货延误迫使您每周多次重排。
- 销售需要依据实际排队情况确定交货日期,而不是依赖 Manuf. Lead Time。
选型时应关注什么
- 同时按所有工作中心的实际产能排程,并纳入班次、人员和缺勤情况。
- 按交期和优先级统筹所有订单的顺序,而不是逐张生产订单排程。
- 用准备时间矩阵记录不同生产顺序下的换型时间,让引擎选出准备时间最少的任务顺序。
- 将工具和班组纳入约束:共用工具在一台设备上使用时,另一台设备就无法使用;一项生产任务也可能同时需要多名操作人员。
- 排程时考虑物料,检查库存及待到货的采购订单。
- 从整体排程出发选择备选工作中心,而不是一次只为一张工单选择。
- 支持多层产品结构,确保子装配件在上层产品需要之前完工。
- 随着生产推进或订单变化自动重排。
- 为计划员提供甘特图,为操作人员提供任务队列,使用 Community 版时也同样支持。
- 明确排程系统与 Odoo 的职责划分。Odoo 中的工单日期根据日历中的预留时段计算,再次点击“计划”会覆盖这些日期。因此,要约定由排程系统决定生产顺序,通过
mrp.workorder回写日期和工作中心,并跳过已开工的工单。 - API 必须适配您的版本和套餐。Odoo 19 提供 External JSON-2 API。XML-RPC 和 JSON-RPC 计划在 Odoo 22(Odoo Online 21.1)中移除。只有 Custom 套餐支持外部 API 访问,One App Free 和 Standard 均不支持(外部 API 文档)。自定义模块需要使用 Odoo.sh 或本地部署(Odoo 定价)。
可选方案分为四类:
- Odoo 原生计划功能包括计划按钮,以及 Enterprise 版中的甘特图视图。
- Odoo 客户端内的扩展模块用于改进看板或时段分配逻辑,由 Odoo 合作伙伴维护。
- 供应链引擎和企业级 APS 套件通过实施项目完成对接,由专职计划团队使用和管理。
- 具备车间执行功能的云端 APS与 Odoo 配合使用,为所有资源自动排程,SkyPlanner 就属于这一类。它随生产变化持续重排,并将排程送达操作人员手中。
SkyPlanner 如何补足这些能力
SkyPlanner APS 逐一解决上述局限:
- 不再先排先占,而是统筹排序。Arcturus AI 引擎在数秒内,按实际产能对所有未完成订单统一排程,并根据完成日期、优先级、客户优先级、Fast Track 和 Dynamic Priorities 确定顺序。
- 不再固定叠加,而是缩短准备时间。准备时间矩阵记录每对产品之间的换型时间,且可按切换方向分别设置:从蓝色切换为红色需 30 分钟,从红色切换为蓝色需 60 分钟。排程系统会选择准备时间最少的顺序,并连续安排相似的生产任务。
- 统一考虑所有约束。工作中心、班次、人员、缺勤、工具和物料都在同一份排程中进行检查。工具数量有限,因此,一台设备正在使用的夹具不会同时分配给另一台设备。一项生产任务可以同时需要多名操作员;当首选资源不可用时,引擎会改用替代设备或人员。工作中心分组、效率,以及将一项生产任务拆分到多个工作中心,也都纳入同一模型。物料检查涵盖现有库存和未结的
purchase.order明细行:已订购的零部件从采购订单交货日期起视为可用,采购订单标记为“已交付”时更新库存。 - 子装配衔接到位。对子产品和多层级产品进行排程,确保装配需要零部件时,零部件已准备就绪。
- 用 Autopilot 取代手动重排。生产发生变化时,Autopilot 会遵循您设置的锁定、Running Time Lock 和优先级,自动重新排程。
- Community 也能用上甘特图和车间功能。计划员可在交互式甘特时间轴上编辑排程。操作员可通过手机或平板电脑查看自己的任务队列,并使用 Mobile Confirmations、Production Timer 和 Quick Log Mode 记录作业。
Odoo 仍是产品、物料清单、库存、采购和会计数据的主系统。SkyPlanner 通过 External JSON-2 API 与其双向集成;对于较早版本,则通过 XML-RPC 和 JSON-RPC 集成:
- 读取:
mrp.production、mrp.workorder、mrp.workcenter、mrp.bom以及未结的purchase.order明细行。 - 回写:通过
write操作,将计划开始时间、结束时间和选定的工作中心写入每个mrp.workorder(date_start、date_finished、workcenter_id)。这会同步调整 Odoo 自身日历中的预留时段,使 Odoo 的计划视图显示 SkyPlanner 排定的日期。 - 车间:操作员的报工数据会创建为
mrp.workcenter.productivityTime Logs。
排程一有变化,SkyPlanner 的 webhook 就会实时推送。每家工厂使用 Odoo 的方式都不同,工序、日历和定制模块也各不相同。SkyPlanner 团队会在上线准备阶段,根据您的配置完成集成,并在上线后提供支持。您的 Odoo 合作伙伴或内部开发人员也可以基于 SkyPlanner 的 REST API 进行开发,并查阅相应文档(API 参考文档)。只需一个 API 密钥即可开始。API 和功能详情请参阅 SkyPlanner 文档。
当大量订单争用相同的瓶颈资源,需要根据交期统一安排这些订单的先后顺序时,请选择 SkyPlanner。
当换型时间取决于生产顺序,或下一项可执行的任务受到共用工装及多人协同作业的制约时,请选择 SkyPlanner。
如果您每周需要多次重新排程,希望在几周内就获得适用于自身生产的可执行排程,而不是等待漫长的项目完成,请选择 SkyPlanner。
从导出的 CSV 或 XLSX 文件开始,开启30 天免费试用(最多支持 20 个工作中心,无需信用卡),将 SkyPlanner 的排程与点击“计划”按钮所得的结果进行比较。试用结束后,价格为每月 199 € 起,包含 5 个工作中心,按月计费,随时可取消。我们会根据您的流程和需求,提前将集成费用与套餐一并报价,让您在开始前了解全部成本。实施通常在上线准备工作启动后的几周内完成。查看价格和功能。
进一步了解 SkyPlanner 与 Odoo 的配合使用、Odoo 集成指南及其他 ERP 集成。
制造企业对 SkyPlanner 的评价
2 小时每周节省的时间
“SkyPlanner 让我们的生产计划从 Excel 表格迈向了实时生产优化。”
Kalle Kalliomäki,供应链专员
UTU · 配电盘及开关设备
生产计划工作每周节省 2 小时,新的任务队列只需几秒就能下达到生产线。
+90%生产效率提升
“生产效率提高了 90%。”
Abdul Rucyinga,IT 负责人
Laboratory & Allied · 药品制造
生产效率提高了 90%,为所有工作中心生成覆盖三个月的优化计划,用时不到 30 分钟。
6 个月销售可查看的未来空闲产能范围
“SkyPlanner 为所有生产计划工作奠定了可靠的基础。”
Anu Järvinen,生产经理
Fredman Operations · 符合食品安全要求的包装纸
销售人员可提前查看未来六个月的空闲产能。以往需要一小时或更久才能答复的排程变更请求,现在几秒内就能得到回应。
98%准时交付率,原为约 50%
“SkyPlanner 对保持我们的准时交付率起着决定性作用。”
Hannu Lahtinen,总经理
KJH-Comp · 钣金加工与合同制造
准时交付率从约 50% 提升至最高 98%,如今排程只需一名主管负责,而不再需要两名。
常见问题
Odoo Community 有生产排程功能吗?
有,但仅限基础功能。Community 提供制造订单、工单、工作中心和 Plan 按钮,并支持列表、日历、数据透视表和图表视图。甘特排程视图、Shop Floor 和 Master Production Schedule(主生产计划)属于 Enterprise 功能。SkyPlanner 可为使用 Community 的工厂提供甘特图和操作员任务队列。
Odoo MRP 会考虑工作中心的产能吗?
不会。补货采用以自然日计算的交货期,Odoo 文档指出,交货期 “do not consider weekends, holidays, or work center capacity”(不考虑周末、节假日或工作中心产能)。只有在制造订单上点击 Plan 时,产能才会纳入计算。
Odoo 能在同一个工作中心同时安排多项生产任务吗?
在排程中不能。19.0 版本的代码为每张工单分配的时段,都不会与该工作中心其他工单的时段重叠。Product Capacities 选项卡设置的是单张工单每个周期的生产件数,而不是并行工单数。
Odoo 能处理随生产顺序变化的准备时间吗?
不能。Setup Time(准备时间)和 Cleanup Time(清理时间)是按工作中心设置的固定分钟数,也可以在 Product Capacities 选项卡中按产品设置。无论前一项生产任务是什么,Odoo 都会将这些时间加到每张工单上。SkyPlanner 的准备时间矩阵按产品组合及切换方向记录换型时间,并据此安排生产任务的顺序,尽量缩短换型时间。
SkyPlanner APS 如何连接 Odoo?
SkyPlanner 通过外部 JSON-2 API 与 Odoo 双向集成;对于 16.0 至 18.0 版本,则通过 XML-RPC 或 JSON-RPC 调用 execute_kw。计划日期和工作中心会写入每个 mrp.workorder,记录的工时则转换为 Odoo Time Logs。SkyPlanner 团队会在实施期间完成集成配置,并在上线后提供支持。详情请参阅 Odoo 集成指南。