> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alforse.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 需求预测

> 为自制零件录入未来 52 周内预计每周的需求，使 MRP 能在销售订单到达之前就计划工单和采购；实际订单会消耗预测，而不是叠加在预测之上。

销售订单往往来得太晚，来不及及时生产或采购。需求预测让计划员提前说明某个零件每周需要多少，这样 MRP 就可以现在开始计划工单和采购。真实订单到达后，会用掉预测，而不是叠加在预测之上被重复计算。

## 概览

| 问题 | 回答 |
| - | - |
| 在哪里录入预测？ | **生产 → 需求预测** |
| 针对哪些物料？ | 仅限自制零件 |
| 粒度是多少？ | 每个零件、每个位置、每周一个数量 |
| 能预测多远？ | 录入表格中为 52 周 |
| 谁可以编辑？ | 拥有 `production` 权限的用户 |
| 适用哪些套餐？ | Business 和 Partner |

Alforse 不会替您计算预测：不涉及历史数据、季节性或统计模型。数字由您输入；MRP 负责净算和物料清单展开。

### 为什么仅限自制零件

表单的物料选择器只提供您自己制造的零件（限定为 `type="Part"` 且 `replenishmentSystem="Make"`）。外购组件仍然会产生需求：MRP 在展开自制零件的物料清单时将需求向下传递给它们，因此它们无需自己的预测。

### 输入与输出

NOTE

**两个名称相近的表**

您输入的数字进入 `demandProjection`，这是**输入**。MRP 将其展开后的各组件需求写入 `planningDemandForecast`，这是**输出**，每次运行都会重新生成，绝不手工编辑。需求预测界面只读写 `demandProjection`。

在 `demandProjection` 中，每个物料、位置和每周周期对应一行，带有一个 `quantity`。每周周期会随表格从今天起向前滚动而创建。

## 录入预测

1. 打开**生产 → 需求预测**并添加一项预测。
2. 选择**物料**和**位置**。
3. 填写各周。52 个周单元格分在四个季度标签页中；第 1 周是当前周，每个单元格都带有日历日期。表格旁的柱线图会在您输入时绘制每周及累计需求。
4. 保存。下一次 MRP 运行会使用新的数字。

| 字段 | 必填 | 含义 |
| - | - | - |
| **物料** | 是 | 被预测的自制零件。仅列出补货方式为**制造**的零件。 |
| **位置** | 是 | 需求发生的库存位置。每个位置有各自的数字，因此各工厂可以不同。 |
| **第 1 周 … 第 52 周** | 否 | 从当前周起，预计在该周消耗的数量。留空或为零则不存储任何内容。 |

### 保存、编辑、删除

* **保存**只存储有数量的周。将单元格设为零会删除该周的行，而不是保存零，因此数据保持稀疏。
* **编辑**零件时，会将其已保存的各周重新载入表格。
* **删除**某个零件的预测会清除该物料和位置所有未来的周，而不仅仅是您当前查看的标签页。

### 列表

列表界面涵盖接下来的 48 周，将存储的行重新转换为周列，便于阅读。其第一列标记为"本周"（Present Week）。

## MRP 如何使用预测

计划在 Alforse 后端运行，并直接读取 `demandProjection` 作为需求来源之一。

### 实际订单消耗预测

预测是对尚未收到的订单的估计，因此订单到达后不能再叠加在其上。每次运行时，MRP 会把每条未结销售订单行和工单物料行与同一零件、同一位置的预测相抵，只有预测的剩余部分（*未消耗余额*）仍然计入。简言之，**实际需求消耗预测**。

| 该周预测 | 该周实际订单 | MRP 计划的需求 |
| - | - | - |
| 10 | 10 | 10，而不是 20 |
| 10 | 12 | 12 |

订单首先消耗其所在周的预测，然后在您允许的周数范围内先向前、再向后延伸。

### 消耗窗口

在**设置 → 计划**下的**预测消耗**卡片上，使用**回顾（周）**和**前瞻（周）**为整个公司配置该范围。新公司的两者起始均为 0，这会把净算限制在同一周内。

当您的预测不均匀时，更宽的窗口会有帮助。假设您预测某一周为 10、下一周为 0：这样，日期落在空白周的订单就可以消耗相邻周的 10，而不是被重复计算。如果您的预测精确到周，请将两个值都保持为 0。

每次运行后，已消耗的数量会保存到 `demandProjection.consumedQuantity`。计划界面、物料计划图表和库存读取的都是同一个数字，编辑表单会在每个被实际需求占用的周下方显示"N consumed"（已消耗 N）。

### 哪些订单会消耗

| 订单 | 是否消耗预测？ |
| - | - |
| 未结销售订单 | 是，按其全部未结数量，即使是已有关联工单覆盖的按订单生产行，因为预测本来就预计了该行。 |
| 日期早于当前周的订单 | 否，但仍计为需求。 |
| 无日期的订单 | 是；视为当前到期。 |

已过去的周的预测会直接离开计划期，不会作为虚假需求残留。

NOTE

**在制工作在供应侧计入**

消耗只在预测与实际*订单*之间取得平衡。已开立的工单和采购订单作为*供应*另行处理：在物料清单展开过程中，确定的工单和采购订单供应会针对滚动的库存和供应余额计入一次。因此，被在途工单部分覆盖的预测不会被重复计划，两种机制也不会重叠。

### 从预测到组件需求

预测的剩余部分会加到实际需求（未结销售订单行和未结工单物料）上，得到总需求。MRP 展开每个自制零件的方法，将需求向下传递给组件，并把结果写入 `planningDemandForecast`。同时，`planningDemandContribution` 表会为每个单位标注其来源，即 `"Sales Order"`、`"Job Material"` 或 `"Demand Projection"`，因此在零件的计划页面上，您可以打开任意一周，准确看到哪些预测、订单和上级工单构成了其需求。

HEADS UP

**MRP 提出建议；由您下单**

预测的需求会变成*建议的*工单和采购订单，在您对其采取行动之前不会创建任何内容。[计划（MRP）](https://docs.alforse.com/zh/docs/reference/planning.md)说明建议如何出现以及如何转换；[补货策略](https://docs.alforse.com/zh/docs/reference/reordering.md)介绍决定预测最终转化为什么的各零件设置（提前期、批量、安全库存）。

## 技术参考

| 主题 | 详情 |
| - | - |
| 物料选择器筛选 | `apps/erp/app/modules/production/ui/DemandProjection/DemandProjectionForm.tsx` 中的 `type="Part"`、`replenishmentSystem="Make"`（同时也是带季度标签页和图表的抽屉） |
| 保存 | 每个 `week{i}` 与其 `period` ID 配对，并在 `apps/erp/app/routes/x+/production+/demand-forecasts.$itemId.$locationId.tsx` 中 upsert；零值单元格由 `products/supply-and-production-planning/src/forecast/native-forecast.server.ts` 中的 `upsertDemandProjections` 删除 |
| 删除 | `apps/erp/app/routes/x+/production+/demand-forecasts.delete.$itemId.$locationId.tsx` |
| 录入表格长度 | `demand-forecasts.new.tsx` 和 `demand-forecasts.$itemId.$locationId.tsx` 中的 `WEEKS_TO_PROJECT = 52` |
| 列表长度 | `apps/erp/app/routes/x+/production+/demand-forecasts.tsx` 中的 `WEEKS_TO_PROJECT = 12 * 4`；透视和"Present Week"标签位于 `apps/erp/app/modules/production/ui/DemandProjection/DemandProjectionTable.tsx` |
| 计划入口 | `products/supply-and-production-planning/src/planning-seam/index.ts` 中的 `runMrp` |
| 预测重建 | `products/supply-and-production-planning/src/modules/planning-and-mrp/planning-run.ts` |
| 需求溯源 | `products/supply-and-production-planning/src/modules/planning-and-mrp/mrp-engine.ts` |
| 套餐功能 | `kernel/entitlements/src/plan.ts` 中的 `FORECAST` |
| 未使用的列 | 数据库架构预留了 `forecastMethod` 和 `confidence`；需求预测表单不会写入它们。 |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.