简介:Epicor 交易业务类型文档围绕ERP库存、成本与应付模块的核心交易分类展开,面向实施顾问、财务及供应链人员,帮助理解不同业务动作在系统中的记账逻辑。文档按序号逐项解释各交易类型的名称、描述与备注,覆盖采购收货标准成本差异、生产工单物料及外包成本调整、服务工单/合同/担保关联成本、DMR处理、物料转移等常见场景,便于按业务查找对应类型并快速核对账务影响。例如ADJ-DRP记录供应商发票与采购订单的差异,MFG-STK记录工单物料到库存,AST-STK将延伸成本进入存货或资产清算账,针对性强。包体为单一PDF文件,大小68KB,内容紧凑,适合作为桌面速查或培训辅助。已有215人学习浏览,对有Epicor应用基础、希望理顺交易类型与成本核算关系的从业者具有实用参考价值。
1. 交易业务类型不是“流水号”,是业务规则的入口
前几天帮一家制造企业客户核查月度库存报表,收入和毛利连续两个月对不上。查到最后,问题出在“交易业务类型”上:退货单和正常销售单挂的是同一个订单类型,发货和退货混在一张表里,财务导出时直接把退货金额加进了收入。
Epicor交易业务类型,就是把每一类业务动作单独命名的规则入口。销售订单、采购订单、库存调整、移库、退货,都各有各的类型代码。配置得好,业务流程、权限、报表、GL科目各走各的路;配得懒,后面所有报表都要靠绕来绕去的公式擦屁股。
这篇文章写给刚接手 Epicor 维护的实施顾问、IT 专员和制造业车间信息化人员,目标是让你能在半天内把交易类型理清楚,并且每一步都有可复现的检查和避坑办法。
2. Epicor交易业务类型的三层落点与菜单入口
2.1 交易业务类型并不只在“库存设置”里:三层落点
先说清楚一个概念:交易业务类型不是某一个固定屏幕里的东西,而是散落在三个层面的一组维护项。它们在数据库里是各自独立的字典表,业务上却必须放在一起规划。
第一层是订单类型,覆盖销售订单、采购订单、退货申请等。订单类型决定了一张单据创建后的默认状态流、价格来源、税率逻辑、是否触发信用检查。常见误区是把销售退货直接复用常规销售订单类型。当时跑单没问题,报表阶段就翻车,退货金额和正常销售混在一张表里,财务怎么都说不清收入口径。
第二层是库存交易类型,负责物料在仓库里的每一次数量变化:收货、发料、调整、移库、报废、盘点差异。库存交易类型直接影响库存账面、成本核算和会计凭证科目。这层配置错了,短期看不出问题,月底关账时库存账和财务账对不上,往往要花两三天逐笔核对。
第三层是财务与项目维度上的交易类型,例如 GL 交易类型。这一层通常由财务顾问维护,但订单类型和库存类型指向的 GL 类别如果与它不一致,月末过账时会冒出一堆错误日志。所以,交易业务类型的规划不能只由库存或者销售模块的单人决定,要拉上财务一起对齐。
一句话概括:业务类型是“分类骨架”,维度是“骨架上的标签”。你配的类型代码越细,后面的权限、报表、审批流越好做;越粗,越只能靠 SQL 硬拆。另外,三层的类型代码是各自维护、互不共用的,同一个代码 IN-TRF 可能在库存里是调拨,在订单里可能什么都不是,千万不要跨模块共用。
2.2 找到配置入口:菜单搜索与实际屏幕字段
Epicor 的界面里有一个全局搜索框,在窗口右上角。直接输入“Transaction Type”或“交易类型”,就能列出与类型维护相关的菜单。我一般会留意列表里的具体措辞,防止点错到“类型值维护”之类的关联子界面。
销售订单类型维护在销售模块的设置目录下,库存交易类型维护在库存管理模块的设置目录下。不同版本菜单英文不一定完全一样,但搜索都能跳过去。相比靠记忆背菜单路径,我更推荐把搜索框当成主要入口,尤其是中途接手一个项目时,你不知道上个实施顾问把菜单移到了哪里。
下面是我常用的字段对照表,方便你在不同模块里快速对上各自的“类型字段”含义:
| 模块 | 维护界面常见名称 | 核心字段 | 典型用途 |
|---|---|---|---|
| 销售 | Sales Order Type Maintenance | 类型代码、描述、状态、检查信用、默认价格清单 | 区分常规销售、退货、换货 |
| 采购 | Purchase Order Type Maintenance | 类型代码、描述、状态、默认到货仓库 | 区分标准采购、供应商退货 |
| 库存 | Inventory Transaction Type Maintenance | 类型代码、方向、成本影响、激活状态 | 区分调拨、调整、报废、盘点差异 |
| 制造 | Job Type Maintenance | 类型代码、描述、计划策略 | 区分常规生产工单、返工工单 |
每个维护界面都会记录最后更新人和更新时间。上线初期我建议安排专人统一维护,不要在多人各自配置后再合并,否则代码风格一定乱,到时候光统一命名就要花掉大半天。配类型这种事,最怕的是每个人都觉得自己配的那部分没问题。
3. 新建交易业务类型:字段参数与SQL自查清单
3.1 从零新建一个库存交易类型:字段参数怎么填
这里以库存调整为例,就是盘盈盘亏、杂项收发经常用的那类。进入库存交易类型维护界面后,点新建,常见要填的字段有这么几个:
- 类型代码:全局唯一的业务简称,建议英文大写加下划线,比如 INV-ADJ。
- 描述:中文环境里写“库存调整”或“盘盈调整”,描述会影响报表显示,建议写全。
- 方向:I(入库)、O(出库)、B(双向)。一般调拨类型用双向,调整单根据业务是盘盈还是盘亏,建议拆成两个类型代码,而不是共用一个双向。
- 成本影响:调整类型通常需要影响成本,否则物料金额不会随数量变动重新计算,月底成本会错。
- 激活状态:这个字段很关键,停用后不能再用于新建单据,但已存在单据不受影响。
我一般还会在描述里写清楚使用场景,比如“盘盈调整-月度盘点专用”,避免半年后看到代码不知道当初为什么建。别嫌啰嗦,这种基础数据最怕留白。
配置完成后不要急着关界面,先做一步验证:用这个新类型在测试环境做一张调整单,确认它能出现在下拉列表里,过账后库存数量和金额的变化符合预期。字段不是填完就结束了,验证过才叫配置完成。
3.2 用SQL自查:当前实例里到底有多少交易类型“活着”
光在界面上看太慢,尤其你是中途接手。我习惯直接连数据库查看。Epicor 把库存交易类型放在 InvcTranType 这张基础表里,查询写法很简单:
-- 查询当前公司所有库存交易类型及其关键开关 SELECT TypeCode AS 类型代码, Description AS 描述, Direction AS 方向标记, -- I=入库, O=出库, B=双向 CostEffect AS 是否影响成本, -- 1=影响, 0=不影响 PermanentlyDisabled AS 是否停用, UpdatedBy AS 最近更新人 FROM InvcTranType WHERE Company = '你的公司代号' ORDER BY TypeCode;逻辑说明:这段 SQL 用 InvcTranType 表做字典直查,先按公司代号过滤,避免把测试公司的配置混进来。字段别名的中文只是为了方便你在工具里直接阅读,不影响执行。
参数说明:
- TypeCode 和 Description 是配置时的业务可见信息,绝大部分坑都出在这里不唯一。
- Direction 标记直接决定单据过账时库存是增还是减。
- CostEffect 建议对所有涉及金额变动的类型保持 1,只有单纯的物理移库可以设 0。
- PermanentlyDisabled 为 1 的类型不参与新单据选择列表,旧单据查询不受影响。
如果你看到的视图里没有这些字段,说明版本做了字段改名。打开表设计器搜 TranType 就能找到对应字段;但核心字段在主流版本里基本都保留着。这招能让你在两分钟内摸清一个环境里所有“活着”的类型,比逐个界面点开快得多。
3.3 环境之间搬交易类型:命名规范与导入导出习惯
配置交易类型最常翻车的是在测试环境配好了,上线时手工在生产环境重建。类型代码、描述、初始状态任何一处手滑,都会让后续的报表数据对不上。
我一般把这些类型当成字典数据纳入一套命名规范:
- 前缀区分模块:SO-销售、PO-采购、INV-库存、MFG-制造。
- 中间段是业务动作:STD常规、RET退货、TRF调拨、ADJ调整、OBS报废。
- 后缀或者编号区分场景,比如 INV-ADJ-01 是盘盈,INV-ADJ-02 是盘亏。
环境迁移时,常见做法是使用 Epicor 自带的数据导入导出工具,导出基础数据表再导入目标环境。除了字典表本身,还要一起导出它关联的权限分配和默认值设置。很多项目只导了类型表,忘了权限,上线后普通员工根本看不到新类型。
迁移后一定要在测试环境做一遍“新建一张退货订单并过账”的完整动作,确认类型状态下拉里能看到、过账不报错,再去生产环境操作。这个验证流程看起来多花十分钟,实际能省下上线后半夜翻日志的时间。
4. 交易类型在销售与库存流程里的联动配置
4.1 销售场景:同一个客户退货,为什么必须单独建一个订单类型
很多公司上线初期只建了一个“标准销售订单”类型,退货时也用它。短期看单子能跑通,长期看两个后果:月度销售报表里退货金额混在收入里;财务在收入确认时还要手工挑负数行。
其实 Epicor 允许你为退货单独建一个订单类型。在销售订单类型维护里新增 SO-RET 类型,然后把该类型标记为“退货”业务用途,并指定收货仓库为退货待检区。这样退货单创建时自动落到待检仓库,而不是回到成品主仓库,后续质检流程也会顺着这套逻辑走。
配置这个类型时,要一并考虑信用检查和审批流。退货类型一般不需要重新触发信用额度检查,否则一张退货单因为客户额度不足被卡住,业务端会觉得莫名其妙。审批方面,退货类型通常需要额外的审批节点,我习惯在类型代码上绑定审批模板,而不是让用户手工选择审批人。
这里有一个边界:订单类型不是越多越好。如果每种促销、每个渠道都建一个类型,权限和报表维度会失控。我见过一家公司建了四十多个销售订单类型,结果日常用的只有五个,其余全是历史遗留。一般按“业务动作的种类”来建,不按“客户名称或价格方案”来建。
4.2 库存场景:调拨类型的方向与成本影响,最容易埋雷
库存交易类型里,调拨类一般设置方向为 B(双向),表示一进一出同时发生。这个设置在数据库层面没什么问题,但实际业务中如果仓库人员把类型用错了场景,比如出库单选择了双向类型,系统可能不会报错,库存却会出现一端未更新。
我习惯在类型维护界面把“成本影响”和“是否允许负库存”这两个开关一起核对。库存调整配不好,最常见结果就是月底负库存数量一堆、金额出现大额红字,账龄分析完全没法看。
这里给出一个我在项目中用过的自查清单:
- 盘盈调整:方向 I,影响成本,允许负库存=否
- 盘亏调整:方向 O,影响成本,允许负库存=否
- 库间调拨:方向 B,影响成本=是,但建议通过调拨单而非直接类型操作
- 报废出库:方向 O,影响成本=是
- 借用出库:方向 O,影响成本=否
按这个清单在测试环境过一遍每个类型的收发货,再看库存台账是否与预期一致,能排除大多数因为类型配置导致的库存差异。别忽略“是否允许负库存”这个开关,很多库存差异问题,源头就是仓库人员选错了类型,系统放行了负库存,账面和实物从此分道扬镳。
4.3 交易类型与审批流绑定:让类型代码真正管住流程
类型代码如果只在报表里起作用,那它的价值就少了一大半。真正值得投入的是把类型作为审批流和权限的触发条件。例如,退货类型 SO-RET 自动走到质量确认环节,报废类型 INV-OBS 需要经理审批,库间调拨类型 INV-TRF 允许仓管员直接过账。
配置方法一般是在审批流模板里设置条件:当订单类型等于 SO-RET 时进入特定审批步骤。这样新员工操作时不用记“我应该找谁签”,系统会自动把任务推到审批人那里。类型代码变成了流程路由,比靠人传话可靠得多。
5. 交易业务类型常见问题排查与避坑记录
5.1 类型代码删除时提示“已被引用”
现象:在类型维护界面删除一个库存交易类型,系统提示该类型正在被单据引用,无法删除。
原因:所有已过账或未过账的库存交易行里,都存着当时的类型代码。删除相当于让历史单据失去分类依据,所以系统会拒绝。
解决:不要试图删除,把激活状态改为“停用”。停用后新建单据不会再选择它,旧单据仍然按原类型出现在历史报表里。同理,所有字典类交易代码都应遵循“停用不删除”的原则。这个原则要写进项目交接文档里,否则后来者总有人想清理数据直接删。
5.2 新建的类型在单据下拉框里看不到
现象:明明在类型维护界面新建并保存了 INV-ADJ-01,但去物料调整单的类型下拉框里找不到。
原因:单据界面的类型列表可能被“是否有效”过滤,也可能你建的类型是给另一个模块用的。比如在库存交易类型里建了销售单类型,销售订单类型下拉框自然看不到。
解决:先回到维护界面确认该类型的激活状态;再确认建的到底属于订单类型还是库存交易类型;最后重新打开单据界面,因为有些下拉框只在界面打开时加载一次,你新建类型后不关闭界面,它就永远不刷新。
5.3 同一类型用于采购退货和销售退货,库存方向搞反
现象:采购退货与销售退货同时使用同一个类型代码,一段时间后库存账面负值增多,采购和销售报表里的退货数字对不上。
原因:采购退货通常是“红字收货”,库存方向是出;销售退货是“红字发货”,库存方向是入。共用一个类型后,系统无法区分业务含义,方向标记只能满足其中一个。
解决:拆成两个类型代码,一个是采购退货,一个是客户退货,分别配置方向。这个案例里还要注意,不要因为字段名一样就共用,字段一样不等于业务一样。
5.4 停用交易类型后,历史报表的数据“消失”了
现象:停用一个旧的报废类型后,当月报废明细报表里该类型的历史记录不见了。
原因:很多报表默认只展示“当前可用类型”,停用类型被过滤掉,但数据库里单据行还存在。
解决:报表条件里放开类型过滤,或者给该类型补充说明后再在报表里做映射。停用前先查一遍哪些报表引用了该类型,避免停用后报表口径变化。这是非常常见的“翻车”场景,实施顾问换人后尤其容易踩。
5.5 保存类型配置时提示没有自定义字段权限
现象:保存库存调整类型的自定义字段时,系统提示当前用户没有自定义字段维护权限,导致整个类型保存失败。
原因:Epicor 把自定义字段权限和使用者权限分开控制。实施阶段常用管理员账号操作,上线后换成普通账号就报权限不足。
解决:把交易类型维护菜单及自定义字段维护权限授予负责该模块的同事。注意不要顺手把生产环境的停用启用权限授得太宽。类型是全局基础数据,建议只给两三个人专人权限,其他人按需只读。权限收得紧一点,能挡住一半以上的误操作。
6. 用一张视图验证所有交易类型配置是否生效
想要确认整套交易业务类型没配歪,我不建议打开十几个界面逐个看,而是用 Epicor 的 BAQ(Business Activity Query)直接做一张汇总表,验证三件事:每个类型是不是真的被单据用到、各类型单据量分布是否符合业务直觉、有没有类型被建了但半年都没有使用记录。
以库存交易为例,可以用 SQL 直接查交易历史表:
-- 统计近12个月各个库存交易类型的使用笔数 SELECT t.TypeCode AS 类型代码, t.Description AS 类型描述, COUNT(tr.TransactionNum) AS 使用笔数, MAX(tr.TransDate) AS 最近使用日期 FROM InvcTranType t LEFT JOIN InvcTran tr ON tr.Company = t.Company AND tr.TypeCode = t.TypeCode AND tr.TransDate >= DATEADD(MONTH, -12, GETDATE()) WHERE t.Company = '你的公司代号' GROUP BY t.TypeCode, t.Description ORDER BY COUNT(tr.TransactionNum) DESC;逻辑说明:用交易类型字典表做左表,把近12个月的库存交易流水挂上去。没有使用记录的类型会显示 0 笔,方便你清理无人问津的类型。
参数说明:
- 统计笔数用的字段在不同版本里可能叫 TransactionNum 或 TranNum,如果没有就换成单号字段。
- 时间窗口按你所在财务年调整,季度检查建议改成 DATEADD(QUARTER, -1, GETDATE())。
- 左连接而不是内连接,是因为我们要找“建了但没用过”的类型,内连接会漏掉这类垃圾数据。
排查完这一步,我通常还会单独验证一遍 GL 过账方向:挑一张最近的真实退货单,在过账日志里核对该类型有没有把库存和收入的科目方向走对。这个习惯帮我抓出过三次“方向标记没变但成本开关错了”的问题。交易类型这个事,看着是几个下拉框的配置,实际上牵扯着订单、库存、成本、GL 一整条链。希望这套从字段到 SQL 的检查方法,能帮你在 Epicor 交易业务类型上少走弯路;遇到库存或报表对不上时,起码知道第一步该往哪儿看。希望帮到你。
本文还有配套的精品资源,点击获取