表单中进销存如何实现分批出入库
1. 使用场景
本篇文档介绍在做企业进销存的时候,结合关联表单多选子表单填充子表单的功能实现采购分批入库,销售分批出库的场景。
2. 实现功能
2.1. 页面字段配置
2.1.1. 产品信息(普通表单)
记录产品信息,供【库存表】、【采购订单】、【销售订单】联动使用。
2.1.1.1. 主要字段
- 产品编号(流水号)
- 产品名称(单行文本)
- 物品分类(下拉单选)

2.1.2. 库存表(普通表单)
记录产品的库存信息。
2.1.2.1. 主要字段
- 产品编号(单行文本)
- 产品名称(单行文本)
- 产品分类(单行文本)
- 库存数(数值)

2.1.3. 采购订单(流程表单)
当需要进行采购入库时,可先创建采购订单,供【采购入库】联动使用。
2.1.3.1. 主要字段
- 采购单号(流水号)
- 采购日期(日期组件,快捷配置 - 今天)
- 采购人(成员,快捷配置 - 当前登录人)
- 未入库总数(数值,公式编辑 - SUM(采购明细.总价))

- 采购明细(子表单)
- 产品编号(单行文本)
- 产品名称(关联表单,关联【产品信息】)
- 采购数量(数值)
- 分类(单行文本)
- 未入库数量(数值,公式编辑)


2.1.4. 采购入库(流程表单)
采购入库,可选择已经创建好的【采购订单】,并且可以选择【采购订单】下的采购明细,流程结束后将采购明细数据更新至【库存表】中。
- 入库单号(流水号)
- 采购订单(关联表单,关联【采购订单】)



- 入库人(成员组件,快捷配置 - 当前登录人)
- 入库日期(日期组件,快捷配置 - 今天)
- 入库明细(子表单)
- 产品名称(关联表单,关联【采购订单】中的「采购明细」)
- 本次入库数量(数值)


// 子组件自定义校验函数
export function validateRuleForOutbound(value) {
const { values } = this.item;
const inventoryCount = values.未出库数量唯一标识 || 0; // 获取未入库数量
return value <= inventoryCount;
}
function validateRule(value) {
return this.validateRuleForOutbound(value);
}
- 产品编号(单行文本)
- 采购数量(数值)
- 未入库数量(数值)
- 采购订单号(单行文本)

2.1.5. 销售订单(流程表单)
当需要进行销售出库时,可先创建销售订单,供【销售出库】联动使用。
- 销售订单号(流水号)
- 操作人(成员,快捷配置 - 当前登录人)
- 销售日期(日期,快捷配置 - 今天)
- 订单明细(子表单)
- 产品名称(关联表单,关联【产品信息】)


- 销售数量(数值)
- 产品编号(单行文本)
- 产品分类(单行文本)
- 未出库总数(数值,公式编辑)

2.1.6. 销售出库(流程表单)
销售出库,可选择已经创建好的【销售订单】,并且可以选择【销售订单】下的订单明细,流程结束后将销售明细数据更新至【库存表】中。
- 出库单号(流水号)
- 出库人(成员,快捷配置 - 当前登录人)

- 出库日期(日期,快捷配置 - 今天 )

- 销售订单(关联表单,关联【销售订单】)



- 订单明细(子表单)
- 产品名称(关联表单,关联【销售订单】中「订单明细」)



- 本次出库数量(数值,添加校验规则)


//封装自定义校验
export function validateRuleForOutbound(value) {
const { values } = this.item;
const inventoryCount = values.库存数唯一标识 || 0; // 获取库存数
return value <= inventoryCount;
}
function validateRule(value) {
return this.validateRuleForOutbound(value);
}
- 产品编号(单行文本)
- 订单数量(数值)
- 库存数(数值,数据联动【库存表】)
- 未出库数量(数值)
- 产品分类(单行文本)
- 本次出库总数量(数值,公式编辑)

- 销售订单号(单行文本)

2.2. 页面主要功能配置
2.2.1. 采购入库
2.2.1.1. 流程发起扣减采购订单数量
配置【采购入库】创建成功的集成自动化,自动扣减【采购订单】中未入库总数,这样可避免运行中的同一订单的物品重复入库


「未入库总数」公式如下图:


「未入库数量」公式配置如图:

2.2.1.2. 流程删除/撤销/拒绝/终止,归还订单数量
配置【采购入库】删除/撤销/拒绝/终止的集成自动化,流程异常结束自动归还【采购订单】中未入库总数。

更新【采购订单】未入库总数。

「未入库总数」公式配置如图:


「未入库数量」公式配置如图:

2.2.1.3. 流程审批通过,累加库存
配置【采购入库】审批同意的集成自动化,自动累加【库存表】中库存

「库存数」公式配置如图:

2.2.2. 销售出库
2.2.2.1. 流程发起, 扣减销售订单数量
配置【销售出库】创建成功的集成自动化,自动扣减【销售订单】中未出库总数,这样可避免运行中的同一订单的物品重复出库。

「未出库总数」公式配置如图:

更新【销售订单】明细中数据;


「未出库数量」公式配置如图:

2.2.2.2. 流程删除/撤销/拒绝/终止,归还订单数量
配置【销售出库】删除/撤销/拒绝/终止的集成自动化,流程异常结束自动归还【销售订单】中未出库总数。


「未出库总数」公式配置如图:

更新销售订单明细数据(归还未出库数量)

「未出库数量」公式配置如图:

2.2.2.3. 审批通过,扣减库存数量
配置【销售出库】审批同意的集成自动化,自动扣减【库存表】库存。


3. 实现效果
3.1. 采购入库
【采购订单】从【产品信息】选择物品数据,录入采购明细

【采购入库】提交入库明细,根据「采购订单」分批选择未入库数量>0的物品,并校验本次入库数量

也可点击「选择表单」,批量多选物品明细,自动填充入库明细


审批结束后,自动更新【采购订单】明细中物品的未入库数量,并累加【库存表】数量


累加【库存表】

再次提交【采购入库】只能选择未入库数量>0的物品

3.2. 销售出库
【销售订单】从【产品信息】选择物品,录入订单明细。

【销售出库】提交出库明细,根据「销售订单」分批选择未出库数量 > 0的物品,并校验本次出库数量,不得超出库存数。

【销售出库】审批同意,自动扣减库存数。

