Appearance
单据的状态和所有者
一、文档概述
本文档为安仕达烘焙ERP全通用单据基础规范,适用于系统所有业务单据(采购单、生产单、门店销售单、调拨单、盘点单、蛋糕预定单、收付款单等)。
系统所有业务单据统一基于底层标准架构设计:单据主表+ 单据从表,所有单据共享一套状态体系与所有者机制,无单独定制逻辑。
下图我们以采购订单为例子进行说明,单据上方表头部分和下方汇总部分我们保存信息在单据主表,中间的表格部分保存信息在单据从表。

本文核心讲解两大核心能力,也是ERP单据审批、权限管控、业务流转的底层核心:
- 单据所有者机制:核心服务于单据审批流程,动态绑定当前单据责任人、审批处理人,实现审批权责流转、操作权限隔离;
- 单据全维度状态体系:定义单据生命周期、财务状态、辅助业务状态、自定义扩展状态,控制系统所有编辑、审批、过账、关闭、冻结等操作权限。
本文档面向实施顾问、系统管理员、总部财务、运维人员、二次开发人员等等,为单据流程配置、权限设置、问题排查、功能开发提供统一标准依据。
二、单据所有者机制
安仕达软件支持基于人员来定义单据的审批流程,配套使用单据所有者机制来实现单据的审批流程流转。
2.1 核心概念定义
单据所有者(fOwnerID)是系统为适配多级单据审批流程设计的核心权责字段,区别于固定不变的制单人,是动态变更的单据当前责任人。
核心业务逻辑:单据当前处于谁的审批节点,谁就是该单据的所有者。
- 单据新建草稿阶段:所有者默认 = 制单人(fMakeManID);
- 单据提交审批后:所有者自动切换为当前待审批人(审批节点责任人);
- 审批流转至下一节点:所有者同步变更为下一位审批人;
- 审批全部通过、单据生效后:所有者可保留最后审批人,或回归制单人(按系统参数配置);
- 单据驳回、退回草稿:所有者自动回退为原制单人。
简单总结:制单人是单据创建溯源标记(永久固定),所有者是审批流转的动态责任人(随流程变更),系统所有审批操作、单据处理权限,均以所有者ID为核心判断依据。
2.2 所有者相关核心字段(单据主表)
| 字段名 | 中文名称 | 数据类型 | 核心业务规则(审批场景) |
|---|---|---|---|
| fOwnerID | 所有者ID | SMALLINT | 单据审批核心权限字段。动态变更,跟随审批节点流转;仅当前所有者拥有审批、处理、编辑当前待办单据的权限,其他用户无权操作。 |
| fMakeManID | 制单人 | SMALLINT | 单据创建人,终身固定不可变更,仅用于数据溯源、日志审计,不参与审批权限判断。 |
| fPostManID | 复核人/过账人 | SMALLINT | 单据最终过账生效的操作人员,记录终审、过账责任人,不参与流程流转。 |
| fLockManId | 锁定人ID | INTEGER | 单据编辑锁定临时责任人,避免多人同时编辑冲突,与审批所有者相互独立。 |
2.3 所有者审批流转完整场景
以「普通业务单据多级审批」为例,完整演示所有者变更逻辑:
- 制单阶段(草稿):用户A制单,fMakeManID=A,fOwnerID=A;A可自由编辑、保存、提交单据,其他用户无操作权限。
- 提交审批:A提交单据至审批节点B,单据状态变为「申请中草稿」,fOwnerID自动变更为B;此时仅B可审批(通过/驳回),A仅可查看单据,无法编辑、撤销。
- 多级流转审批:B审批通过后流转至C,fOwnerID同步变更为C;权限同步移交,仅C拥有处理权限。
- 审批通过:全部节点审批完成,单据生效,所有者可配置保留最后审批人或回归制单人。
- 审批驳回:任意节点驳回单据,fOwnerID立即回退为制单人A,单据退回草稿状态,A可修改后重新提交审批。
2.4 所有者权限控制规则
- 审批权限隔离:待审批单据,仅单据所有者(当前节点审批人)拥有审批、处理权限,其他账号(含制单人)仅只读查看;
- 流程权责清晰:通过所有者动态赋值,精准区分「制单责任人」和「审批处理责任人」,适配企业多级审核、分工管控需求;
- 管理员豁免:超级管理员、总部运维账号可无视所有者权限,查看、编辑、处理所有单据,用于异常单据干预;
- 单据移交场景:特殊情况可手动修改fOwnerID,强制转移单据审批权限,适配人员离岗、审批代办场景。
2.5 单据从表溯源字段
| 字段名 | 中文名称 | 说明 |
|---|---|---|
| fChgManID | 明细修改人 | 记录单据明细行最后一次修改人员,用于明细级操作溯源,不影响审批权限 |
| fChgTime | 明细修改时间 | 配合修改人字段,完整记录明细变更日志 |
三、单据完整状态体系
系统所有单据统一采用四层独立状态架构,各司其职、互不冲突,全方位管控单据生命周期、审批流程、财务状态、业务扩展场景:
- 主单据状态 fBillState:单据核心生命周期(草稿/审批中/生效/冻结/关闭/删除),控制整体操作权限;
- 凭证会计状态 fAcctState:业财一体化专用,管控凭证生成、复核状态;
- 辅助复合状态 fAssistState:系统通用公共业务状态(审批、打印、结算、开票等),位运算多状态共存;
- 自定义复合状态 fCustomState:各单据专属扩展状态,适配烘焙行业个性化业务。
3.1 主生命周期状态 fBillState(核心流转状态)
字段类型:SMALLINT(单值枚举,同一时间仅一种状态),直接控制系统单据编辑、审批、过账、冻结、关闭等所有核心操作,适配审批流程流转。
| 状态值 | 状态名称 | 适用场景 | 业务与权限规则 |
|---|---|---|---|
| -2 | 单据模版 | 模板预制单据 | 非正式业务单据,不参与库存、财务核算;仅用于新建单据快速复用,无审批流程。 |
| -1 | 已删除/作废 | 废弃无效单据 | 逻辑删除,默认界面隐藏;不参与业务统计,终止所有审批流程,无任何操作权限。 |
| 0 | 普通草稿 | 新建未提交审批单据 | 所有者为制单人,可自由编辑、删除、提交审批;无库存、财务变动。 |
| 4 | 申请中草稿 | 已提交审批、待审核单据 | 审批核心状态。单据所有者变更为当前审批人;制单人仅可查看,不可编辑、撤销;仅所有者可执行通过/驳回操作。 |
| 1 | 已生效(过账) | 审批完成/直接过账单据 | 单据正式生效,库存、成本、往来数据同步更新;审批流程终止,可冻结、关闭、红冲调整。 |
| 3 | 冻结 | 仅已生效单据 | 锁定单据所有业务操作,禁止修改、结算、关闭、红冲,用于对账锁定数据;无审批流转。 |
| 2 | 已关闭 | 业务全闭环单据 | 单据所有上下游业务、收付款、结算全部完成;彻底终止所有操作与审批流程。 |
3.1.1 状态1:已生效(已审核/已记账)
适用于采购订单、销售订单、进货单、出库单等所有正式业务单据。单据进入已生效状态,代表该单据业务正式确认、数据正式记账。
例如:进货单生效后,系统库存真实增加;销售单生效后,系统库存真实扣减、营收数据入账。
单据从「草稿」变为「已生效」的过程,称为生效、过账、记账。
生效逻辑分两种情况:
- 未配置审批流程:用户直接点击【生效】按钮,单据直接执行记账逻辑,完成后变为已生效状态;
- 已配置审批流程:单据提交后进入「申请中草稿」状态,等待节点审批,必须全部审批人通过,系统才会自动执行记账、变更为已生效状态。
系统支持反生效(反审核、取消记账)能力,但不同单据权限不同:
- 部分单据(如销售订单、调拨订单)支持反生效操作;
- 部分核心交易单据(如零售销售单)默认禁止反生效,仅特殊定制版本开放。
重要风险说明(禁止滥用反生效):
取消生效/反审核属于高风险操作,严禁随意使用。例如采购订单生效后,下游已正常做进货入库、门店领料、生产加工、成本核算、财务对账等一系列后续业务,此时若对上游订单执行取消生效,会造成上下游单据链路断裂、库存数据错乱、成本对账不平、财务凭证与业务数据不一致、在途数量与可用数量异常,引发全盘业务数据紊乱,且多数异常无法自动修复,需要人工逐单核对修正,严重影响门店经营与财务结账。

3.1.2 状态2:已关闭(业务终止)
已关闭代表终止当前单据的一切后续业务延续能力,单据不再允许被下游单据引用、不再继续执行业务流转。
典型场景:采购订单生效后,可被进货单反复引用入库;一旦将采购订单关闭,后续将无法再基于该订单做进货、入库、补差等任何下游操作。
核心规则:
- 关闭操作仅针对已生效单据有效,草稿、审批中、作废单据不支持关闭;
- 手工关闭可恢复:用户手动关闭的单据,支持通过【恢复单据】菜单撤销关闭,重新开放下游业务引用权限;
- 自动关闭不可干预:系统默认智能闭环,当单据所有下游业务(入库、结算、收货、回款)全部完成、数量全额执行完毕后,单据会自动变为已关闭状态,保障业务闭环。
3.1.3 状态3:冻结(数据锁定)
单据冻结为已生效单据专属锁定状态,核心作用是锁定已生效单据的所有业务与数据,禁止一切后续变更、流转与结算操作。
冻结与手工关闭的异同说明:
相同点:冻结、手工关闭效果一致,单据都会停止后续所有业务执行,下游无法引用单据、无法继续做入库、结算、调整等操作。
核心区别:
- 手工关闭:支持可逆操作,用户可随时【恢复单据】,重启单据后续业务流转;
- 单据冻结:属于不可逆临时锁定,系统不支持手工恢复、不允许中途解锁,一旦冻结,单据永久锁定业务状态,无法再次开启流转,仅用于财务月结、年终对账、数据封存等严苛场景。
适用场景:财务月度结账完毕、年度数据封存、对账锁定、异常单据暂停流转,防止后续操作篡改已确认的账务与库存数据。
权限约束:仅已生效(状态=1)的单据可执行冻结,草稿、审批中、关闭、作废单据均不支持冻结操作。
3.1.4 其余主状态简要场景回顾
- 状态0 普通草稿:新建未提交单据,可任意编辑、删除、提交审批,无库存财务数据入账;
- 状态4 申请中草稿:已提交审批、等待节点审核,所有者变更为审批人,制单人不可编辑;
- 状态-1 已删除:逻辑作废单据,终止所有业务与审批,不参与数据统计;
- 状态-2 单据模板:仅用于快速制单,非正式业务单据,无业务流转能力。
3.2 财务凭证状态 fAcctState(业财联动)
字段类型:SMALLINT(单值枚举),管控单据财务凭证生成与复核进度,独立于业务审批状态。
| 状态值 | 状态说明 |
|---|---|
| 0 | 未生成凭证 / 凭证未全部生成 |
| 1 | 已生成凭证,凭证未全部复核 |
| 2 | 已生成凭证,且全部凭证复核完成(财务闭环) |
3.3 辅助复合状态 fAssistState(系统通用多状态)
字段类型:INTEGER(位掩码存储),支持多个状态同时叠加生效,适配单据全流程辅助业务标记,配套系统通用数据库函数操作,禁止直接修改数值。
通用操作函数:
- 判断状态:
dbo.IsIncludeValue(状态字段, 状态编码) - 新增状态:
dbo.AddIncludeType(状态字段, 状态编码) - 移除状态:
dbo.DelIncludeType(状态字段, 状态编码)
| 状态编码 | 状态含义 | 业务场景说明 |
|---|---|---|
| 0 | 已打印 | 单据执行打印操作后自动标记 |
| 1 | 审批中 | 单据处于多级审批流转节点中 |
| 已审批 | 所有审批节点全部通过 | |
| 3 | 拒绝审核 | 审批驳回,单据退回草稿 |
| 4 | 暂缓审核 | 审批临时搁置,暂停流转 |
| 5 | 送货中 | 采购、调拨、配送类单据物流中 |
| 6 | 已收货 | 下游收货完成,单据部分闭环 |
| 7 | 已结算 | 单据财务对账、收付款完成 |
| 8 | 已开发票 | 单据对应发票已开具 |
| 9 | 红冲产生的单据 | 由原单红字冲销自动生成的调整单据 |
3.4 自定义复合状态 fCustomState(单据专属扩展)
字段类型:INTEGER(位掩码存储),与辅助状态共用一套操作函数,用于存放各单据独有、行业个性化业务状态(如烘焙行业蛋糕预定、配方试产、临期锁定等),不占用系统通用状态编码,实现业务灵活扩展。
四、补充状态标记字段(单据头+单据体)
4.1 单据头补充标记字段
| 字段名 | 说明 |
|---|---|
| fCloseSign | 强制关闭标记,区分人工手动关闭、业务自动闭环关闭 |
| fRedSign | 冲红标志,标记当前单据为红字反向调整单据 |
| fPrintSign/fPrintCount/fPrtedChgCount | 打印状态、打印次数、打印后修改次数,管控打印后改单行为 |
| HaveAttach | 附件标志,标记单据是否上传佐证文件 |
| fFirstSign | 期初标志,区分初始化期初单据与日常业务单据 |
4.2 单据体行级状态(BillSheet)
单据头管控整张单据的审批与生命周期,单据体管控单行明细的业务执行进度,实现单据精细化管控:
| 字段名 | 核心作用 |
|---|---|
| fStillSign | 可提取标志,控制当前明细行是否可被下游单据引用、生成下游业务单 |
| fFinishQty | 完成数量,统计单行明细已执行、已引用的数量,判断明细行是否闭环 |
| fLineVer | 行版本号,记录明细修改次数,用于数据校验与变更追溯 |
| fSourceLineSign/fLineSign | 唯一行编码,记录上下游单据关联关系,用于业务溯源、冲红跟踪 |
五、审批流程+状态联动核心规则(重点)
- 权限判定优先级:审批流程权限优先判定 fOwnerID(当前审批人),制单人仅做溯源,不参与审批权限控制;
- 状态与所有者联动:单据进入「申请中草稿(4)」状态后,所有者同步变更为待审批人,实现权责精准匹配;
- 流程终止条件:单据生效(1)、关闭(2)、删除(-1)后,审批流程终止,所有者不再变更;
- 状态叠加规则:主状态唯一不可叠加,辅助/自定义状态可多状态并存,适配复杂审批+业务并行场景;
- 编辑锁定规则:申请中单据仅所有者可处理,其余人员(含制单人)只读,杜绝单据随意篡改。
六、常见问题FAQ
Q1:制单人和所有者的核心区别是什么?
A:制单人(fMakeManID)是固定的单据创建人,仅用于日志审计溯源;所有者(fOwnerID)是动态的审批责任人,随审批节点流转,是控制单据审批、操作权限的核心字段。
Q2:单据提交审批后,制单人还能修改单据吗?
A:不能。单据变为申请中状态后,所有者切换为审批人,制单人仅拥有只读权限,无法编辑、撤销单据。
Q3:审批驳回后,单据所有者会变更吗?
A:会。驳回后单据退回草稿状态,所有者自动回退为原制单人,由制单人修改后重新提交审批。
Q4:草稿单据可以冻结吗?
A:不可以。仅已生效(fBillState=1)的单据支持冻结操作,草稿、审批中单据无冻结权限。
Q5:辅助状态和自定义状态如何区分使用?
A:审批、打印、结算、开票等全系统通用状态使用fAssistState;烘焙行业专属、各单据个性化业务状态使用fCustomState,互不冲突。
Q6:单据冻结和手工关闭最大区别是什么?
A:两者均会停止后续业务流转;手工关闭支持【恢复单据】可逆操作,单据冻结不可逆、不支持手工恢复,用于永久锁定账务数据。
Q7:为什么不建议随意反生效(取消记账)?
A:上游单据取消生效会直接导致下游进货、领料、销售、成本、财务数据全部脱节,造成库存错乱、对账不平、凭证异常,极易引发整套业务数据紊乱,修复成本极高。
